both settle
This commit is contained in:
parent
b8bfd5d1a7
commit
808e87b2f9
@ -14,8 +14,8 @@ android {
|
||||
applicationId "com.utsmm.kbz"
|
||||
minSdk 24
|
||||
targetSdk 33
|
||||
versionCode 41
|
||||
versionName "2.36"
|
||||
versionCode 47
|
||||
versionName "2.38"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
|
||||
@ -22,6 +22,7 @@ import com.utsmyanmar.paylibs.model.TradeData;
|
||||
import com.utsmyanmar.paylibs.print.printx.PrintXStatus;
|
||||
import com.utsmyanmar.paylibs.sign_on.EchoTestProcess;
|
||||
import com.utsmyanmar.paylibs.sign_on.SignOnListener;
|
||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||
import com.utsmyanmar.paylibs.utils.POSUtil;
|
||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||
import com.utsmyanmar.paylibs.utils.enums.TransMenu;
|
||||
@ -31,10 +32,12 @@ import com.utsmyanmar.paylibs.utils.params.Params;
|
||||
import com.utsmm.kbz.BR;
|
||||
import com.utsmm.kbz.R;
|
||||
import com.utsmm.kbz.config.Constants;
|
||||
import com.utsmyanmar.paylibs.model.QRSettleData;
|
||||
import com.utsmyanmar.paylibs.model.SettleData;
|
||||
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
||||
import com.utsmm.kbz.util.ecr.CoreUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
@ -64,6 +67,15 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
private final CurrencyBucket mmkBucket = new CurrencyBucket();
|
||||
private final CurrencyBucket usdBucket = new CurrencyBucket();
|
||||
|
||||
private final ArrayList<PayDetail> qrTransactionsList = new ArrayList<>();
|
||||
private final ArrayList<PayDetail> qrTransListAll = new ArrayList<>();
|
||||
private int qrSaleCount = 0;
|
||||
private long qrSaleAmount = 0;
|
||||
private int qrRefundCount = 0;
|
||||
private long qrRefundAmount = 0;
|
||||
private int qrCount = 0;
|
||||
private long qrTotalAmount = 0;
|
||||
|
||||
@Override
|
||||
protected void initViewModel() {
|
||||
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
|
||||
@ -278,6 +290,45 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
}
|
||||
});
|
||||
|
||||
managementViewModel.getTransactionHistory().observe(getViewLifecycleOwner(), payDetailList -> {
|
||||
if (payDetailList != null) {
|
||||
qrTransactionsList.clear();
|
||||
qrTransListAll.clear();
|
||||
qrSaleCount = 0;
|
||||
qrSaleAmount = 0;
|
||||
qrRefundCount = 0;
|
||||
qrRefundAmount = 0;
|
||||
qrTotalAmount = 0;
|
||||
qrCount = 0;
|
||||
|
||||
try {
|
||||
for (PayDetail payDetail : payDetailList) {
|
||||
if ((payDetail.getTransactionType() == TransactionsType.MMQR.value
|
||||
|| payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value)
|
||||
&& payDetail.getQrTransStatus() == 1) {
|
||||
|
||||
if (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
qrRefundCount++;
|
||||
qrRefundAmount += payDetail.getAmount();
|
||||
qrTotalAmount -= payDetail.getAmount();
|
||||
} else {
|
||||
qrSaleCount++;
|
||||
qrSaleAmount += payDetail.getAmount();
|
||||
qrTotalAmount += payDetail.getAmount();
|
||||
}
|
||||
qrTransactionsList.add(payDetail);
|
||||
qrCount++;
|
||||
} else if (payDetail.getTransactionType() == TransactionsType.MMQR.value
|
||||
|| payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
qrTransListAll.add(payDetail);
|
||||
}
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
LogUtil.e("SettlementTransactionFragment", "QR: Database cursor error - " + e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
settlementViewModel.getDeleteTrans().observe(getViewLifecycleOwner(), new Observer<List<PayDetail>>() {
|
||||
@Override
|
||||
public void onChanged(List<PayDetail> payDetails) {
|
||||
@ -538,6 +589,37 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
|
||||
EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue());
|
||||
|
||||
sharedViewModel.pushReceipt(request);
|
||||
settleQr();
|
||||
}
|
||||
|
||||
private void settleQr() {
|
||||
if (qrTransactionsList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
TradeData tradeData = Params.newTrade(false);
|
||||
PayDetail payDetail = tradeData.getPayDetail();
|
||||
SettleData settleData = new SettleData(qrSaleCount, qrSaleAmount, 0, 0L, qrRefundCount, qrRefundAmount, 0, 0L);
|
||||
payDetail.setSettleDataObj(settleData);
|
||||
payDetail.setTransactionType(TransactionsType.MMQR_SETTLEMENT.value);
|
||||
payDetail.setTransType(TransactionsType.MMQR_SETTLEMENT.name);
|
||||
payDetail.setAmount(qrTotalAmount);
|
||||
payDetail.setTradeAnswerCode("000");
|
||||
payDetail.setBatchNo(SystemParamsOperation.getInstance().getCurrentBatchNum());
|
||||
payDetail.setQrSettleData(QRSettleData.convertFromPayDetail(qrTransactionsList));
|
||||
|
||||
if (sharedViewModel.getTransMenu().getValue() != TransMenu.LAST_SETTLEMENT) {
|
||||
sharedViewModel.insertPayDetail(payDetail);
|
||||
}
|
||||
|
||||
sharedViewModel.payDetails.setValue(qrTransactionsList);
|
||||
|
||||
for (PayDetail pay : qrTransactionsList) {
|
||||
settlementViewModel.deletePayDetail(pay);
|
||||
}
|
||||
for (PayDetail pay : qrTransListAll) {
|
||||
settlementViewModel.deletePayDetail(pay);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -77,6 +77,10 @@ public class SettlementViewModel extends ViewModel {
|
||||
public SingleLiveEvent<Integer> sale_count = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<Long> sale_amount = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> sale_breakdown = new SingleLiveEvent<>();
|
||||
//qr
|
||||
public SingleLiveEvent<Integer> qr_sale_count = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<Long> qr_sale_amount = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> qr_sale_breakdown = new SingleLiveEvent<>();
|
||||
|
||||
public SingleLiveEvent<Integer> void_count = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<Long> void_amount = new SingleLiveEvent<>();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user