Compare commits

..

2 Commits

Author SHA1 Message Date
MooN
adbd0724af SIM INTERNET FIX 2026-01-05 20:46:37 +06:30
MooN
48581e1291 receipt design change 2026-01-05 20:46:18 +06:30
5 changed files with 181 additions and 104 deletions

View File

@ -9,7 +9,7 @@
<uses-feature <uses-feature
android:name="android.hardware.telephony" android:name="android.hardware.telephony"
android:required="false" /> android:required="false" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" /> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />

View File

@ -319,6 +319,7 @@ public class TMSUtil {
Log.d(TAG,"Connected to Wifi"); Log.d(TAG,"Connected to Wifi");
return "WIFI"; return "WIFI";
} }
}return "No Connection"; }
return "No Connection";
} }
} }

View File

@ -1,14 +1,16 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<network-security-config> <network-security-config>
<domain-config cleartextTrafficPermitted="true"> <domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">159.223.40.176</domain> <domain includeSubdomains="true">159.223.40.176</domain>
<domain includeSubdomains="true">128.199.170.203</domain> <domain includeSubdomains="true">128.199.170.203</domain>
<domain includeSubdomains="true">152.42.199.193</domain> <domain includeSubdomains="true">152.42.199.193</domain>
<domain includeSubdomains="true">api.kbzpay.com</domain> <domain includeSubdomains="true">api.kbzpay.com</domain>
<domain-config>
<domain includeSubdomains="true">receipt-nest.utsmyanmar.com</domain>
</domain-config>
<domain includeSubdomains="true">sirius-nest.utsmyanmar.com</domain> <domain includeSubdomains="true">sirius-nest.utsmyanmar.com</domain>
</domain-config> </domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">receipt-nest.utsmyanmar.com</domain>
</domain-config>
</network-security-config> </network-security-config>

View File

@ -6,6 +6,7 @@ import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.icu.util.LocaleData;
import android.os.Build; import android.os.Build;
import android.os.RemoteException; import android.os.RemoteException;
import android.text.TextUtils; import android.text.TextUtils;
@ -40,7 +41,11 @@ import com.utsmyanmar.paylibs.utils.iso_utils.TransactionType;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import com.utsmyanmar.paylibs.utils.print_utils.BitmapUtils; import com.utsmyanmar.paylibs.utils.print_utils.BitmapUtils;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -196,6 +201,10 @@ public abstract class BaseXPrint {
} }
protected void dotBreak(){
printer.appendPrnStr(new String(new char[29]).replace("\0", "."), fontNormal, AlignEnum.LEFT, false);
}
protected void dashBreak() { protected void dashBreak() {
printer.appendPrnStr("-----------------------------", fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("-----------------------------", fontNormal, AlignEnum.LEFT,false);
@ -492,7 +501,6 @@ public abstract class BaseXPrint {
protected void printTransDetailSummary(PayDetail payDetail) { protected void printTransDetailSummary(PayDetail payDetail) {
String MMK = "MMK"; String MMK = "MMK";
SettleData settleData = payDetail.getSettleDataObj(); SettleData settleData = payDetail.getSettleDataObj();
boolean isQrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); boolean isQrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
@ -507,49 +515,19 @@ public abstract class BaseXPrint {
return; return;
} }
if (payDetail.getAccountType().equals("WALLET")) { if (payDetail.getAccountType().equals("WALLET")) {
printer.appendPrnStr("PAYMENT NAME: QR", fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("PAYMENT NAME: PAY BY QR", fontNormal, AlignEnum.LEFT,false);
printString("TYPE : " + "PAY BY QR");
} else { } else {
printer.appendPrnStr("CARD NAME:" + payDetail.getAccountType(), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("CARD NAME:" + payDetail.getAccountType(), fontNormal, AlignEnum.LEFT,false);
} }
// printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("COUNT", "TOTAL", fontNormal, false); // printer.appendPrnStr("COUNT", "TOTAL", fontNormal, false);
// printer.printColumnsString(new String[]{"", "COUNT", "TOTAL"}, new int[]{2,1, 1}, new int[]{ 2,1, 2}, innerResultCallback); // printer.printColumnsString(new String[]{"", "COUNT", "TOTAL"}, new int[]{2,1, 1}, new int[]{ 2,1, 2}, innerResultCallback);
// emptyLine(1); // emptyLine(1);
if (settleData.getSaleCount() > 0) emptyLine(1);
printColumnString("SALES", settleData.getSaleCount(), settleData.getSaleAmount(), false);
// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("(COUNT)TRANS", "AMOUNT(MMK)", fontNormal, false);
if (settleData.getVoidSaleCount() > 0)
printColumnString("VOID SALES", settleData.getVoidSaleCount(), settleData.getVoidSaleAmount(), true);
if (settleData.getCashAdvanceCount() > 0)
printColumnString("CASH OUT", settleData.getCashAdvanceCount(), settleData.getCashAdvanceAmount(), false);
if (settleData.getPreAuthCount() > 0)
printColumnString("PRE AUTH", settleData.getPreAuthCount(), settleData.getPreAuthAmount(), false);
if (settleData.getPreAuthVoidCount() > 0)
printColumnString("VOID PREAUTH", settleData.getPreAuthVoidCount(), settleData.getPreAuthVoidAmount(), true);
if (settleData.getRefundCount() > 0)
printColumnString("REFUND", settleData.getRefundCount(), settleData.getRefundAmount(), true);
if (settleData.getPreAuthCompCount() > 0)
printColumnString("PREAUTH COMP", settleData.getPreAuthCompCount(), settleData.getPreAuthCompAmount(), false);
if (settleData.getPreAuthCompVoidCount() > 0)
printColumnString("VOID PREAUTH COMPLETE", settleData.getPreAuthCompVoidCount(), settleData.getPreAuthCompVoidAmount(), true);
if (settleData.getWavePayCount() > 0){
// printColumnString("QR PAY", settleData.getWavePayCount(), settleData.getWavePayAmount(), false);
printer.appendPrnStr( "QR PAY " + countStringFormat(settleData.getWavePayCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWavePayAmount(), isQrDecimalEnabled) , fontNormal, false);
}
if (settleData.getWaveRefundCount() > 0) {
// printColumnString("QR REFUND", settleData.getWaveRefundCount(), settleData.getWaveRefundAmount(), true);
printer.appendPrnStr( "QR REFUND " + countStringFormat(settleData.getWaveRefundCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWaveRefundAmount(), isQrDecimalEnabled) , fontNormal, false);
}
dashBreak();
// printColumnString("TOTAL", totalCount, totalAmount, false);
printer.appendPrnStr( "TOTAL " + countStringFormat(totalCount) + " " + "MMK", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrDecimalEnabled) , fontNormal, false);
printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("GRAND TOTAL", fontNormal, AlignEnum.LEFT,false);
// printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("COUNT", "TOTAL", fontNormal, false);
// printer.printColumnsString(new String[]{"", "COUNT", "TOTAL"}, new int[]{2,1, 1}, new int[]{ 2,1, 2}, innerResultCallback);
// emptyLine(1);
if (settleData.getSaleCount() > 0) if (settleData.getSaleCount() > 0)
printColumnString("SALES", settleData.getSaleCount(), settleData.getSaleAmount(), false); printColumnString("SALES", settleData.getSaleCount(), settleData.getSaleAmount(), false);
// printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("SALES "+ countStringFormat(settleData.getSaleCount())+MMK+" "+ PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getSaleAmount()), fontNormal, AlignEnum.LEFT,false);
@ -567,17 +545,56 @@ public abstract class BaseXPrint {
printColumnString("PREAUTH COMP", settleData.getPreAuthCompCount(), settleData.getPreAuthCompAmount(), false); printColumnString("PREAUTH COMP", settleData.getPreAuthCompCount(), settleData.getPreAuthCompAmount(), false);
if (settleData.getPreAuthCompVoidCount() > 0) if (settleData.getPreAuthCompVoidCount() > 0)
printColumnString("VOID PREAUTH COMPLETE", settleData.getPreAuthCompVoidCount(), settleData.getPreAuthCompVoidAmount(), true); printColumnString("VOID PREAUTH COMPLETE", settleData.getPreAuthCompVoidCount(), settleData.getPreAuthCompVoidAmount(), true);
if (settleData.getWavePayCount() > 0) { if (settleData.getWavePayCount() >= 0){
// printColumnString("QR PAY", settleData.getWavePayCount(), settleData.getWavePayAmount(), false); // printColumnString("QR PAY", settleData.getWavePayCount(), settleData.getWavePayAmount(), false);
printer.appendPrnStr( "QR PAY " + countStringFormat(settleData.getWavePayCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWavePayAmount(), isQrDecimalEnabled) , fontNormal, false); // printer.appendPrnStr( "QR PAY " + countStringFormat(settleData.getWavePayCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWavePayAmount(), isQrDecimalEnabled) , fontNormal, false);
printer.appendPrnStr( "(" + settleData.getWavePayCount() + ")" + "QR PAY" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWavePayAmount(), isQrDecimalEnabled) , fontNormal, false);
} }
if (settleData.getWaveRefundCount() > 0){ if (settleData.getWaveRefundCount() >= 0) {
// printColumnString("QR REFUND", settleData.getWaveRefundCount(), settleData.getWaveRefundAmount(), true); // printColumnString("QR REFUND", settleData.getWaveRefundCount(), settleData.getWaveRefundAmount(), true);
printer.appendPrnStr( "QR REFUND " + countStringFormat(settleData.getWaveRefundCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWaveRefundAmount(), isQrDecimalEnabled) , fontNormal, false); // printer.appendPrnStr( "QR REFUND " + countStringFormat(settleData.getWaveRefundCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWaveRefundAmount(), isQrDecimalEnabled) , fontNormal, false);
printer.appendPrnStr( "(" + settleData.getWaveRefundCount() + ")" + "QR REFUND", "- " + PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWaveRefundAmount(), isQrDecimalEnabled) , fontNormal, false);
} }
dashBreak(); // dashBreak();
dotBreak();
// printColumnString("TOTAL", totalCount, totalAmount, false); // printColumnString("TOTAL", totalCount, totalAmount, false);
printer.appendPrnStr( "TOTAL " + countStringFormat(totalCount) + " " + "MMK", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrDecimalEnabled) , fontNormal, false); // printer.appendPrnStr( "TOTAL " + countStringFormat(totalCount) + " " + "MMK", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrDecimalEnabled) , fontNormal, false);
printer.appendPrnStr( "TOTAL", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrDecimalEnabled) , fontNormal, false);
// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
// printer.appendPrnStr("GRAND TOTAL", fontNormal, AlignEnum.LEFT,false);
//// printer.appendPrnStr(" " + "COUNT " + " " + " TOTAL", fontNormal, AlignEnum.LEFT,false);
// printer.appendPrnStr("COUNT", "TOTAL", fontNormal, 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,false);
// if (settleData.getVoidSaleCount() > 0)
// printColumnString("VOID SALES", settleData.getVoidSaleCount(), settleData.getVoidSaleAmount(), true);
// if (settleData.getCashAdvanceCount() > 0)
// printColumnString("CASH OUT", settleData.getCashAdvanceCount(), settleData.getCashAdvanceAmount(), false);
// if (settleData.getPreAuthCount() > 0)
// printColumnString("PRE AUTH", settleData.getPreAuthCount(), settleData.getPreAuthAmount(), false);
// if (settleData.getPreAuthVoidCount() > 0)
// printColumnString("VOID PREAUTH", settleData.getPreAuthVoidCount(), settleData.getPreAuthVoidAmount(), true);
// if (settleData.getRefundCount() > 0)
// printColumnString("REFUND", settleData.getRefundCount(), settleData.getRefundAmount(), true);
// if (settleData.getPreAuthCompCount() > 0)
// printColumnString("PREAUTH COMP", settleData.getPreAuthCompCount(), settleData.getPreAuthCompAmount(), false);
// if (settleData.getPreAuthCompVoidCount() > 0)
// printColumnString("VOID PREAUTH COMPLETE", settleData.getPreAuthCompVoidCount(), settleData.getPreAuthCompVoidAmount(), true);
// if (settleData.getWavePayCount() > 0) {
//// printColumnString("QR PAY", settleData.getWavePayCount(), settleData.getWavePayAmount(), false);
// printer.appendPrnStr( "QR PAY " + countStringFormat(settleData.getWavePayCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWavePayAmount(), isQrDecimalEnabled) , fontNormal, false);
// }
// if (settleData.getWaveRefundCount() > 0){
//// printColumnString("QR REFUND", settleData.getWaveRefundCount(), settleData.getWaveRefundAmount(), true);
// printer.appendPrnStr( "QR REFUND " + countStringFormat(settleData.getWaveRefundCount()) + " " + "MMK" , PrintUtils.getInstance().getSeparatorNumberFormat(settleData.getWaveRefundAmount(), isQrDecimalEnabled) , fontNormal, false);
// }
// dashBreak();
//// printColumnString("TOTAL", totalCount, totalAmount, false);
// printer.appendPrnStr( "TOTAL " + countStringFormat(totalCount) + " " + "MMK", PrintUtils.getInstance().getSeparatorNumberFormat(totalAmount, isQrDecimalEnabled) , fontNormal, false);
// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
@ -653,9 +670,11 @@ public abstract class BaseXPrint {
} }
protected void print2ColumnsStringBoldCenter(String first, String second, int fontSize, AlignEnum align) { protected void print2ColumnsStringBoldCenter(String first, String second, int fontSize, AlignEnum align) {
printer.appendPrnStr(first + " " + second, fontSize, align,true); printer.appendPrnStr(first + " " + second, fontSize, align,true);
} }
protected void print3ColumnsString(String first, String second, String third) { protected void print3ColumnsString(String first, String second, String third) {
// printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false);
@ -676,23 +695,22 @@ public abstract class BaseXPrint {
print2ColumnsString("AMOUNT", ""); print2ColumnsString("AMOUNT", "");
print2ColumnsString("REF NUM", ""); print2ColumnsString("REF NUM", "");
} else if (hostType == HostType.QR) { } else if (hostType == HostType.QR) {
print2ColumnsString("PAYMENT NAME", ""); // print2ColumnsString("PAYMENT NAME", "");
print2ColumnsString("DATE", "TIME"); // print2ColumnsString("DATE", "TIME");
print2ColumnsString("TRANSACTION", "TRACE NO"); // print2ColumnsString("TRANSACTION", "TRACE NO");
print2ColumnsString("TRXN ID", ""); // print2ColumnsString("TRXN ID", "");
print2ColumnsString("AMOUNT", ""); // print2ColumnsString("AMOUNT", "");
} }
// breakingLine(); // breakingLine();
lineBreak();
long totalAmount = 0; long totalAmount = 0;
for (PayDetail pay : lists) { for (PayDetail pay : lists) {
boolean isNeedMinusSign = pay.getTransactionType() == TransactionsType.VOID.value || pay.getTransactionType() == TransactionsType.REFUND.value || pay.getTransactionType() == TransactionsType.MMQR_REFUND.value; boolean isNeedMinusSign = pay.getTransactionType() == TransactionsType.VOID.value || pay.getTransactionType() == TransactionsType.REFUND.value || pay.getTransactionType() == TransactionsType.MMQR_REFUND.value;
boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) { if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) {
print2ColumnsString(pay.getAccountType(), PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo())); print2ColumnsString(pay.getAccountType(), PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo()));
print2ColumnsString("**/**", pay.getVoucherNo()); print2ColumnsString("**/**", pay.getVoucherNo());
@ -700,20 +718,43 @@ public abstract class BaseXPrint {
print2ColumnsString(pay.getReferNo(), ""); print2ColumnsString(pay.getReferNo(), "");
} else if (hostType == HostType.QR) { } else if (hostType == HostType.QR) {
printString("TRANS ID:" + pay.getQrTransId());
printString("STATUS :" + pay.getTC());
printString("SOURCE :" +
(pay.getTransactionType() == TransactionsType.MMQR_REFUND.value
? "QR PAYMENT"
: pay.getCustomerMobile())
);
// printString("TXN NAME:" + pay.getTransType().replace("_", " "));
printString("DATE :" + POSUtil.getInstance().formatDisplayDate(pay.getTransDate()) + " " + pay.getTransTime());
printString("TRACE NO:" + pay.getVoucherNo());
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) { if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
print2ColumnsString("QR PAYMENT", ""); printString("RRN :" + pay.getReferNo());
} else {
print2ColumnsString(pay.getCustomerMobile(), "");
}
print2ColumnsString(pay.getTransDate(), pay.getTransTime());
print2ColumnsString(pay.getTransType().replace("_", " "), pay.getVoucherNo());
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
print2ColumnsString(pay.getReferNo() + "(RRN)", "");
print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled), "");
} else {
print2ColumnsString(pay.getQrTransId(), "");
print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) , "");
} }
printString("AMOUNT :" +
(isNeedMinusSign
? "-" + PrintUtils.getInstance()
.getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled)
: PrintUtils.getInstance()
.getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled))
+ " " +"MMK");
dotBreak();
// if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
// print2ColumnsString("QR PAYMENT", "");
// } else {
// print2ColumnsString(pay.getCustomerMobile(), "");
// }
// print2ColumnsString(pay.getTransDate(), pay.getTransTime());
// print2ColumnsString(pay.getTransType().replace("_", " "), pay.getVoucherNo());
// if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
// print2ColumnsString(pay.getReferNo() + "(RRN)", "");
// print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled), "");
// } else {
// print2ColumnsString(pay.getQrTransId(), "");
// print2ColumnsString(isNeedMinusSign ? "-" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) : "" + PrintUtils.getInstance().getSeparatorNumberFormat(pay.getAmount(), isDecimalEnabled) , "");
// }
} }
@ -921,7 +962,7 @@ public abstract class BaseXPrint {
// merchantPhoneNo = "MERCHANT PHONENO"; // merchantPhoneNo = "MERCHANT PHONENO";
// } // }
if(TextUtils.equals(terminalName, "") || terminalName == null){ if(TextUtils.equals(terminalName, "") || terminalName == null){
terminalName = "Terminal Name"; terminalName = "";
} }
// emptyLine(1); // emptyLine(1);
// printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false); // printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false);
@ -931,8 +972,7 @@ public abstract class BaseXPrint {
printer.appendPrnStr(merchantAddress3, fontNormal, AlignEnum.CENTER,false); printer.appendPrnStr(merchantAddress3, fontNormal, AlignEnum.CENTER,false);
// printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false); // printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false);
// emptyLine(1); // emptyLine(1);
// dashBreak(); dotBreak();
lineBreak();
} }
protected void printKeyInfo() { protected void printKeyInfo() {
@ -988,33 +1028,32 @@ public abstract class BaseXPrint {
String traceNum = payDetail.getVoucherNo(); String traceNum = payDetail.getVoucherNo();
// String traceNum = SystemParamsOperation.getInstance().getCurrentSerialNum(); // String traceNum = SystemParamsOperation.getInstance().getCurrentSerialNum();
batchNum = payDetail.getBatchNo(); batchNum = payDetail.getBatchNo();
// printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("DATE :" + POSUtil.getInstance().formatDisplayDate(payDetail.getTransDate()), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("DATE :" + POSUtil.getInstance().formatDisplayDate(payDetail.getTransDate()), fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("TIME :" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("TIME :" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT, false);
if (payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1) { if (payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1) {
// printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("INV NO :" + invoiceNo , fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("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) { } 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,false); printer.appendPrnStr("BTH NO :" + batchNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false);
} else if (payDetail.getTransType().equals(SUMMARY)) { } else if (payDetail.getTransType().equals(SUMMARY)) {
printer.appendPrnStr("HOST :" + HOST_NAME_MPU + "", fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("HOST :" + HOST_NAME_MPU + "", fontNormal, AlignEnum.LEFT,false);
} }
/* 17 Sept 2024 Yoma requested to changed slip design for QR*/ /* 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[]{"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.printColumnsString(new String[]{"TID :" + payDetail.getTerminalNo(), ""}, new int[]{3, 1}, new int[]{0, 2}, innerResultCallback);
if (payDetail.getTransactionType() == TransactionsType.MMQR.value || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value){ if (payDetail.getTransactionType() == TransactionsType.MMQR.value || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value){
printer.appendPrnStr("SHORT CODE:" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("SHORT CODE :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false);
}else{ }else{
printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false);
} }
emptyLine(1); emptyLine(1);
printer.appendPrnStr(transType.replace("_", " "),fontNormal, AlignEnum.CENTER,true); printer.appendPrnStr(transType.replace("_", " "),fontNormal, AlignEnum.CENTER,true);
// printer.appendPrnStr("TRAN TYPE :" + transType.replace("_", " "),fontNormal, AlignEnum.LEFT,false);
if (!(payDetail.getQrTransStatus() != 1 && (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value || payDetail.getTransactionType() == TransactionsType.MMQR.value))) { if (!(payDetail.getQrTransStatus() != 1 && (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value || payDetail.getTransactionType() == TransactionsType.MMQR.value))) {
// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); // printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
@ -1022,6 +1061,36 @@ public abstract class BaseXPrint {
} }
protected void printDetailReportHeader(){
SimpleDateFormat date = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
String printedDate = date.format(new Date());
SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
String printedTime = time.format(new Date());
printer.appendPrnStr("PRINTED DATE", printedDate, fontNormal, false);
printer.appendPrnStr("", printedTime, fontNormal, false);
printer.appendPrnStr("DETAIL REPORT", fontNormal , AlignEnum.CENTER, false);
dotBreak();
}
protected void printTranHeader(String title){
SimpleDateFormat date = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
String printedDate = date.format(new Date());
SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
String printedTime = time.format(new Date());
printer.appendPrnStr("PRINTED DATE", printedDate, fontNormal, false);
printer.appendPrnStr("", printedTime, fontNormal, false);
printer.appendPrnStr(title, fontNormal , AlignEnum.CENTER, false);
// if (payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1) {
//// printer.appendPrnStr("TRACE NO:" + traceNum + " INV NO:" + invoiceNo, fontNormal, AlignEnum.LEFT,false);
// printer.appendPrnStr("INV NO :" + invoiceNo , fontNormal, AlignEnum.LEFT,false);
// }
dotBreak();
}
protected void printTransHeader(PayDetail payDetail, HostType hostType) { protected void printTransHeader(PayDetail payDetail, HostType hostType) {
String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo(); String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo();
String transType = payDetail.getTransType(); String transType = payDetail.getTransType();
@ -1112,11 +1181,11 @@ public abstract class BaseXPrint {
printer.appendPrnStr("Secondary Ip : " + secIpPort[0], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Ip : " + secIpPort[0], fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("Secondary Port: " + secIpPort[1], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Port: " + secIpPort[1], fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), fontNormal, AlignEnum.LEFT, false);
lineBreak(); dotBreak();
// ---------- SECONDARY HOST (optional) ---------- // ---------- SECONDARY HOST (optional) ----------
if (!TextUtils.isEmpty(sp.getSecHostName())) { if (!TextUtils.isEmpty(sp.getSecHostName())) {
printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true); printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true);
printer.appendPrnStr("Name : " + sp.getSecHostName(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Name : " + sp.getSecHostName(), fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("SHORT CODE : " + sp.getShortCode(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("SHORT CODE : " + sp.getShortCode(), fontNormal, AlignEnum.LEFT, false);
String[] secHostIp = splitIpAndPort(sp.getSecHostIpAddress()); String[] secHostIp = splitIpAndPort(sp.getSecHostIpAddress());
printer.appendPrnStr("Primary Ip : " + secHostIp[0], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Primary Ip : " + secHostIp[0], fontNormal, AlignEnum.LEFT, false);
@ -1125,7 +1194,7 @@ public abstract class BaseXPrint {
printer.appendPrnStr("Secondary Ip : " + secHostSecIp[0], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Ip : " + secHostSecIp[0], fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("Secondary Port: " + secHostSecIp[1], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Port: " + secHostSecIp[1], fontNormal, AlignEnum.LEFT, false);
printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), fontNormal, AlignEnum.LEFT, false);
lineBreak(); dotBreak();
printer.appendPrnStr("App Version : " + getAppVersion(), fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("App Version : " + getAppVersion(), fontNormal, AlignEnum.LEFT, false);
} }
} }

View File

@ -163,7 +163,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
printMerchantHeader(); printMerchantHeader();
printTransHeader(payDetail); printTransHeader(payDetail);
printTransDetailQR(payDetail); printTransDetailQR(payDetail);
LogUtil.d(TAG,"QR trans status:"+payDetail.getQrTransStatus()); // LogUtil.d(TAG,"QR trans status:"+payDetail.getQrTransStatus());
if (payDetail.getQrTransStatus() == 1) { if (payDetail.getQrTransStatus() == 1) {
printTransFooter(true,payDetail, isMerchantCopy); printTransFooter(true,payDetail, isMerchantCopy);
} else { } else {
@ -232,7 +232,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
setHeight(0x12); setHeight(0x12);
printLogo(); printLogo();
printMerchantHeader(); printMerchantHeader();
printTransHeader(payDetail, hostType); // printTransHeader(payDetail, hostType);
printTranHeader("DETAIL REPORT");
printTransDetailReport(lists,hostType); printTransDetailReport(lists,hostType);
// emptyLine(1); // emptyLine(1);
startPrintNex(); startPrintNex();
@ -311,23 +312,27 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
// payDetail.getCustomerMobile() // as channel type // payDetail.getCustomerMobile() // as channel type
if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1 ) { if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1 ) {
print2ColumnsStringNoSpace("PAYMENT TYPE ",": "+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile())); print2ColumnsStringNoSpace("PAYMENT TYPE",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
print2ColumnsStringNoSpace("TRXN REF ",": "+ payDetail.getReferNo()); print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
if(payDetail.getQrReferNo() != null && !payDetail.getQrReferNo().isEmpty()) { if(payDetail.getQrReferNo() != null && !payDetail.getQrReferNo().isEmpty()) {
print2ColumnsStringNoSpace("MMQR REF ",": "+ payDetail.getQrReferNo()); print2ColumnsStringNoSpace("MMQR REF ",":"+ payDetail.getQrReferNo());
} }
print2ColumnsStringNoSpace("TRXN ID",":"+ (payDetail.getQrTransId() == null || payDetail.getQrTransId().isEmpty() ? "-": payDetail.getQrTransId())); print2ColumnsStringNoSpace("TRXN ID ",":"+ (payDetail.getQrTransId() == null || payDetail.getQrTransId().isEmpty() ? "-": payDetail.getQrTransId()));
print2ColumnsStringNoSpace("STATUS ",": "+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus())); print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
} else if(payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value && payDetail.getQrTransStatus() == 1) { } else if(payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value && payDetail.getQrTransStatus() == 1) {
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo()); String originalDate = payDetail.getOriginalTransDate();
print2ColumnsStringNoSpace("TXN DATE/TIME",":"+ payDetail.getOriginalTransDate()); String tranDate = originalDate.split(" ")[0];
print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus())); String tranTime = originalDate.split(" ")[1];
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
print2ColumnsStringNoSpace("TXN DATE ",":"+ tranDate);
print2ColumnsStringNoSpace("TXN TIME ",":"+ tranTime);
print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
} else if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == -1) { } else if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == -1) {
print2ColumnsStringNoSpace("PAYMENT TYPE ",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile())); print2ColumnsStringNoSpace("PAYMENT TYPE",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo()); print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
print2ColumnsStringNoSpace("TXN TIME ",":"+ (payDetail.getOriginalTransDate() == null || payDetail.getOriginalTransDate().isEmpty() ? POSUtil.getInstance().getCurrentDateTimeForQR(): payDetail.getOriginalTransDate())); print2ColumnsStringNoSpace("TXN TIME ",":"+ (payDetail.getOriginalTransDate() == null || payDetail.getOriginalTransDate().isEmpty() ? POSUtil.getInstance().getCurrentDateTimeForQR(): payDetail.getOriginalTransDate()));
} }
@ -341,10 +346,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value; boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value;
boolean isQrDecimalEnable = SystemParamsOperation.getInstance().isQrDecimalEnable(); boolean isQrDecimalEnable = SystemParamsOperation.getInstance().isQrDecimalEnable();
lineBreak(); dotBreak();
print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable),fontLarge, AlignEnum.LEFT); print2ColumnsStringBoldCenter("AMOUNT :", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable) + " MMK": PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable) + " MMK",fontLarge, AlignEnum.LEFT);
lineBreak(); dotBreak();
// if(payDetail.getTransactionType() == TransactionsType.MMQR.value) { // if(payDetail.getTransactionType() == TransactionsType.MMQR.value) {
// String data = payDetail.getReferNo()+"-"+payDetail.getAmount()+"-"+payDetail.getQrTransId()+"-"+payDetail.getMerchantNo()+"-"+payDetail.getCustomerMobile().toUpperCase()+"-"+payDetail.getOriginalTransDate(); // String data = payDetail.getReferNo()+"-"+payDetail.getAmount()+"-"+payDetail.getQrTransId()+"-"+payDetail.getMerchantNo()+"-"+payDetail.getCustomerMobile().toUpperCase()+"-"+payDetail.getOriginalTransDate();
// //
@ -431,7 +435,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
setHeight(0x12); setHeight(0x12);
printLogo(); printLogo();
printMerchantHeader(); printMerchantHeader();
printTransHeader(payDetail, hostType); // printTransHeader(payDetail, hostType);
printTranHeader("SUMMARY REPORT");
printTransDetailSummary(payDetail); printTransDetailSummary(payDetail);
// printTransFooterSummary(); // printTransFooterSummary();