both settle

This commit is contained in:
moon 2026-07-09 15:04:49 +06:30
parent b8bfd5d1a7
commit 808e87b2f9
3 changed files with 88 additions and 2 deletions

View File

@ -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"
}

View File

@ -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

View File

@ -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<>();