Merge branch 'merge_latest_SIT' of https://hub.utsmyanmar.com/Kyaw_Min_Khant/KBZ-POS into merge_latest_SIT
This commit is contained in:
commit
bd13d50848
@ -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) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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,28 +144,43 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
||||
}
|
||||
|
||||
private void observeLastSettlement() {
|
||||
managementViewModel.getLastSettlement(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), new Observer<List<PayDetail>>() {
|
||||
@Override
|
||||
public void onChanged(List<PayDetail> payDetails) {
|
||||
if (payDetails != null) {
|
||||
if (payDetails.size() != 0) {
|
||||
PayDetail payDetail = payDetails.get(payDetails.size() - 1);
|
||||
|
||||
payDetail = sharedViewModel.payDetail.getValue();
|
||||
payDetail.setTransType( payDetail.getTransType()+"(REPRINT)");
|
||||
checkPaperExists(payDetail);
|
||||
|
||||
|
||||
} else {
|
||||
showSingleInfoDialog(getString(R.string.txt_no_trans_to_print));
|
||||
navigateMainScreen();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
// managementViewModel.payDetail.observe(getViewLifecycleOwner(), new Observer<PayDetail>() {
|
||||
// @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() {
|
||||
|
||||
if(sharedViewModel.hostType.getValue() == HostType.QR) {
|
||||
|
||||
PrintXReceipt.getInstance().printQRSettlementReport(payDetail, payDetail.getQrSettleData(), printXStatus);
|
||||
|
||||
} else {
|
||||
PrintXReceipt.getInstance().printSmileSettlementReport(payDetail, printXStatus);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private PrintXStatus printXStatus = new PrintXStatus() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
delayFunctionCall(ReprintReceiptFragment.this::navigateMainScreen);
|
||||
@ -173,10 +190,9 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
||||
public void onFailure() {
|
||||
updateUIPrintReceiptFailure(payDetail);
|
||||
|
||||
checkPaperExists(payDetail);
|
||||
}
|
||||
});
|
||||
// checkPaperExists(payDetail);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
|
||||
@ -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,11 +272,23 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi
|
||||
if (payDetails != null) {
|
||||
if (!payDetails.isEmpty()) {
|
||||
managementViewModel.payDetails.setValue(payDetails);
|
||||
|
||||
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;
|
||||
}
|
||||
safeNavigateToRouteId();
|
||||
} else {
|
||||
showSingleInfoDialog(getString(R.string.txt_no_trans_to_print));
|
||||
|
||||
@ -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<PayDetail> 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();
|
||||
|
||||
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);
|
||||
|
||||
if (qrTransactionsList.isEmpty()) {
|
||||
showEmptyDataView();
|
||||
settlementViewModel.isNoData.setValue(true);
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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<PayDetail> transactions) {
|
||||
public EReceiptRequest generateQRSettlement(PayDetail payDetail, List<QRSettleData> 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<Transaction> buildTransactions(List<PayDetail> payDetails) {
|
||||
private static List<Transaction> buildTransactions(List<QRSettleData> qrSettleData) {
|
||||
List<Transaction> 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);
|
||||
|
||||
@ -84,21 +84,11 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Status Indicator -->
|
||||
<TextView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="✓"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:alpha="0.8" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<!-- Transaction Summary Area - EMPHASIZED FOR BETTER VISIBILITY -->
|
||||
<TextView
|
||||
android:id="@+id/summaryTitle"
|
||||
android:layout_width="wrap_content"
|
||||
@ -212,11 +202,10 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="SETTLEMENT (REPRINT)"
|
||||
android:textColor="@color/white"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:fontFamily="@font/rubik_medium"
|
||||
android:background="@color/colorPrimary"
|
||||
android:paddingHorizontal="12dp"
|
||||
android:paddingVertical="6dp" />
|
||||
|
||||
@ -255,38 +244,6 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Transaction ID Section -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Trans ID"
|
||||
android:textColor="@android:color/darker_gray"
|
||||
android:textSize="14sp"
|
||||
android:fontFamily="@font/rubik_regular" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="000123"
|
||||
android:textColor="@color/colorTextTitle"
|
||||
android:textSize="14sp"
|
||||
android:fontFamily="@font/rubik_medium"
|
||||
android:fontFeatureSettings="mono"
|
||||
tools:text="123456" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@ -10,6 +10,9 @@
|
||||
<variable
|
||||
name="sharedViewModel"
|
||||
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
|
||||
<variable
|
||||
name="managementViewModel"
|
||||
type="com.utsmm.kbz.ui.management.ManagementViewModel" />
|
||||
<variable
|
||||
name="click"
|
||||
type="com.utsmm.kbz.ui.settlement.SettlementTransactionFragment.ClickEvent" />
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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<QRSettleData> fromString(String value) {
|
||||
if (value == null || value.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
Type listType = new TypeToken<List<QRSettleData>>(){}.getType();
|
||||
return gson.fromJson(value, listType);
|
||||
}
|
||||
|
||||
@TypeConverter
|
||||
public static String toString(List<QRSettleData> qrSettleDataList) {
|
||||
if (qrSettleDataList == null) {
|
||||
return null;
|
||||
}
|
||||
return gson.toJson(qrSettleDataList);
|
||||
}
|
||||
}
|
||||
@ -124,7 +124,7 @@ public interface PayDetailDao {
|
||||
@Query(("SELECT * FROM paydetail WHERE transactionType = 3 AND voucherNo IN(:voucherNo)"))
|
||||
LiveData<PayDetail> 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<List<PayDetail>> getLastSettlement(String voucherNo);
|
||||
|
||||
@Query("SELECT * FROM paydetail WHERE transactionType = 35 AND voucherNo <= :voucherNo")
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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> 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> 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<QRSettleData> getQrSettleData() {
|
||||
return qrSettleData;
|
||||
}
|
||||
|
||||
public void setQrSettleData(List<QRSettleData> qrSettleData) {
|
||||
this.qrSettleData = qrSettleData;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<QRSettleData> convertFromPayDetail(List<PayDetail> payDetails) {
|
||||
List<QRSettleData> 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;
|
||||
}
|
||||
}
|
||||
@ -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<PayDetail> lists) {
|
||||
protected void printQRSettlementTransDetail(List<QRSettleData> 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()));
|
||||
|
||||
|
||||
@ -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<PayDetail> list,PrintXStatus printXStatus);
|
||||
void printQRSettlementReport(PayDetail payDetail, List<QRSettleData> list, PrintXStatus printXStatus);
|
||||
|
||||
void printDetailReport(PayDetail payDetail, List<PayDetail> lists, HostType hostType,PrintXStatus printXStatus);
|
||||
|
||||
|
||||
@ -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<PayDetail> list, PrintXStatus printXStatus) {
|
||||
public void printQRSettlementReport(PayDetail payDetail, List<QRSettleData> list, PrintXStatus printXStatus) {
|
||||
this.callbackStatus = printXStatus;
|
||||
|
||||
try {
|
||||
|
||||
@ -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<PayDetail> lists,PrintXStatus printXStatus) {
|
||||
public void printQRSettlementReport(PayDetail payDetail, List<QRSettleData> lists, PrintXStatus printXStatus) {
|
||||
printX.printQRSettlementReport(payDetail,lists,printXStatus);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user