diff --git a/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java b/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java index eda454c..dca9384 100644 --- a/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java +++ b/app/src/main/java/com/utsmm/kbz/service/AutoSettleService.java @@ -39,6 +39,7 @@ import com.utsmyanmar.paylibs.isobuilder.builderx.ISOMsgX; import com.utsmyanmar.paylibs.isobuilder.builderx.ISOVersion; import com.utsmyanmar.paylibs.model.MsgField; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.model.TradeData; import com.utsmyanmar.paylibs.network.ISOCallback; @@ -388,7 +389,7 @@ public class AutoSettleService extends Service { payDetail.setAmount(totalAmount); payDetail.setTradeAnswerCode("000"); payDetail.setBatchNo(SystemParamsOperation.getInstance().getCurrentBatchNum()); - + payDetail.setQrSettleData(QRSettleData.convertFromPayDetail(qrTransactionsList)); // Insert QR settlement record repository.insertPayDetail(payDetail); @@ -404,7 +405,7 @@ public class AutoSettleService extends Service { // Push e-receipt data using repository directly try { - EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail, qrTransactionsList); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail, QRSettleData.convertFromPayDetail(qrTransactionsList)); sendEReceipt(request); LogUtil.d(TAG, "QR Settlement e-receipt data prepared and sent"); } catch (Exception e) { diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java index 7c54c2f..03b9b70 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java @@ -17,6 +17,7 @@ import com.utsmyanmar.baselib.util.TerminalUtil; import com.utsmyanmar.ecr.data.TransType; import com.utsmyanmar.ecr.data.model.Transactions; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.print.printx.PrintXReceipt; import com.utsmyanmar.paylibs.print.printx.PrintXStatus; import com.utsmyanmar.paylibs.system.SingleLiveEvent; @@ -418,7 +419,7 @@ public class SharedViewModel extends ViewModel { if(payDetail.getValue() == null && payDetails.getValue() == null) return; - PrintXReceipt.getInstance().printQRSettlementReport(payDetail.getValue(),payDetails.getValue(), printXStatus); + PrintXReceipt.getInstance().printQRSettlementReport(payDetail.getValue(), QRSettleData.convertFromPayDetail(payDetails.getValue()), printXStatus); } diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java index d46fd9d..bae9bad 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/ReprintReceiptFragment.java @@ -13,6 +13,7 @@ import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.util.DataBindingConfig; import com.utsmyanmar.baselib.util.DialogCallback; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.print.PrintHelper; import com.utsmyanmar.paylibs.print.PrintReceipt; import com.utsmyanmar.paylibs.print.printx.PrintXReceipt; @@ -26,6 +27,7 @@ import com.utsmm.kbz.ui.core_viewmodel.TransProcessViewModel; import java.util.List; import com.utsmyanmar.paylibs.utils.LogUtil; +import com.utsmyanmar.paylibs.utils.enums.HostType; public class ReprintReceiptFragment extends DataBindingFragment { @@ -108,7 +110,7 @@ public class ReprintReceiptFragment extends DataBindingFragment { private void updateUIPrintReceiptFailure(PayDetail payDetail) { sharedViewModel.printReceiptMsg.postValue(getString(R.string.txt_printing_settlement_report_failure)); sharedViewModel.reprintBtnLayout.postValue(0); - ReprintReceiptFragment.this.payDetail = payDetail; +// ReprintReceiptFragment.this.payDetail = payDetail; } private void checkPaperExists(PayDetail payDetail) { @@ -142,42 +144,56 @@ public class ReprintReceiptFragment extends DataBindingFragment { } private void observeLastSettlement() { - managementViewModel.getLastSettlement(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), new Observer>() { - @Override - public void onChanged(List payDetails) { - if (payDetails != null) { - if (payDetails.size() != 0) { - PayDetail payDetail = payDetails.get(payDetails.size() - 1); - payDetail.setTransType( payDetail.getTransType()+"(REPRINT)"); - checkPaperExists(payDetail); - - } else { - showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); - navigateMainScreen(); - } - - } - } - }); + payDetail = sharedViewModel.payDetail.getValue(); + payDetail.setTransType( payDetail.getTransType()+"(REPRINT)"); + checkPaperExists(payDetail); +// managementViewModel.payDetail.observe(getViewLifecycleOwner(), new Observer() { +// @Override +// public void onChanged(PayDetail pay) { +// if (pay != null) { +// +// payDetail = pay; +// +// +// +// +// +// } else { +// showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); +// navigateMainScreen(); +// } +// } +// }); } private void printReceipt(PayDetail payDetail) { - PrintXReceipt.getInstance().printSmileSettlementReport(payDetail, new PrintXStatus() { - @Override - public void onSuccess() { - delayFunctionCall(ReprintReceiptFragment.this::navigateMainScreen); - } - @Override - public void onFailure() { - updateUIPrintReceiptFailure(payDetail); + if(sharedViewModel.hostType.getValue() == HostType.QR) { + + PrintXReceipt.getInstance().printQRSettlementReport(payDetail, payDetail.getQrSettleData(), printXStatus); + + } else { + PrintXReceipt.getInstance().printSmileSettlementReport(payDetail, printXStatus); + } + - checkPaperExists(payDetail); - } - }); } + private PrintXStatus printXStatus = new PrintXStatus() { + @Override + public void onSuccess() { + delayFunctionCall(ReprintReceiptFragment.this::navigateMainScreen); + } + + @Override + public void onFailure() { + updateUIPrintReceiptFailure(payDetail); + +// checkPaperExists(payDetail); + } + }; + @SuppressWarnings("ConstantConditions") private void navigateMainScreen() { diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java index 0fdda3c..6ee3b32 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java @@ -174,7 +174,7 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi } private void checkQRButtonVisibility() { - if(sharedViewModel.getTransMenu().getValue() == TransMenu.VOID || sharedViewModel.getTransMenu().getValue() == TransMenu.PRE_AUTH_COMPLETE_VOID || sharedViewModel.getTransMenu().getValue() == TransMenu.REVERSAL || sharedViewModel.getTransMenu().getValue() == TransMenu.PRE_AUTH_FULL_VOID || sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) { + if(sharedViewModel.getTransMenu().getValue() == TransMenu.VOID || sharedViewModel.getTransMenu().getValue() == TransMenu.PRE_AUTH_COMPLETE_VOID || sharedViewModel.getTransMenu().getValue() == TransMenu.REVERSAL || sharedViewModel.getTransMenu().getValue() == TransMenu.PRE_AUTH_FULL_VOID ) { sharedViewModel.qrPayVisibility.setValue(8); } else { sharedViewModel.qrPayVisibility.setValue(0); @@ -272,7 +272,19 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi if (payDetails != null) { if (!payDetails.isEmpty()) { managementViewModel.payDetails.setValue(payDetails); - routeId = R.id.action_selectHostFragment_to_settlementTransactionFragment; + + PayDetail payDetail = payDetails.get(payDetails.size() - 1); + + if(sharedViewModel.hostType.getValue() == HostType.QR && payDetail.getTransactionType() == TransactionsType.MMQR_SETTLEMENT.value) { + routeId = R.id.action_selectHostFragment_to_QRSettlementTransactionFragment; + } else if(sharedViewModel.hostType.getValue() != HostType.MPU && payDetail.getTransactionType() == TransactionsType.SETTLEMENT.value) { + routeId = R.id.action_selectHostFragment_to_settlementTransactionFragment; + } else { + showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); + routeId = R.id.action_selectHostFragment_to_nav_main; + } + + } else { showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); routeId = R.id.action_selectHostFragment_to_nav_main; diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java index 202a44c..a54223d 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/QRSettlementTransactionFragment.java @@ -13,6 +13,7 @@ import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; import com.utsmyanmar.baselib.util.DataBindingConfig; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.model.TradeData; import com.utsmyanmar.paylibs.utils.LogUtil; @@ -205,43 +206,46 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme private void observeQRLastSettlementTransactions() { List payDetailList = managementViewModel.payDetails.getValue(); if( payDetailList != null) { - qrTransactionsList.clear(); - qrTransListAll.clear(); + PayDetail payDetail = payDetailList.get(payDetailList.size() - 1); + + int qrSaleCount = 0; + long qrSaleAmount = 0; + int qrRefundCount = 0; + long qrRefundAmount = 0; + count = 0; totalAmount = 0; - try { - for (PayDetail payDetail : payDetailList) { - // Filter for QR transactions only - if ((payDetail.getTransactionType() == TransactionsType.MMQR.value - || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) - && payDetail.getQrTransStatus() == 1 - && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) { + SettleData settleData = payDetail.getSettleDataObj(); + qrSaleCount = settleData.getSaleCount(); + qrSaleAmount = settleData.getSaleAmount(); - boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value; - qrTransactionsList.add(payDetail); - count++; - if (isNeedMinusSign) { - totalAmount -= payDetail.getAmount(); - } else { - totalAmount += payDetail.getAmount(); - } - } - } - } catch (IllegalStateException e) { - LogUtil.e(TAG,"QRSettlement : Database cursor error in last settlement - likely due to large data size:"+ e); - showEmptyDataView(); - settlementViewModel.isNoData.setValue(true); - return; - } + qrRefundAmount = settleData.getRefundAmount(); + qrRefundCount = settleData.getRefundCount(); - if (qrTransactionsList.isEmpty()) { - showEmptyDataView(); - settlementViewModel.isNoData.setValue(true); - } else { - showDataView(); - settlementViewModel.isNoData.setValue(false); - } + totalAmount = qrSaleAmount - qrRefundAmount; + count = qrSaleCount + qrRefundCount; + + settlementViewModel.sale_count.setValue(qrSaleCount); + settlementViewModel.sale_amount.setValue(qrSaleAmount); + settlementViewModel.refund_count.setValue(qrRefundCount); + settlementViewModel.refund_amount.setValue(qrRefundAmount); + + managementViewModel.totalAmountDR.setValue(totalAmount); + managementViewModel.trnxCountDR.setValue(String.valueOf(count)); + + sharedViewModel.setAmount(POSUtil.getInstance().getDecimalAmountSeparatorFormat(totalAmount)); + sharedViewModel.payDetail.setValue(payDetail); + + showDataView(); + settlementViewModel.isNoData.setValue(false); +// if (qrTransactionsList.isEmpty()) { +// showEmptyDataView(); +// settlementViewModel.isNoData.setValue(true); +// } else { +// showDataView(); +// settlementViewModel.isNoData.setValue(false); +// } } else { showEmptyDataView(); @@ -310,6 +314,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme payDetail.setAmount(totalAmount); payDetail.setTradeAnswerCode("000"); payDetail.setBatchNo(SystemParamsOperation.getInstance().getCurrentBatchNum()); + payDetail.setQrSettleData(QRSettleData.convertFromPayDetail(qrTransactionsList)); if(sharedViewModel.getTransMenu().getValue() != TransMenu.LAST_SETTLEMENT) { sharedViewModel.insertPayDetail(payDetail); @@ -331,7 +336,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme } private void updateData() { // EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue()); - EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue(), qrTransactionsList); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue(), QRSettleData.convertFromPayDetail(qrTransactionsList)); sharedViewModel.pushReceipt(request); } diff --git a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java index 53d72fa..c7d43c9 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/settlement/SettlementTransactionFragment.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import com.utsmm.kbz.ui.management.ManagementViewModel; import com.utsmm.kbz.util.EReceiptUtil; import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; @@ -39,6 +40,8 @@ public class SettlementTransactionFragment extends DataBindingFragment implement private SettlementViewModel settlementViewModel; private SharedViewModel sharedViewModel; + private ManagementViewModel managementViewModel; + private int routeId; int saleCount = 0; @@ -54,12 +57,14 @@ public class SettlementTransactionFragment extends DataBindingFragment implement protected void initViewModel() { settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class); sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class); + managementViewModel = getFragmentScopeViewModel(ManagementViewModel.class); } @Override protected DataBindingConfig getDataBindingConfig() { return new DataBindingConfig(R.layout.fragment_view_batch_screen, BR.settleViewModel,settlementViewModel) .addBindingParam(BR.sharedViewModel,sharedViewModel) + .addBindingParam(BR.managementViewModel,managementViewModel) .addBindingParam(BR.click,new ClickEvent()); } @@ -157,6 +162,9 @@ public class SettlementTransactionFragment extends DataBindingFragment implement setSettlementViewModelData(saleCount, saleAmount, preCount, preAmount, refundCount, refundAmount, caCount, caAmount); settlementViewModel.setPayDetails(payDetails); + managementViewModel.payDetail.setValue(payDetail); + + } } else { diff --git a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java index 7ede37d..49f329c 100644 --- a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java @@ -6,6 +6,7 @@ import com.utsmm.kbz.util.tms.TMSUtil; import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; import com.utsmyanmar.baselib.network.model.e_receipt.Transaction; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.system.BaseErrorCode; import com.utsmyanmar.paylibs.utils.POSUtil; @@ -228,7 +229,7 @@ public class EReceiptUtil { return request; } - public EReceiptRequest generateQRSettlement(PayDetail payDetail, List transactions) { + public EReceiptRequest generateQRSettlement(PayDetail payDetail, List transactions) { double realAmount = payDetail.getAmount() / 100.0; DecimalFormat df = new DecimalFormat("0.00"); @@ -278,25 +279,25 @@ public class EReceiptUtil { return request; } - private static List buildTransactions(List payDetails) { + private static List buildTransactions(List qrSettleData) { List list = new ArrayList<>(); - for (PayDetail pay : payDetails) { + for (QRSettleData pay : qrSettleData) { double realAmount = pay.getAmount() / 100.0; DecimalFormat df = new DecimalFormat("0.00"); String amount = df.format(realAmount); Transaction txn = new Transaction(); - txn.setTran_id(pay.getQrTransId()); // or ref no + txn.setTran_id(pay.getTransId()); // or ref no txn.setStatus( pay.getTransactionType() == TransactionsType.MMQR_REFUND.value ? "REFUND_SUCCESS" : "PAY_SUCCESS" ); - txn.setDate(pay.getTransDate()); // yyyyMMdd - txn.setTime(pay.getTransTime()); // HHmmss + txn.setDate(pay.getDate()); // yyyyMMdd + txn.setTime(pay.getTime()); // HHmmss txn.setAmount(amount); list.add(txn); diff --git a/app/src/main/res/layout/fragment_reprint_receipt_screen.xml b/app/src/main/res/layout/fragment_reprint_receipt_screen.xml index 549c67b..bfb8288 100644 --- a/app/src/main/res/layout/fragment_reprint_receipt_screen.xml +++ b/app/src/main/res/layout/fragment_reprint_receipt_screen.xml @@ -84,21 +84,11 @@ - - - @@ -255,38 +244,6 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_view_batch_screen.xml b/app/src/main/res/layout/fragment_view_batch_screen.xml index 51b2f22..1af8548 100644 --- a/app/src/main/res/layout/fragment_view_batch_screen.xml +++ b/app/src/main/res/layout/fragment_view_batch_screen.xml @@ -10,6 +10,9 @@ + diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/AppDatabase.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/AppDatabase.java index d261794..e29a57d 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/db/AppDatabase.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/AppDatabase.java @@ -6,6 +6,7 @@ import androidx.room.RoomDatabase; import androidx.room.TypeConverters; import com.utsmyanmar.baselib.db.converter.CardSchemeConverter; +import com.utsmyanmar.baselib.db.converter.QRSettleDataConverter; import com.utsmyanmar.baselib.db.converter.SettleDataConverter; import com.utsmyanmar.baselib.db.converter.TransCVMConverter; import com.utsmyanmar.baselib.db.dao.BinDao; @@ -43,10 +44,10 @@ import com.utsmyanmar.paylibs.model.PayDetail; MPUCtlsEntity.class, BinEntity.class }, - version = 11, + version = 12, exportSchema = false ) -@TypeConverters({SettleDataConverter.class, TransCVMConverter.class, CardSchemeConverter.class}) +@TypeConverters({SettleDataConverter.class, TransCVMConverter.class, CardSchemeConverter.class, QRSettleDataConverter.class}) public abstract class AppDatabase extends RoomDatabase { public abstract PayDetailDao payDetailDao(); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/converter/QRSettleDataConverter.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/converter/QRSettleDataConverter.java new file mode 100644 index 0000000..2391b75 --- /dev/null +++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/converter/QRSettleDataConverter.java @@ -0,0 +1,31 @@ +package com.utsmyanmar.baselib.db.converter; + +import androidx.room.TypeConverter; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.utsmyanmar.paylibs.model.QRSettleData; + +import java.lang.reflect.Type; +import java.util.List; + +public class QRSettleDataConverter { + private static final Gson gson = new Gson(); + + @TypeConverter + public static List fromString(String value) { + if (value == null || value.isEmpty()) { + return null; + } + Type listType = new TypeToken>(){}.getType(); + return gson.fromJson(value, listType); + } + + @TypeConverter + public static String toString(List qrSettleDataList) { + if (qrSettleDataList == null) { + return null; + } + return gson.toJson(qrSettleDataList); + } +} \ No newline at end of file diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java index 37ea017..aa79b7a 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java @@ -124,7 +124,7 @@ public interface PayDetailDao { @Query(("SELECT * FROM paydetail WHERE transactionType = 3 AND voucherNo IN(:voucherNo)")) LiveData checkLastSettlement(String voucherNo); - @Query("SELECT * FROM paydetail WHERE transactionType = 3 AND voucherNo <= :voucherNo") + @Query("SELECT * FROM paydetail WHERE transactionType = 3 OR transactionType = 35 AND voucherNo <= :voucherNo") LiveData> getLastSettlement(String voucherNo); @Query("SELECT * FROM paydetail WHERE transactionType = 35 AND voucherNo <= :voucherNo") diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/di/DatabaseModule.java b/baselib/src/main/java/com/utsmyanmar/baselib/di/DatabaseModule.java index 65fb5be..a6c1402 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/di/DatabaseModule.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/di/DatabaseModule.java @@ -307,6 +307,16 @@ public class DatabaseModule { } }; + static final Migration MIGRATION_11_12 = new Migration(11, 12) { + @Override + public void migrate(SupportSQLiteDatabase database) { + + database.execSQL("ALTER TABLE paydetail " + + " ADD COLUMN qrSettleData TEXT"); + + } + }; + @Provides @Singleton @@ -317,6 +327,7 @@ public class DatabaseModule { .addMigrations(MIGRATION_8_9) .addMigrations(MIGRATION_9_10) .addMigrations(MIGRATION_10_11) + .addMigrations(MIGRATION_11_12) .allowMainThreadQueries() .addCallback(new RoomDatabase.Callback() { @Override diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/model/PayDetail.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/model/PayDetail.java index 8b12548..cbf02c8 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/model/PayDetail.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/model/PayDetail.java @@ -10,6 +10,7 @@ import androidx.room.PrimaryKey; import com.utsmyanmar.paylibs.model.enums.TransCVM; import java.io.Serializable; +import java.util.List; @SuppressWarnings("serial") @Entity(tableName = "paydetail") @@ -161,6 +162,7 @@ public class PayDetail implements Serializable { public String transId = ""; public SettleData settleDataObj; public TransCVM transCVM; + public List qrSettleData; @@ -185,7 +187,7 @@ public class PayDetail implements Serializable { boolean isPrinted, boolean eSignIsUploaded, boolean isFreePWD, boolean isFreeSign, String tempKSN, String tempMerchantNo, String tempMerchantName, String tempTerminalNo, long transNum, String customOrderNo, String approvalCode, boolean isSettle, String settleData, String settleList, String otherCardNo, String tradeDateAndTime, String tradeDateTime, String hostName, - String transDate, String transTime, String invoiceNo, String transId, String qrReferNo, String customerMobile, SettleData settleDataObj,boolean isSettlementEnabled,TransCVM transCVM) { + String transDate, String transTime, String invoiceNo, String transId, String qrReferNo, String customerMobile, SettleData settleDataObj,boolean isSettlementEnabled,TransCVM transCVM,List qrSettleData) { this.PID = PID; this.sendBag = sendBag; this.receiverBag = receiverBag; @@ -299,6 +301,7 @@ public class PayDetail implements Serializable { this.customerMobile = customerMobile; this.settleDataObj = settleDataObj; this.isSettlementEnabled = isSettlementEnabled; + this.qrSettleData = qrSettleData; } public boolean isSettle() { @@ -1363,4 +1366,12 @@ public class PayDetail implements Serializable { this.currency = currency; } + public List getQrSettleData() { + return qrSettleData; + } + + public void setQrSettleData(List qrSettleData) { + this.qrSettleData = qrSettleData; + } + } diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/model/QRSettleData.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/model/QRSettleData.java new file mode 100644 index 0000000..e080e78 --- /dev/null +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/model/QRSettleData.java @@ -0,0 +1,91 @@ +package com.utsmyanmar.paylibs.model; + +import java.util.ArrayList; +import java.util.List; + +public class QRSettleData { + + private String transId; + private String date; + private String time; + private String status; + + private long amount; + + private int transactionType; + + + public QRSettleData() {} + public QRSettleData(String transId, String date, String time, String status, long amount,int transactionType) { + this.transId = transId; + this.date = date; + this.time = time; + this.status = status; + this.amount = amount; + this.transactionType = transactionType; + } + + public void setTransId(String transId) { + this.transId = transId; + } + + public void setDate(String date) { + this.date = date; + } + + public void setTime(String time) { + this.time = time; + } + + public void setStatus(String status) { + this.status = status; + } + + public void setAmount(long amount) { + this.amount = amount; + } + + public void setTransactionType(int transactionType) { + this.transactionType = transactionType; + } + + public int getTransactionType() { + return transactionType; + } + + + public String getTransId() { + return transId; + } + + public String getDate() { + return date; + } + + public String getTime() { + return time; + } + + public String getStatus() { + return status; + } + + public long getAmount() { + return amount; + } + + public static List convertFromPayDetail(List payDetails) { + List qrSettleDataList = new ArrayList<>(); + for (PayDetail pay : payDetails) { + QRSettleData qrSettleData = new QRSettleData(); + qrSettleData.setAmount(pay.getAmount()); + qrSettleData.setTransId(pay.getQrTransId()); + qrSettleData.setStatus(pay.getTC()); + qrSettleData.setDate(pay.getTransDate()); + qrSettleData.setTime(pay.getTransTime()); + qrSettleData.setTransactionType(pay.getTransactionType()); + qrSettleDataList.add(qrSettleData); + } + return qrSettleDataList; + } +} diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java index 332fd2b..e4d8882 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java @@ -27,6 +27,7 @@ import com.utsmyanmar.paylibs.PayLibsUtils; import com.utsmyanmar.paylibs.R; import com.utsmyanmar.paylibs.model.MsgField; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.model.SettleData; import com.utsmyanmar.paylibs.print.PrintUtils; import com.utsmyanmar.paylibs.system.BaseErrorCode; @@ -732,19 +733,24 @@ public abstract class BaseXPrint { emptyLine(2); } - protected void printQRSettlementTransDetail(List lists) { + protected void printQRSettlementTransDetail(List lists) { long totalAmount = 0; long refundTotal = 0; - for (PayDetail pay : lists) { + for (QRSettleData pay : lists) { - printString("Trans Id:" + pay.getQrTransId()); - printString("Status :" + pay.getTC()); -// printString("Date : " + PrintUtils.getInstance().formatTimestamp(Long.parseLong(pay.getTradeDateAndTime()))); - printString("Date :" + pay.getTransDate()); - printString("Time :" + pay.getTransTime()); +// printString("Trans Id:" + pay.getQrTransId()); +// printString("Status :" + pay.getTC()); +//// printString("Date : " + PrintUtils.getInstance().formatTimestamp(Long.parseLong(pay.getTradeDateAndTime()))); +// printString("Date :" + pay.getTransDate()); +// printString("Time :" + pay.getTransTime()); + + printString("Trans Id:" + pay.getTransId()); + printString("Status :" + pay.getStatus()); + printString("Date :" + pay.getDate()); + printString("Time :" + pay.getTime()); printString("Amount :" + "MMK " + PrintUtils.getInstance().getSeparatorOnlyNumberFormat(pay.getAmount())); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java index 2feb049..97c8e5a 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintX.java @@ -3,6 +3,7 @@ package com.utsmyanmar.paylibs.print.printx; import android.graphics.Bitmap; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.utils.enums.HostType; import java.util.List; @@ -21,7 +22,7 @@ public interface PrintX { void printSmileSettlementReport(PayDetail payDetail,PrintXStatus printXStatus); - void printQRSettlementReport(PayDetail payDetail,List list,PrintXStatus printXStatus); + void printQRSettlementReport(PayDetail payDetail, List list, PrintXStatus printXStatus); void printDetailReport(PayDetail payDetail, List lists, HostType hostType,PrintXStatus printXStatus); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java index 1493049..758456a 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java @@ -14,6 +14,7 @@ import com.utsmyanmar.paylibs.isobuilder.builderx.ISOMsgX; import com.utsmyanmar.paylibs.isobuilder.builderx.ISOVersion; import com.utsmyanmar.paylibs.model.MsgField; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.print.PrintUtils; import com.utsmyanmar.paylibs.utils.POSUtil; import com.utsmyanmar.paylibs.utils.core_utils.ByteUtil; @@ -203,7 +204,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } @Override - public void printQRSettlementReport(PayDetail payDetail, List list, PrintXStatus printXStatus) { + public void printQRSettlementReport(PayDetail payDetail, List list, PrintXStatus printXStatus) { this.callbackStatus = printXStatus; try { diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java index cdfde1b..8db6d73 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXReceipt.java @@ -3,6 +3,7 @@ package com.utsmyanmar.paylibs.print.printx; import android.graphics.Bitmap; import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.QRSettleData; import com.utsmyanmar.paylibs.utils.enums.HostType; import java.util.List; @@ -35,7 +36,7 @@ public class PrintXReceipt { printX.printSmileSettlementReport(payDetail,printXStatus); } - public void printQRSettlementReport(PayDetail payDetail,List lists,PrintXStatus printXStatus) { + public void printQRSettlementReport(PayDetail payDetail, List lists, PrintXStatus printXStatus) { printX.printQRSettlementReport(payDetail,lists,printXStatus); }