modified the physical receipt

This commit is contained in:
MooN 2025-12-21 11:10:37 +06:30
parent 05eed5776d
commit e864630aaf
11 changed files with 57 additions and 23 deletions

View File

@ -28,6 +28,7 @@ import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.model.SettleData;
import com.utsmyanmar.paylibs.print.PrintUtils;
import com.utsmyanmar.paylibs.system.BaseErrorCode;
import com.utsmyanmar.paylibs.utils.POSUtil;
import com.utsmyanmar.paylibs.utils.core_utils.ByteUtil;
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
import com.utsmyanmar.paylibs.utils.enums.CardScheme;
@ -84,7 +85,8 @@ public abstract class BaseXPrint {
protected int fontSmall = 16;
// protected FontEntity fontSmall = new FontEntity(DotMatrixFontEnum.CH_SONG_20X20, DotMatrixFontEnum.ASC_SONG_8X16);
protected int fontNormal = 20;
protected int fontNormal = 21;
protected int fontLarge = 22;
// 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);
@ -117,13 +119,14 @@ public abstract class BaseXPrint {
Resources resources = PayLibsUtils.getInstance().context.getResources();
// Typeface typeface = ResourcesCompat.getFont(PayLibsUtils.getInstance().context, R.font.consolas);
// printer.setTypeface(typeface);
printer.setTypeface(Typeface.createFromAsset(PayLibsUtils.getInstance().context.getAssets(), "fonts/firacode_regular.ttf"));
// printer.setTypeface(Typeface.createFromAsset(PayLibsUtils.getInstance().context.getAssets(), "fonts/firacode_regular.ttf"));
printer.setTypeface(Typeface.createFromAsset(PayLibsUtils.getInstance().context.getAssets(), "fonts/fira_code_semibold.ttf"));
printer.setGray(getGrayLevel());
}
private GrayLevelEnum getGrayLevel() {
int gray = 2;
int gray = 1;
GrayLevelEnum grayLevelEnum = GrayLevelEnum.LEVEL_1;
@ -186,12 +189,12 @@ public abstract class BaseXPrint {
}
protected void lineBreak() {
printer.appendPrnStr("******************************", fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("*****************************", fontNormal, AlignEnum.LEFT,false);
}
protected void dashBreak() {
printer.appendPrnStr("------------------------------", fontNormal, AlignEnum.LEFT,false);
printer.appendPrnStr("-----------------------------", fontNormal, AlignEnum.LEFT,false);
}
@ -380,7 +383,9 @@ public abstract class BaseXPrint {
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("TIME :" + payDetail.getTransTime(), fontNormal, AlignEnum.LEFT, false);
if (Objects.equals(payDetail.getAccountType(), CardScheme.MPU_CTLS.name)) {
hostName = HOST_NAME_MPU;
} else {
@ -627,6 +632,10 @@ public abstract class BaseXPrint {
printer.appendPrnStr(first + " " + second, fontNormal, align,true);
}
protected void print2ColumnsStringBoldCenter(String first, String second, int fontSize, AlignEnum align) {
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);
@ -778,6 +787,9 @@ public abstract class BaseXPrint {
cvmText = "NO SIGNATURE REQUIRED";
break;
}
if(payDetail.getTransactionType() == TransactionsType.MMQR.value || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value){
cvmText = "";
}
addSignatureBitmap(payDetail);
@ -791,10 +803,11 @@ public abstract class BaseXPrint {
// }
emptyLine(0);
printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER,false);
// 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,false);
// printer.appendPrnStr("ACCORDING TO THE ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false);
} else {
printer.appendPrnStr("I AGREE TO PAY THE ABOVE TOTAL AMOUNT", fontSmall, AlignEnum.CENTER,false);
printer.appendPrnStr("ACCORDING TO THE CARD ISSUER AGREEMENT", fontSmall, AlignEnum.CENTER,false);
}
@ -846,12 +859,14 @@ public abstract class BaseXPrint {
String merchantAddress = "";
String merchantAddress2 = "";
String merchantPhoneNo = "";
String terminalName = "";
merchantName = SystemParamsOperation.getInstance().getMerchantName();
receiptHeader = SystemParamsOperation.getInstance().getReceiptHeader();
merchantAddress = SystemParamsOperation.getInstance().getMerchantAddress();
merchantAddress2 = SystemParamsOperation.getInstance().getMerchantAddress2();
merchantPhoneNo = SystemParamsOperation.getInstance().getMerchantPhoneNo();
terminalName = SystemParamsOperation.getInstance().getTerminalName();
if (receiptHeader == null || TextUtils.equals(receiptHeader, "") || receiptHeader.trim().isEmpty()) {
receiptHeader = merchantName;
@ -865,13 +880,18 @@ public abstract class BaseXPrint {
// if (TextUtils.equals(merchantPhoneNo, "") || merchantPhoneNo == null) {
// merchantPhoneNo = "MERCHANT PHONENO";
// }
if(TextUtils.equals(terminalName, "") || terminalName == null){
terminalName = "Terminal Name";
}
printer.appendPrnStr(receiptHeader, fontNormal, AlignEnum.CENTER,false);
printer.appendPrnStr(merchantAddress, fontNormal, AlignEnum.CENTER,false);
printer.appendPrnStr(merchantAddress2, fontNormal, AlignEnum.CENTER,false);
printer.appendPrnStr(terminalName, fontNormal, AlignEnum.LEFT, false);
// printer.appendPrnStr(merchantPhoneNo, fontNormal, AlignEnum.CENTER,false);
emptyLine(1);
// emptyLine(1);
// dashBreak();
lineBreak();
}
protected void printKeyInfo() {
@ -925,8 +945,9 @@ public abstract class BaseXPrint {
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("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);
} else if (!payDetail.getTransType().equals(SETTLEMENT) && !payDetail.getTransType().equals(SUMMARY) && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value) {
@ -949,7 +970,6 @@ public abstract class BaseXPrint {
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,false);
// printer.appendPrnStr("\n", fontNormal, AlignEnum.LEFT,false);
}

View File

@ -40,7 +40,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
SimpleDateFormat dfm = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.getDefault());
currentTime = dfm.format(new Date());
BitmapFactory.Options opts = new BitmapFactory.Options();
bitmap = BitmapFactory.decodeResource(resources, R.drawable.print_kbz_logo_new_1, opts);
bitmap = BitmapFactory.decodeResource(resources, R.drawable.print_kbz_logo_new, opts);
}
@ -172,7 +172,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
}
emptyLine(1);
// emptyLine(1);
startPrintNex();
} catch (RemoteException | NullPointerException e) {
@ -234,7 +234,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
printTransHeader(payDetail);
printTransDetailReport(lists,hostType);
emptyLine(1);
// emptyLine(1);
startPrintNex();
} catch (RemoteException e) {
e.printStackTrace();
@ -310,9 +310,6 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
try {
// payDetail.getCustomerMobile() // as channel type
if(payDetail.getTransactionType() == TransactionsType.MMQR.value && payDetail.getQrTransStatus() == 1 ) {
print2ColumnsStringNoSpace("PAYMENT TYPE ",": "+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile().toUpperCase()));
print2ColumnsStringNoSpace("TRXN REF ",": "+ payDetail.getReferNo());
@ -342,7 +339,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
if (payDetail.getQrTransStatus() == 1) {
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value;
print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()), AlignEnum.LEFT);
lineBreak();
print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount()),fontLarge, AlignEnum.LEFT);
lineBreak();
// if(payDetail.getTransactionType() == TransactionsType.MMQR.value) {
// String data = payDetail.getReferNo()+"-"+payDetail.getAmount()+"-"+payDetail.getQrTransId()+"-"+payDetail.getMerchantNo()+"-"+payDetail.getCustomerMobile().toUpperCase()+"-"+payDetail.getOriginalTransDate();

View File

@ -553,6 +553,21 @@ public class POSUtil {
}
public String formatDisplayDate(String input){
SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
SimpleDateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy", Locale.getDefault());
try {
Date date = inputFormat.parse(input);
return outputFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return input;
}
public Date getDateByTransDateTime(String transDate,String transTime) {
String dateFormatPattern = "dd/MM/yy HH:mm";
SimpleDateFormat formatter = new SimpleDateFormat(dateFormatPattern,Locale.getDefault());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB