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 834e683..5f69345 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 @@ -5,6 +5,7 @@ import static com.utsmyanmar.paylibs.utils.enums.CurrencyType.MMK; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Typeface; +import android.icu.util.LocaleData; import android.os.Build; import android.os.RemoteException; import android.text.TextUtils; @@ -39,6 +40,8 @@ import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; 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.Date; import java.util.LinkedHashMap; @@ -191,6 +194,10 @@ public abstract class BaseXPrint { } + protected void dotBreak(){ + printer.appendPrnStr(new String(new char[29]).replace("\0", "."), fontNormal, AlignEnum.LEFT, false); + } + protected void dashBreak() { printer.appendPrnStr("-----------------------------", fontNormal, AlignEnum.LEFT,false); @@ -557,7 +564,6 @@ public abstract class BaseXPrint { protected void printTransDetailSummary(PayDetail payDetail) { - String MMK = "MMK"; SettleData settleData = payDetail.getSettleDataObj(); boolean isQrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); @@ -572,49 +578,19 @@ public abstract class BaseXPrint { return; } 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 { printer.appendPrnStr("CARD NAME:" + payDetail.getAccountType(), 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); // 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); + emptyLine(1); + + printer.appendPrnStr("(COUNT)TRANS", "AMOUNT(MMK)", 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); @@ -632,17 +608,56 @@ public abstract class BaseXPrint { 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) { + 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); +// 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); - 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); - 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); @@ -729,9 +744,11 @@ public abstract class BaseXPrint { } 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) { // printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); printer.appendPrnStr(first + " " + second + " " + third, fontNormal, AlignEnum.LEFT,false); @@ -773,23 +790,22 @@ public abstract class BaseXPrint { print2ColumnsString("AMOUNT", ""); print2ColumnsString("REF NUM", ""); } else if (hostType == HostType.QR) { - print2ColumnsString("PAYMENT NAME", ""); - print2ColumnsString("DATE", "TIME"); - print2ColumnsString("TRANSACTION", "TRACE NO"); - print2ColumnsString("TRXN ID", ""); - print2ColumnsString("AMOUNT", ""); +// print2ColumnsString("PAYMENT NAME", ""); +// print2ColumnsString("DATE", "TIME"); +// print2ColumnsString("TRANSACTION", "TRACE NO"); +// print2ColumnsString("TRXN ID", ""); +// print2ColumnsString("AMOUNT", ""); } // breakingLine(); - lineBreak(); long totalAmount = 0; for (PayDetail pay : lists) { - boolean isNeedMinusSign = pay.getTransactionType() == TransactionsType.VOID.value || pay.getTransactionType() == TransactionsType.REFUND.value || pay.getTransactionType() == TransactionsType.MMQR_REFUND.value; boolean isDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable(); + if (hostType == HostType.MPU || hostType == HostType.VISA_MASTER) { print2ColumnsString(pay.getAccountType(), PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo())); print2ColumnsString("**/**", pay.getVoucherNo()); @@ -797,20 +813,43 @@ public abstract class BaseXPrint { print2ColumnsString(pay.getReferNo(), ""); } 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) { - 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) , ""); + printString("RRN :" + pay.getReferNo()); } + 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) , ""); +// } } @@ -1018,7 +1057,7 @@ public abstract class BaseXPrint { // merchantPhoneNo = "MERCHANT PHONENO"; // } if(TextUtils.equals(terminalName, "") || terminalName == null){ - terminalName = "Terminal Name"; + terminalName = ""; } // emptyLine(1); // printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false); @@ -1028,8 +1067,7 @@ public abstract class BaseXPrint { printer.appendPrnStr(merchantAddress3, fontNormal, AlignEnum.CENTER,false); // printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false); // emptyLine(1); -// dashBreak(); - lineBreak(); + dotBreak(); } protected void printKeyInfo() { @@ -1086,34 +1124,27 @@ public abstract class BaseXPrint { boolean isCardTransaction = !payDetail.getTransType().equals(SETTLEMENT) && !payDetail.getTransType().equals(SUMMARY) && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value; // String traceNum = SystemParamsOperation.getInstance().getCurrentSerialNum(); - - batchNum = payDetail.getBatchNo(); - if(isCardTransaction) { - printer.appendPrnStr("DATE :" + payDetail.getTransDate() + " TIME:" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT,false); - } else { - printer.appendPrnStr("DATE :" + POSUtil.getInstance().formatDisplayDate(payDetail.getTransDate()), fontNormal, AlignEnum.LEFT, false); - printer.appendPrnStr("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("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,false); - printer.appendPrnStr("INV NO :" + invoiceNo , fontNormal, AlignEnum.LEFT,false); - } else if (isCardTransaction) { - printer.appendPrnStr("BTH NO :" + batchNum + " 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) { + 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,false); + 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); 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{ - printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false); - 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); } if(isSettlement) { @@ -1131,6 +1162,7 @@ public abstract class BaseXPrint { 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))) { // printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false); @@ -1138,6 +1170,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) { String invoiceNo = payDetail.getInvoiceNo().isEmpty() ? SystemParamsOperation.getInstance().getCurrentInvoiceNum() : payDetail.getInvoiceNo(); String transType = payDetail.getTransType(); @@ -1228,11 +1290,11 @@ public abstract class BaseXPrint { printer.appendPrnStr("Secondary Ip : " + secIpPort[0], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Port: " + secIpPort[1], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), fontNormal, AlignEnum.LEFT, false); - lineBreak(); + dotBreak(); // ---------- SECONDARY HOST (optional) ---------- if (!TextUtils.isEmpty(sp.getSecHostName())) { 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); String[] secHostIp = splitIpAndPort(sp.getSecHostIpAddress()); printer.appendPrnStr("Primary Ip : " + secHostIp[0], fontNormal, AlignEnum.LEFT, false); @@ -1241,7 +1303,7 @@ public abstract class BaseXPrint { printer.appendPrnStr("Secondary Ip : " + secHostSecIp[0], fontNormal, AlignEnum.LEFT, false); printer.appendPrnStr("Secondary Port: " + secHostSecIp[1], 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); } }