previous qr showing in settlement fixed

This commit is contained in:
moon 2026-09-02 22:50:26 +06:30
parent e51d658733
commit 91207f1051
10 changed files with 74 additions and 13 deletions

View File

@ -102,3 +102,6 @@ card
- fix for invoice number and trance number place mismatch in reprint any transaction screen - fix for invoice number and trance number place mismatch in reprint any transaction screen
- secondary host show Tid Mid - secondary host show Tid Mid
- settlement fixed for duel currency - settlement fixed for duel currency
## [2.43]

View File

@ -39,8 +39,8 @@ android {
applicationId "com.utsmm.kbz.uat" applicationId "com.utsmm.kbz.uat"
versionNameSuffix "-uat" versionNameSuffix "-uat"
resValue "string", "app_name", "KBZ-UAT" resValue "string", "app_name", "KBZ-UAT"
versionCode 47 versionCode 48
versionName "2.42" versionName "2.43"
} }
prod { prod {

View File

@ -72,6 +72,10 @@ public class ManagementViewModel extends ViewModel {
return repository.getTransactionHistory(); return repository.getTransactionHistory();
} }
public LiveData<List<PayDetail>> getUnsettledQRTransactions(){
return repository.getUnsettledQRTransactions();
}
public LiveData<List<PayDetail>> getLastSettlement(String voucherNo){ public LiveData<List<PayDetail>> getLastSettlement(String voucherNo){
return repository.getLastSettlement(voucherNo); return repository.getLastSettlement(voucherNo);
} }

View File

@ -158,7 +158,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
} }
private void observeQRTransactions() { private void observeQRTransactions() {
managementViewModel.getTransactionHistory().observe(getViewLifecycleOwner(), payDetailList -> { managementViewModel.getUnsettledQRTransactions().observe(getViewLifecycleOwner(), payDetailList -> {
if (payDetailList != null) { if (payDetailList != null) {
qrTransactionsList.clear(); qrTransactionsList.clear();
qrTransListAll.clear(); qrTransListAll.clear();
@ -314,6 +314,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
} }
private void processData() { private void processData() {
settlementViewModel.markAllUnsettledQRTransactionsSettled();
TradeData tradeData = Params.newTrade(false); TradeData tradeData = Params.newTrade(false);
PayDetail payDetail = tradeData.getPayDetail(); PayDetail payDetail = tradeData.getPayDetail();
payDetail.setSettleDataObj(settleData); payDetail.setSettleDataObj(settleData);
@ -335,11 +336,11 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
sharedViewModel.payDetail.setValue(payDetail); sharedViewModel.payDetail.setValue(payDetail);
for (PayDetail pay : qrTransactionsList) { for (PayDetail pay : qrTransactionsList) {
settlementViewModel.deletePayDetail(pay); settlementViewModel.markQRTransactionSettled(pay);
} }
for (PayDetail pay : qrTransListAll) { for (PayDetail pay : qrTransListAll) {
settlementViewModel.deletePayDetail(pay); settlementViewModel.markQRTransactionSettled(pay);
} }
} }
private void updateData() { private void updateData() {

View File

@ -308,7 +308,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
} }
}); });
managementViewModel.getTransactionHistory().observe(getViewLifecycleOwner(), payDetailList -> { managementViewModel.getUnsettledQRTransactions().observe(getViewLifecycleOwner(), payDetailList -> {
if (payDetailList != null) { if (payDetailList != null) {
qrTransactionsList.clear(); qrTransactionsList.clear();
qrTransListAll.clear(); qrTransListAll.clear();
@ -350,6 +350,11 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
settlementViewModel.qr_refund_count.setValue(qrRefundCount); settlementViewModel.qr_refund_count.setValue(qrRefundCount);
settlementViewModel.qr_refund_amount.setValue(qrRefundAmount); settlementViewModel.qr_refund_amount.setValue(qrRefundAmount);
settlementViewModel.qr_section_visibility.setValue(qrCount > 0 ? 0 : 8); settlementViewModel.qr_section_visibility.setValue(qrCount > 0 ? 0 : 8);
if (qrCount > 0) {
settlementViewModel.isNoData.setValue(false);
} else if (cardTransactionsList.isEmpty() && settlementViewModel.deleteTrans.isEmpty()) {
settlementViewModel.isNoData.setValue(true);
}
} }
}); });
@ -774,6 +779,7 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
} }
private void settleQr() { private void settleQr() {
settlementViewModel.markAllUnsettledQRTransactionsSettled();
if (qrTransactionsList.isEmpty()) { if (qrTransactionsList.isEmpty()) {
return; return;
} }
@ -796,10 +802,10 @@ public class SettlementTransactionFragment extends DataBindingFragment implement
sharedViewModel.payDetails.setValue(new ArrayList<>(qrTransactionsList)); sharedViewModel.payDetails.setValue(new ArrayList<>(qrTransactionsList));
for (PayDetail pay : qrTransactionsList) { for (PayDetail pay : qrTransactionsList) {
settlementViewModel.deletePayDetail(pay); settlementViewModel.markQRTransactionSettled(pay);
} }
for (PayDetail pay : qrTransListAll) { for (PayDetail pay : qrTransListAll) {
settlementViewModel.deletePayDetail(pay); settlementViewModel.markQRTransactionSettled(pay);
} }
} }

View File

@ -300,6 +300,14 @@ public class SettlementViewModel extends ViewModel {
repository.deletePayDetail(payDetail); repository.deletePayDetail(payDetail);
} }
public void markQRTransactionSettled(PayDetail payDetail){
repository.markQRTransactionSettled(payDetail);
}
public void markAllUnsettledQRTransactionsSettled(){
repository.markAllUnsettledQRTransactionsSettled();
}
private void updateDB() { private void updateDB() {
if(payDetails != null && payDetails.size() > 0) { if(payDetails != null && payDetails.size() > 0) {

View File

@ -4,6 +4,8 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" />
<import type="com.utsmyanmar.paylibs.utils.POSUtil" /> <import type="com.utsmyanmar.paylibs.utils.POSUtil" />
<variable <variable
@ -44,7 +46,8 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"
android:visibility="@{settleViewModel.isNoData ? View.GONE : View.VISIBLE}">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
@ -70,7 +73,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:background="@color/colorLightGray" /> android:background="@color/colorLightGray"
android:visibility="@{settleViewModel.isNoData ? View.GONE : View.VISIBLE}" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -156,6 +160,16 @@
tools:text="1,000.00" /> tools:text="1,000.00" />
</LinearLayout> </LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:gravity="center"
android:text="No Transaction Exist"
android:textColor="@color/black"
android:textSize="17sp"
android:visibility="@{settleViewModel.isNoData ? View.VISIBLE : View.GONE}" />
<LinearLayout <LinearLayout
android:id="@+id/linearLayout3" android:id="@+id/linearLayout3"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -166,7 +180,7 @@
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:visibility="@{settleViewModel.btmLayout}" android:visibility="@{settleViewModel.isNoData ? View.GONE : settleViewModel.btmLayout}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">

View File

@ -24,7 +24,7 @@ public final class TerminalKeyUtil {
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("B4D74774CC846CAFF6D1AAAC2EB79CFF".toUpperCase()); // KBZ UAT // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("B4D74774CC846CAFF6D1AAAC2EB79CFF".toUpperCase()); // KBZ UAT
// private static final byte[] main_key_usd_data = ByteUtil.hexStr2Bytes("3f4bcac6cc559ab12bbbc5a51118f3f5".toUpperCase()); // KBZ UAT // private static final byte[] main_key_usd_data = ByteUtil.hexStr2Bytes("3f4bcac6cc559ab12bbbc5a51118f3f5".toUpperCase()); // KBZ UAT
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("b4d74774cc846caff6d1aaac2eb79cff".toUpperCase()); private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("3F4BCAC6CC559AB12BBBC5A51118F3F5".toUpperCase());
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
private static final byte[] work_key_data = new byte[16]; private static final byte[] work_key_data = new byte[16];
public static void initNexKey() { public static void initNexKey() {

View File

@ -105,6 +105,17 @@ public interface PayDetailDao {
LiveData<List<PayDetail>> getAllReversalTransactionsLive(); LiveData<List<PayDetail>> getAllReversalTransactionsLive();
// @Query("SELECT * FROM paydetail WHERE transactionType != 10 ORDER BY PID DESC") // @Query("SELECT * FROM paydetail WHERE transactionType != 10 ORDER BY PID DESC")
@Query("SELECT * FROM paydetail WHERE isSettle = 0 "
+ "AND transactionType IN (20, 34) ORDER BY PID DESC")
LiveData<List<PayDetail>> getUnsettledQRTransactions();
@Query("UPDATE paydetail SET isSettle = 1 WHERE PID = :pid")
void markQRTransactionSettled(Long pid);
@Query("UPDATE paydetail SET isSettle = 1 "
+ "WHERE isSettle = 0 AND transactionType IN (20, 34)")
void markAllUnsettledQRTransactionsSettled();
@Query("SELECT * FROM paydetail ORDER BY PID DESC") @Query("SELECT * FROM paydetail ORDER BY PID DESC")
LiveData<List<PayDetail>> getTransactionHistory(); LiveData<List<PayDetail>> getTransactionHistory();

View File

@ -255,6 +255,10 @@ public class Repository {
public LiveData<List<PayDetail>> getTransactionHistory(){ return payDetailDao.getTransactionHistory();} public LiveData<List<PayDetail>> getTransactionHistory(){ return payDetailDao.getTransactionHistory();}
public LiveData<List<PayDetail>> getUnsettledQRTransactions(){
return payDetailDao.getUnsettledQRTransactions();
}
public LiveData<List<PayDetail>> getLastSettlement(String voucherNo) { return payDetailDao.getLastSettlement(voucherNo);} public LiveData<List<PayDetail>> getLastSettlement(String voucherNo) { return payDetailDao.getLastSettlement(voucherNo);}
public LiveData<List<PayDetail>> getLastSettlementQR(String voucherNo) { return payDetailDao.getLastSettlementQR(voucherNo);} public LiveData<List<PayDetail>> getLastSettlementQR(String voucherNo) { return payDetailDao.getLastSettlementQR(voucherNo);}
@ -365,6 +369,16 @@ public class Repository {
payDetailDao.deletePayDetail(payDetail); payDetailDao.deletePayDetail(payDetail);
} }
public void markQRTransactionSettled(PayDetail payDetail) {
if (payDetail != null && payDetail.getPID() != null) {
payDetailDao.markQRTransactionSettled(payDetail.getPID());
}
}
public void markAllUnsettledQRTransactionsSettled() {
payDetailDao.markAllUnsettledQRTransactionsSettled();
}
public LiveData<List<PayDetail>> getAllTrans() { return payDetailDao.getAllTrans(); } public LiveData<List<PayDetail>> getAllTrans() { return payDetailDao.getAllTrans(); }
public LiveData<List<PayDetail>> getAllQRHistory(){ return payDetailDao.getAllQRHistory();} public LiveData<List<PayDetail>> getAllQRHistory(){ return payDetailDao.getAllQRHistory();}