implemented ubuntu_mono font for all receipts

This commit is contained in:
kizzy 2025-12-10 05:13:26 +07:00
parent 97014377a8
commit 014bdc18e3
13 changed files with 242 additions and 123 deletions

View File

@ -27,6 +27,7 @@ public class ManagementViewModel extends ViewModel {
public SingleLiveEvent<String> processCodeText = new SingleLiveEvent<>();
public SingleLiveEvent<PayDetail> payDetail = new SingleLiveEvent<>();
public SingleLiveEvent<List<PayDetail>> payDetails = new SingleLiveEvent<>();
public SingleLiveEvent<String> panErrorMsg = new SingleLiveEvent<>();
@ -75,6 +76,10 @@ public class ManagementViewModel extends ViewModel {
return repository.getLastSettlement(voucherNo);
}
public LiveData<List<PayDetail>> getLastSettlementQR(String voucherNo){
return repository.getLastSettlementQR(voucherNo);
}
public LiveData<List<PayDetail>> getLastTransaction(String voucherNo){
return repository.getLastTransaction(voucherNo);
}

View File

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

View File

@ -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<PayDetail> 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");
if(sharedViewModel.getTransMenu().getValue() != TransMenu.LAST_SETTLEMENT) {
sharedViewModel.insertPayDetail(payDetail);
}
sharedViewModel.setAmount(String.valueOf(qrSaleAmount - qrRefundAmount));
sharedViewModel.payDetail.setValue(payDetail);
@ -233,16 +299,27 @@ 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.getTransMenu().getValue() == TransMenu.SETTLEMENT) {
if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) {
finishECRProcess();
}
popBackStack();
} else if(sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) {
navigateToMain();
}
}
public void onConfirm() {
if(sharedViewModel.getTransMenu().getValue() == TransMenu.SETTLEMENT) {
if (!qrTransactionsList.isEmpty()) {
for (PayDetail payDetail : qrTransactionsList) {
settlementViewModel.deletePayDetail(payDetail);
@ -251,6 +328,11 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
updateData();
navigateToResult();
}
} else if(sharedViewModel.getTransMenu().getValue() == TransMenu.LAST_SETTLEMENT) {
routeId = R.id.action_QRSettlementTransactionFragment_to_reprintReceiptFragment;
safeNavigateToRouteId();
}
}
}
}

View File

@ -322,6 +322,12 @@
app:popUpToInclusive="true"
android:id="@+id/action_QRSettlementTransactionFragment_to_transactionResultFragment"
app:destination="@id/transactionResultFragment" />
<action
app:launchSingleTop="true"
app:popUpTo="@+id/mobile_navigation"
app:popUpToInclusive="true"
android:id="@+id/action_QRSettlementTransactionFragment_to_reprintReceiptFragment"
app:destination="@id/reprintReceiptFragment" />
</fragment>
<fragment
android:id="@+id/transactionHistoryFragment"
@ -786,6 +792,12 @@
app:popUpToInclusive="true"
android:id="@+id/action_selectHostFragment_to_settlementTransactionFragment"
app:destination="@id/settlementTransactionFragment" />
<action
app:launchSingleTop="true"
app:popUpTo="@+id/selectHostFragment"
app:popUpToInclusive="true"
android:id="@+id/action_selectHostFragment_to_QRSettlementTransactionFragment"
app:destination="@id/QRSettlementTransactionFragment" />
<action
app:launchSingleTop="true"
app:popUpTo="@+id/selectHostFragment"

View File

@ -127,6 +127,9 @@ public interface PayDetailDao {
@Query("SELECT * FROM paydetail WHERE transactionType = 3 AND voucherNo <= :voucherNo")
LiveData<List<PayDetail>> getLastSettlement(String voucherNo);
@Query("SELECT * FROM paydetail WHERE transactionType = 35 AND voucherNo <= :voucherNo")
LiveData<List<PayDetail>> 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<List<PayDetail>> getLastTransaction(String voucherNo);

View File

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

View File

@ -137,6 +137,7 @@ public class Repository {
public LiveData<List<PayDetail>> getTransactionHistory(){ return payDetailDao.getTransactionHistory();}
public LiveData<List<PayDetail>> getLastSettlement(String voucherNo) { return payDetailDao.getLastSettlement(voucherNo);}
public LiveData<List<PayDetail>> getLastSettlementQR(String voucherNo) { return payDetailDao.getLastSettlementQR(voucherNo);}
public LiveData<List<PayDetail>> getLastTransaction(String voucherNo) { return payDetailDao.getLastTransaction(voucherNo);}

Binary file not shown.

View File

@ -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<PayDetail> 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);
}
}

View File

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

View File

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

Binary file not shown.