diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/ManagementViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/management/ManagementViewModel.java index b98e9d4..843e26d 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/ManagementViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/ManagementViewModel.java @@ -27,6 +27,7 @@ public class ManagementViewModel extends ViewModel { public SingleLiveEvent processCodeText = new SingleLiveEvent<>(); public SingleLiveEvent payDetail = new SingleLiveEvent<>(); + public SingleLiveEvent> payDetails = new SingleLiveEvent<>(); public SingleLiveEvent panErrorMsg = new SingleLiveEvent<>(); @@ -75,6 +76,10 @@ public class ManagementViewModel extends ViewModel { return repository.getLastSettlement(voucherNo); } + public LiveData> getLastSettlementQR(String voucherNo){ + return repository.getLastSettlementQR(voucherNo); + } + public LiveData> getLastTransaction(String voucherNo){ return repository.getLastTransaction(voucherNo); } 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 f4a9f99..0fdda3c 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 @@ -72,6 +72,7 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi } } + checkQRButtonVisibility(); // try { // int result = MyApplication.getInstance().basicOptBinder.setScreenMode(1); // } catch (RemoteException e) { @@ -168,14 +169,16 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi observerData(); - isReturnTransactions(); + + } - private void isReturnTransactions() { - 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) { + 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) { sharedViewModel.qrPayVisibility.setValue(8); } else { sharedViewModel.qrPayVisibility.setValue(0); + } } @@ -268,6 +271,7 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi public void onChanged(List payDetails) { if (payDetails != null) { if (!payDetails.isEmpty()) { + managementViewModel.payDetails.setValue(payDetails); routeId = R.id.action_selectHostFragment_to_settlementTransactionFragment; } else { showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); @@ -283,6 +287,7 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi }); } + private void observeRoute() { switch (Objects.requireNonNull(sharedViewModel.getTransMenu().getValue())) { case REVERSAL: @@ -296,13 +301,14 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi clearBatch(); break; case LAST_SETTLEMENT: - if(sharedViewModel.hostType.getValue() == HostType.MPU) - observeLastSettlement(); - else { - showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); - routeId = R.id.action_selectHostFragment_to_nav_main; - safeNavigateToRouteId(); - } + observeLastSettlement(); +// if(sharedViewModel.hostType.getValue() != HostType.QR) { +// observeLastSettlement(); +// } else { +// showSingleInfoDialog(getString(R.string.txt_no_trans_to_print)); +// routeId = R.id.action_selectHostFragment_to_nav_main; +// safeNavigateToRouteId(); +// } break; case CLEAR_REVERSAL: clearReversal(); 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 e0b2a98..71c15eb 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 @@ -18,6 +18,7 @@ import com.utsmyanmar.paylibs.model.TradeData; import com.utsmyanmar.paylibs.utils.POSUtil; import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmyanmar.paylibs.utils.enums.HostType; +import com.utsmyanmar.paylibs.utils.enums.TransMenu; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; import com.utsmyanmar.paylibs.utils.params.Params; import com.utsmm.kbz.BR; @@ -84,15 +85,31 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme sharedViewModel.merchantName.postValue("Default Value"); } + if(sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) { + setToolBarTitleWithBackIcon(getString(R.string.txt_subtitle_reprint_last_settle_report)); + delayFunctionCall(this::observeQRLastSettlementTransactions); + } else { + setToolBarTitleWithBackIcon(getString(R.string.title_view_batch)); + delayFunctionCall(this::observeQRTransactions); + } + showLoadingView(); - setupQRSettlementData(); +// setupQRSettlementData(); + } + + @Override + public void onPause() { + super.onPause(); + + } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setupBackButtonPressDetection(this); - observeQRTransactions(); + + setupQRSettlementData(); } private void showLoadingView() { @@ -163,7 +180,52 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme }); } + private void observeQRLastSettlementTransactions() { + List payDetailList = managementViewModel.payDetails.getValue(); + if( payDetailList != null) { + qrTransactionsList.clear(); + count = 0; + totalAmount = 0; + + 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) { + + boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value; + qrTransactionsList.add(payDetail); + count++; + if (isNeedMinusSign) { + totalAmount -= payDetail.getAmount(); + } else { + totalAmount += payDetail.getAmount(); + } + } + } + + if (qrTransactionsList.isEmpty()) { + showEmptyDataView(); + settlementViewModel.isNoData.setValue(true); + } else { + showDataView(); + settlementViewModel.isNoData.setValue(false); + } + + setupSettlementDisplayData(); + + } else { + showEmptyDataView(); + settlementViewModel.isNoData.setValue(true); + } + + } + + + private void setupSettlementDisplayData() { + // Calculate QR sale and refund counts/amounts int qrSaleCount = 0; long qrSaleAmount = 0; @@ -199,7 +261,11 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme payDetail.setAmount(totalAmount); payDetail.setTradeAnswerCode("000"); - sharedViewModel.insertPayDetail(payDetail); + if(sharedViewModel.getTransMenu().getValue() != TransMenu.LAST_SETTLEMENT) { + sharedViewModel.insertPayDetail(payDetail); + } + + sharedViewModel.setAmount(String.valueOf(qrSaleAmount - qrRefundAmount)); sharedViewModel.payDetail.setValue(payDetail); @@ -233,24 +299,40 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme popBackStack(); } + private void navigateToMain() { + routeId = R.id.action_QRSettlementTransactionFragment_to_nav_main; + safeNavigateToRouteId(); + } + public class ClickEvent { public void onCancel() { - if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) { - finishECRProcess(); + if(sharedViewModel.getTransMenu().getValue() == TransMenu.SETTLEMENT) { + if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) { + finishECRProcess(); + } + popBackStack(); + } else if(sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) { + navigateToMain(); } - popBackStack(); + } public void onConfirm() { - if (!qrTransactionsList.isEmpty()) { - for (PayDetail payDetail : qrTransactionsList) { - settlementViewModel.deletePayDetail(payDetail); - } + if(sharedViewModel.getTransMenu().getValue() == TransMenu.SETTLEMENT) { + if (!qrTransactionsList.isEmpty()) { + for (PayDetail payDetail : qrTransactionsList) { + settlementViewModel.deletePayDetail(payDetail); + } - updateData(); - navigateToResult(); + updateData(); + navigateToResult(); + } + } else if(sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) { + routeId = R.id.action_QRSettlementTransactionFragment_to_reprintReceiptFragment; + safeNavigateToRouteId(); } + } } } \ No newline at end of file diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index e87d19e..1478be9 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -322,6 +322,12 @@ app:popUpToInclusive="true" android:id="@+id/action_QRSettlementTransactionFragment_to_transactionResultFragment" app:destination="@id/transactionResultFragment" /> + + > getLastSettlement(String voucherNo); + @Query("SELECT * FROM paydetail WHERE transactionType = 35 AND voucherNo <= :voucherNo") + LiveData> getLastSettlementQR(String voucherNo); + // @Query("SELECT * FROM paydetail WHERE transactionType != 10 AND voucherNo <= :voucherNo") @Query("SELECT * FROM paydetail WHERE transactionType != 10 AND voucherNo IN(:voucherNo)") LiveData> getLastTransaction(String voucherNo); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/di/NetworkModule.java b/baselib/src/main/java/com/utsmyanmar/baselib/di/NetworkModule.java index 756b454..28cfc86 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/di/NetworkModule.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/di/NetworkModule.java @@ -285,8 +285,8 @@ public class NetworkModule { tmsAddress = getTMSUrlFromNative(); } -// String baseUrl = tmsAddress.trim() + "/api/v1/"; - String baseUrl = tmsAddress.trim() + "/"; + String baseUrl = tmsAddress.trim() + "/api/v1/"; +// String baseUrl = tmsAddress.trim() + "/"; final Gson gson = new GsonBuilder().create(); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java index 8bda331..3b1104c 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java @@ -137,6 +137,7 @@ public class Repository { public LiveData> getTransactionHistory(){ return payDetailDao.getTransactionHistory();} public LiveData> getLastSettlement(String voucherNo) { return payDetailDao.getLastSettlement(voucherNo);} + public LiveData> getLastSettlementQR(String voucherNo) { return payDetailDao.getLastSettlementQR(voucherNo);} public LiveData> getLastTransaction(String voucherNo) { return payDetailDao.getLastTransaction(voucherNo);} diff --git a/paylibs/src/main/assets/consolas.ttf b/paylibs/src/main/assets/fonts/consolas.ttf similarity index 100% rename from paylibs/src/main/assets/consolas.ttf rename to paylibs/src/main/assets/fonts/consolas.ttf diff --git a/paylibs/src/main/assets/fonts/ubuntu_mono.ttf b/paylibs/src/main/assets/fonts/ubuntu_mono.ttf new file mode 100644 index 0000000..4977028 Binary files /dev/null and b/paylibs/src/main/assets/fonts/ubuntu_mono.ttf differ 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 d3763fc..8a105e1 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 @@ -9,6 +9,8 @@ import android.os.Build; import android.os.RemoteException; import android.text.TextUtils; +import androidx.core.content.res.ResourcesCompat; + import com.nexgo.oaf.apiv3.SdkResult; import com.nexgo.oaf.apiv3.device.printer.AlignEnum; import com.nexgo.oaf.apiv3.device.printer.DotMatrixFontEnum; @@ -20,6 +22,7 @@ import com.sunmi.pay.hardware.aidl.AidlConstants; import com.sunmi.peripheral.printer.InnerResultCallback; import com.utsmyanmar.paylibs.Constant; 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.SettleData; @@ -77,8 +80,13 @@ public abstract class BaseXPrint { protected final int FONT_SIZE_SMALL = 20; protected final int FONT_SIZE_NORMAL = 24; protected final int FONT_SIZE_BIG = 24; - protected FontEntity fontSmall = new FontEntity(DotMatrixFontEnum.CH_SONG_20X20, DotMatrixFontEnum.ASC_SONG_8X16); - protected FontEntity fontNormal = new FontEntity(DotMatrixFontEnum.CH_SONG_24X24, DotMatrixFontEnum.ASC_SONG_12X24); + + protected int fontSmall = 20; +// protected FontEntity fontSmall = new FontEntity(DotMatrixFontEnum.CH_SONG_20X20, DotMatrixFontEnum.ASC_SONG_8X16); + + protected int fontNormal = 25; + +// protected FontEntity fontNormal = new FontEntity(DotMatrixFontEnum.CH_SONG_24X24, DotMatrixFontEnum.ASC_SONG_12X24); protected FontEntity fontBold = new FontEntity(DotMatrixFontEnum.CH_SONG_24X24, DotMatrixFontEnum.ASC_SONG_BOLD_16X24); protected FontEntity fontBig = new FontEntity(DotMatrixFontEnum.CH_SONG_24X24, DotMatrixFontEnum.ASC_SONG_12X24, false, true); @@ -107,7 +115,9 @@ public abstract class BaseXPrint { // LogUtil.d(TAG, Arrays.toString(returnText)); // printer.setTypeface(Typeface.DEFAULT); Resources resources = PayLibsUtils.getInstance().context.getResources(); - printer.setTypeface(Typeface.createFromAsset(PayLibsUtils.getInstance().context.getAssets(), "consolas.ttf")); +// Typeface typeface = ResourcesCompat.getFont(PayLibsUtils.getInstance().context, R.font.consolas); +// printer.setTypeface(typeface); + printer.setTypeface(Typeface.createFromAsset(PayLibsUtils.getInstance().context.getAssets(), "fonts/ubuntu_mono.ttf")); printer.setGray(getGrayLevel()); } @@ -144,7 +154,7 @@ public abstract class BaseXPrint { protected void emptyLine(int no) { for (int i = 0; i < no; i++) { - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); } @@ -176,22 +186,22 @@ public abstract class BaseXPrint { } protected void lineBreak() { - printer.appendPrnStr("******************************", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("******************************", fontNormal, AlignEnum.LEFT,false); } protected void dashBreak() { - printer.appendPrnStr("------------------------------", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("------------------------------", fontNormal, AlignEnum.LEFT,false); } protected void dashBreakEnding() { - printer.appendPrnStr("--------X----------X----------", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("--------X----------X----------", fontNormal, AlignEnum.LEFT,false); } protected void breakingLine() { - printer.appendPrnStr("******************************", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("******************************", fontNormal, AlignEnum.LEFT,false); } @@ -243,9 +253,9 @@ public abstract class BaseXPrint { String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter(); String finalVersion = SystemParamsOperation.getInstance().getFinalVersion(); - printer.appendPrnStr("***** MERCHANT COPY *****", fontNormal, AlignEnum.CENTER); - printer.appendPrnStr(finalVersion, fontNormal, AlignEnum.CENTER); - printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("***** MERCHANT COPY *****", fontNormal, AlignEnum.CENTER,false); + printer.appendPrnStr(finalVersion, fontNormal, AlignEnum.CENTER,false); + printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER,false); } @@ -296,7 +306,7 @@ public abstract class BaseXPrint { if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) { String currencySign = currencyCodeToText(payDetail.getCurrencyCode()); if (payDetail.getTransactionType() == TransactionType.BALANCE_INQUIRY) { - printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,false); } else if (payDetail.getTransactionType() == TransactionType.VOID || payDetail.getTransactionType() == TransactionType.REFUND || payDetail.getTransactionType() == TransactionType.PRE_SALE_CANCEL || payDetail.getTransactionType() == TransactionType.PRE_SALE_COMPLETE_VOID) { print2ColumnsStringNoSpace("TOTAL " + currencySign, "- " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount())); @@ -310,8 +320,8 @@ public abstract class BaseXPrint { lineBreak(); emptyLine(2); - printer.appendPrnStr("TRANSACTION FAIL", fontNormal, AlignEnum.CENTER); - printer.appendPrnStr(BaseErrorCode.getCode(payDetail.getTradeAnswerCode()), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("TRANSACTION FAIL", fontNormal, AlignEnum.CENTER,true); + printer.appendPrnStr(BaseErrorCode.getCode(payDetail.getTradeAnswerCode()), fontNormal, AlignEnum.CENTER,true); emptyLine(2); lineBreak(); @@ -370,33 +380,33 @@ public abstract class BaseXPrint { batchNum = payDetail.getBatchNo(); - printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME: " + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME: " + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false); if (Objects.equals(payDetail.getAccountType(), CardScheme.MPU_CTLS.name)) { hostName = HOST_NAME_MPU; } else { hostName = HOST_NAME_VM; } - printer.appendPrnStr("HOST:" + hostName, fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("HOST:" + hostName, fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false); if (payDetail.getTransType().equals("SUMMARY_REPORT")) { - printer.appendPrnStr("BATCH NO :" + batchNum, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("BATCH NO :" + batchNum, fontNormal, AlignEnum.LEFT,false); } else { // printer.printColumnsString(new String[]{"BATCH NO :" + batchNum, "INV NO: " + invoiceNo}, new int[]{2, 2}, new int[]{0, 2}, null); - printer.appendPrnStr("BATCH NO :" + batchNum + " TRACE NO:" + traceNo, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("BATCH NO :" + batchNum + " TRACE NO:" + traceNo, fontNormal, AlignEnum.LEFT,false); } - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); - printer.appendPrnStr(transType.replace("_", " "), fontBold, AlignEnum.CENTER); + printer.appendPrnStr(transType.replace("_", " "), fontNormal, AlignEnum.CENTER,true); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); } @@ -406,52 +416,52 @@ public abstract class BaseXPrint { String schemeName = ""; schemeName = payDetail.getAccountType() == null ? "" : payDetail.getAccountType(); -// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(PrintUtils.getInstance().maskCardNumberPciDss(payDetail.getCardNo()), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(PrintUtils.getInstance().getFormatExpDateWithSlash(payDetail.getEXPDate()), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(PrintUtils.getInstance().getEntryType(payDetail.getCardType()) + " ENTRY", fontNormal, AlignEnum.LEFT); +// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(PrintUtils.getInstance().maskCardNumberPciDss(payDetail.getCardNo()), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(PrintUtils.getInstance().getFormatExpDateWithSlash(payDetail.getEXPDate()), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(PrintUtils.getInstance().getEntryType(payDetail.getCardType()) + " ENTRY", fontNormal, AlignEnum.LEFT,false); if (payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_APPROVED) || payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_ACCEPT)) { - printer.appendPrnStr("APPR CODE:" + payDetail.getApprovalCode(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("APPR CODE:" + payDetail.getApprovalCode(), fontNormal, AlignEnum.LEFT,false); // manual entry or refund if (payDetail.getCardType() == -1 || payDetail.getTransactionType() == TransactionsType.REFUND.value) { - printer.appendPrnStr("RRN:" + payDetail.getReferNo(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("RRN:" + payDetail.getReferNo(), fontNormal, AlignEnum.LEFT,false); } else { - printer.appendPrnStr("RRN:" + payDetail.getReferNo() + " TVR:" + payDetail.getTVR(), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("TSI :" + payDetail.getTSI(), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("TC :" + payDetail.getArqC(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("RRN:" + payDetail.getReferNo() + " TVR:" + payDetail.getTVR(), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("TSI :" + payDetail.getTSI(), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("TC :" + payDetail.getArqC(), fontNormal, AlignEnum.LEFT,false); } } else { - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("TVR :" + payDetail.getTVR(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("TVR :" + payDetail.getTVR(), fontNormal, AlignEnum.LEFT,false); } //actually we can remove if (payDetail.getCardType() != -1 || payDetail.getTransactionType() != TransactionsType.REFUND.value) { - printer.appendPrnStr("AID :" + payDetail.getAID(), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("APP NAME :" + payDetail.getAppLabel(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("AID :" + payDetail.getAID(), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("APP NAME :" + payDetail.getAppLabel(), fontNormal, AlignEnum.LEFT,false); } - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); // check is pin change if (payDetail.getTradeAnswerCode().equals("00") || payDetail.getTradeAnswerCode().equals("000")) { String currencySign = currencyCodeToText(payDetail.getCurrencyCode()); // CurrencyType currencySign = currencyTextToCurrencyType(payDetail.getCurrencyCode()); if (payDetail.getTransactionType() == TransactionType.BALANCE_INQUIRY) { - printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontBold, AlignEnum.LEFT); + printer.appendPrnStr("MMK " + PrintUtils.getInstance().getBalanceInquiryNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true); } else { - printer.appendPrnStr("TOTAL " + currencySign + " " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()), fontBold, AlignEnum.LEFT); + printer.appendPrnStr("TOTAL " + currencySign + " " + PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()), fontNormal, AlignEnum.LEFT,true); } } else { lineBreak(); emptyLine(3); - printer.appendPrnStr(BaseErrorCode.getCode(payDetail.getTradeAnswerCode()), fontBold, AlignEnum.CENTER); + printer.appendPrnStr(BaseErrorCode.getCode(payDetail.getTradeAnswerCode()), fontNormal, AlignEnum.CENTER,true); emptyLine(3); lineBreak(); } @@ -467,7 +477,7 @@ public abstract class BaseXPrint { if (isNegative) { amountString = "-" + amountString; } - printer.appendPrnStr(label + countStringFormat(count) + MMK + " " + PrintUtils.getInstance().getSeparatorNumberFormat(amount), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr(label + countStringFormat(count) + MMK + " " + PrintUtils.getInstance().getSeparatorNumberFormat(amount), fontNormal, AlignEnum.LEFT,false); } } @@ -484,20 +494,20 @@ public abstract class BaseXPrint { if (settleData.getSaleCount() == 0 && settleData.getVoidSaleCount() == 0 && settleData.getWavePayCount() == 0 && settleData.getCashAdvanceCount() == 0) { printErrorBlock("NO TRANSACTION FOUND"); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); return; } if (payDetail.getAccountType().equals("WALLET")) { - printer.appendPrnStr("PAYMENT NAME: QR", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("PAYMENT NAME: QR", fontNormal, AlignEnum.LEFT,false); } else { - printer.appendPrnStr("CARD NAME:" + payDetail.getAccountType(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("CARD NAME:" + payDetail.getAccountType(), fontNormal, AlignEnum.LEFT,false); } - printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false); // printer.printColumnsString(new String[]{"", "COUNT", "TOTAL"}, new int[]{2,1, 1}, new int[]{ 2,1, 2}, innerResultCallback); emptyLine(1); if (settleData.getSaleCount() > 0) printColumnString("SALES", settleData.getSaleCount(), settleData.getSaleAmount(), false); -// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT); +// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT,false); if (settleData.getVoidSaleCount() > 0) printColumnString("VOID SALES", settleData.getVoidSaleCount(), settleData.getVoidSaleAmount(), true); if (settleData.getCashAdvanceCount() > 0) @@ -520,14 +530,14 @@ public abstract class BaseXPrint { printColumnString("TOTAL", totalCount, totalAmount, false); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("GRAND TOTAL", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("GRAND TOTAL", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false); // printer.printColumnsString(new String[]{"", "COUNT", "TOTAL"}, new int[]{2,1, 1}, new int[]{ 2,1, 2}, innerResultCallback); emptyLine(1); if (settleData.getSaleCount() > 0) printColumnString("SALES", settleData.getSaleCount(), settleData.getSaleAmount(), false); -// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT); +// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT,false); if (settleData.getVoidSaleCount() > 0) printColumnString("VOID SALES", settleData.getVoidSaleCount(), settleData.getVoidSaleAmount(), true); if (settleData.getCashAdvanceCount() > 0) @@ -549,8 +559,8 @@ public abstract class BaseXPrint { dashBreak(); printColumnString("TOTAL", totalCount, totalAmount, false); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); } @@ -594,28 +604,28 @@ public abstract class BaseXPrint { }*/ protected void printString(String text) { - printer.appendPrnStr(text, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr(text, fontNormal, AlignEnum.LEFT,false); } protected void print2ColumnsString(String first, String second) { - printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.LEFT,false); } protected void print2ColumnsStringNoSpace(String first, String second) { - printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.LEFT,false); } protected void print2ColumnsStringBold(String first, String second) { - printer.appendPrnStr(first + " " + second, fontBold, AlignEnum.LEFT); + printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.LEFT,true); } protected void print2ColumnsStringBoldCenter(String first, String second) { - printer.appendPrnStr(first + " " + second, fontBold, AlignEnum.CENTER); + printer.appendPrnStr(first + " " + second, fontNormal, AlignEnum.CENTER,true); } protected void print3ColumnsString(String first, String second, String third) { -// printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT); +// printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); } protected void printTransDetailReport(List lists, HostType hostType) { @@ -767,7 +777,7 @@ public abstract class BaseXPrint { addSignatureBitmap(payDetail); - printer.appendPrnStr(cvmText, fontBold, AlignEnum.CENTER); + printer.appendPrnStr(cvmText, fontNormal, AlignEnum.CENTER,true); // if (payDetail.getIsFreeSign()) { @@ -777,20 +787,20 @@ public abstract class BaseXPrint { // } emptyLine(1); - printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER); + printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER,false); if (isQR) { - printer.appendPrnStr("ACCORDING TO THE ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER); + printer.appendPrnStr("ACCORDING TO THE ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false); } else { - printer.appendPrnStr("ACCORDING TO THE CARD ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER); + printer.appendPrnStr("ACCORDING TO THE CARD ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false); } if (isMerchantCopy) { - printer.appendPrnStr("***** MERCHANT COPY *****", fontSmall, AlignEnum.CENTER); + printer.appendPrnStr("***** MERCHANT COPY *****", fontSmall, AlignEnum.CENTER,false); } else { - printer.appendPrnStr("***** CUSTOMER COPY *****", fontSmall, AlignEnum.CENTER); + printer.appendPrnStr("***** CUSTOMER COPY *****", fontSmall, AlignEnum.CENTER,false); } - printer.appendPrnStr(finalVersion, fontSmall, AlignEnum.CENTER); - printer.appendPrnStr(receiptFooter, fontSmall, AlignEnum.CENTER); + printer.appendPrnStr(finalVersion, fontSmall, AlignEnum.CENTER,false); + printer.appendPrnStr(receiptFooter, fontSmall, AlignEnum.CENTER,false); } @@ -854,10 +864,10 @@ public abstract class BaseXPrint { } - printer.appendPrnStr(receiptHeader, fontBold, AlignEnum.CENTER); - printer.appendPrnStr(merchantAddress, fontNormal, AlignEnum.CENTER); - printer.appendPrnStr(merchantAddress2, fontNormal, AlignEnum.CENTER); - printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false); + printer.appendPrnStr(merchantAddress, fontNormal, AlignEnum.CENTER,false); + printer.appendPrnStr(merchantAddress2, fontNormal, AlignEnum.CENTER,false); + printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false); emptyLine(2); @@ -871,11 +881,11 @@ public abstract class BaseXPrint { String ksn = ByteUtil.bytes2HexStr(ksnData); - printer.appendPrnStr("<<< DUKPT Key Information >>>", fontBold, AlignEnum.CENTER); + printer.appendPrnStr("<<< DUKPT Key Information >>>", fontNormal, AlignEnum.CENTER,true); lineBreak(); - printer.appendPrnStr("Key Index (" + keyIndex + ")", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("KSN :" + ksn, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("Key Index (" + keyIndex + ")", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("KSN :" + ksn, fontNormal, AlignEnum.LEFT,false); lineBreak(); emptyLine(4); @@ -914,28 +924,28 @@ public abstract class BaseXPrint { batchNum = payDetail.getBatchNo(); - printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false); if (payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1) { - printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO: " + invoiceNo, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO: " + invoiceNo, fontNormal, AlignEnum.LEFT,false); } else if (!payDetail.getTransType().equals(SETTLEMENT) && !payDetail.getTransType().equals(SUMMARY) && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value) { - printer.appendPrnStr("BTH NO :" + batchNum + " INV NO: " + invoiceNo, fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("BTH NO :" + batchNum + " INV NO: " + invoiceNo, fontNormal, AlignEnum.LEFT,false); } else if (payDetail.getTransType().equals(SUMMARY)) { - printer.appendPrnStr("HOST :" + HOST_NAME_MPU + "", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("HOST :" + HOST_NAME_MPU + "", fontNormal, AlignEnum.LEFT,false); } /* 17 Sept 2024 Yoma requested to changed slip design for QR*/ // printer.printColumnsString(new String[]{"MID :" + payDetail.getMerchantNo(), ""}, new int[]{3, 1}, new int[]{0, 2}, innerResultCallback); // printer.printColumnsString(new String[]{"TID :" + payDetail.getTerminalNo(), ""}, new int[]{3, 1}, new int[]{0, 2}, innerResultCallback); - printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false); emptyLine(1); - printer.appendPrnStr(transType.replace("_", " "), fontBold, AlignEnum.CENTER); + printer.appendPrnStr(transType.replace("_", " "),fontNormal, AlignEnum.CENTER,true); if (!(payDetail.getQrTransStatus() != 1 && (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value || payDetail.getTransactionType() == TransactionsType.MMQR.value))) { - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); } } 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 cba2b5a..799b472 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 @@ -169,7 +169,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } else { String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter(); emptyLine(1); - printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER,false); } @@ -270,8 +270,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX { printTransFooter(false,payDetail, isMerchantCopy); } else { String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter(); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER,false); } @@ -294,8 +294,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX { printTransFooter(false,payDetail, isMerchantCopy); } else { String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter(); - printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT); - printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); + printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER,false); } @@ -359,31 +359,31 @@ public class PrintXImpl extends BaseXPrint implements PrintX { } else { if(payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) { - printer.appendPrnStr("(TRANSACTION FAIL)", fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("(TRANSACTION FAIL)", fontNormal, AlignEnum.CENTER,false); emptyLine(1); - printer.appendPrnStr(reformattedExceededString(payDetail.getTradeResultDes()), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(reformattedExceededString(payDetail.getTradeResultDes()), fontNormal, AlignEnum.CENTER,false); } else { - printer.appendPrnStr("(TRANSACTION FAIL)", fontNormal, AlignEnum.CENTER); + printer.appendPrnStr("(TRANSACTION FAIL)", fontNormal, AlignEnum.CENTER,false); emptyLine(1); if(payDetail.getQrTransStatus() == -1) { // printer.printText("TRANSACTION FAIL\nPAYMENT CREDIT FAILURE\n", null); - printer.appendPrnStr(reformattedExceededString("PAYMENT CREDIT FAILURE"), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(reformattedExceededString("PAYMENT CREDIT FAILURE"), fontNormal, AlignEnum.CENTER,false); } else if(payDetail.getQrTransStatus() == 2) { if(POSUtil.getInstance().isCurrentDateTimePassed(payDetail.getTransDate(),payDetail.getTransTime())) { // printer.printText("TRANSACTION FAIL\nEXPIRE\n", null); - printer.appendPrnStr(reformattedExceededString("EXPIRE"), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(reformattedExceededString("EXPIRE"), fontNormal, AlignEnum.CENTER,false); } else { - printer.appendPrnStr(reformattedExceededString("PAYMENT CREDIT IN-PROGRESS"), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(reformattedExceededString("PAYMENT CREDIT IN-PROGRESS"), fontNormal, AlignEnum.CENTER,false); // printer.printText("TRANSACTION FAIL\nPAYMENT CREDIT IN-PROGRESS\n", null); } } else if(payDetail.getQrTransStatus() == 3) { - printer.appendPrnStr(reformattedExceededString("COMMUNICATION ERROR"), fontNormal, AlignEnum.CENTER); + printer.appendPrnStr(reformattedExceededString("COMMUNICATION ERROR"), fontNormal, AlignEnum.CENTER,false); // printer.printText("COMMUNICATION ERROR\n", null); } } diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java index a7fc712..1fba267 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java @@ -42,8 +42,8 @@ public class SystemParamsSettings implements Serializable { // private String tmsAddress = "https://tms.smile-mm.com"; // private String tmsAddress = "http://128.199.170.203"; -// private String tmsAddress = "http://sirius-nest.utsmyanmar.com"; - private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; + private String tmsAddress = "http://sirius-nest.utsmyanmar.com"; +// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com"; private String terminalCapability = "E0E8C8"; diff --git a/paylibs/src/main/res/font/consolas.ttf b/paylibs/src/main/res/font/consolas.ttf new file mode 100644 index 0000000..2162134 Binary files /dev/null and b/paylibs/src/main/res/font/consolas.ttf differ