Merge remote-tracking branch 'origin/merge_latest_SIT' into merge_latest_SIT
# Conflicts: # paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java
This commit is contained in:
commit
37a3fb27bc
@ -14,8 +14,8 @@ android {
|
|||||||
applicationId "com.utsmm.kbz"
|
applicationId "com.utsmm.kbz"
|
||||||
minSdk 24
|
minSdk 24
|
||||||
targetSdk 33
|
targetSdk 33
|
||||||
versionCode 11
|
versionCode 14
|
||||||
versionName "1.10"
|
versionName "1.13"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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" />
|
||||||
|
|||||||
@ -94,7 +94,6 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -172,7 +171,11 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
|
|||||||
handleSettlementTransaction(siriusReq);
|
handleSettlementTransaction(siriusReq);
|
||||||
} else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) {
|
} else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) {
|
||||||
// startPrintProcess(false);
|
// startPrintProcess(false);
|
||||||
|
if(transactionType == TransactionsType.MMQR_REFUND){
|
||||||
|
showDeclineDialog("QR Refund Failed!");
|
||||||
|
}else{
|
||||||
showDeclineDialog("QR Payment Failed!");
|
showDeclineDialog("QR Payment Failed!");
|
||||||
|
}
|
||||||
navigateToMainScreen();
|
navigateToMainScreen();
|
||||||
} else if (isQRPaySuccessTransaction(transactionType, payDetail)) {
|
} else if (isQRPaySuccessTransaction(transactionType, payDetail)) {
|
||||||
handleQRPaySuccessTransaction(payDetail, siriusReq);
|
handleQRPaySuccessTransaction(payDetail, siriusReq);
|
||||||
|
|||||||
@ -26,6 +26,8 @@ import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
|||||||
import com.utsmm.kbz.util.DecimalDigitsInputFilter;
|
import com.utsmm.kbz.util.DecimalDigitsInputFilter;
|
||||||
import com.utsmm.kbz.util.TransactionUtil;
|
import com.utsmm.kbz.util.TransactionUtil;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
|
|
||||||
public class QRRefundDetailFragment extends DataBindingFragment {
|
public class QRRefundDetailFragment extends DataBindingFragment {
|
||||||
|
|
||||||
@ -43,6 +45,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
private EditText etReferenceNo, etOriginalAmount, etRefundAmount, etRefundReason;
|
private EditText etReferenceNo, etOriginalAmount, etRefundAmount, etRefundReason;
|
||||||
private LinearLayout originalAmountLayout, refundAmountLayout;
|
private LinearLayout originalAmountLayout, refundAmountLayout;
|
||||||
|
|
||||||
|
private String originalRefundAmount;
|
||||||
|
|
||||||
private boolean isPartialRefund = false;
|
private boolean isPartialRefund = false;
|
||||||
|
|
||||||
|
|
||||||
@ -122,6 +126,10 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initData() {
|
private void initData() {
|
||||||
|
double realAmount = payDetail.getAmount() / 100.0;
|
||||||
|
DecimalFormat df = new DecimalFormat("0.00");
|
||||||
|
originalRefundAmount = df.format(realAmount);
|
||||||
|
|
||||||
payDetail = TransactionUtil.getInstance().initWalletTransaction(TransactionsType.MMQR_REFUND);
|
payDetail = TransactionUtil.getInstance().initWalletTransaction(TransactionsType.MMQR_REFUND);
|
||||||
payDetail.setInvoiceNo(SystemParamsOperation.getInstance().getIncrementInvoiceNum());
|
payDetail.setInvoiceNo(SystemParamsOperation.getInstance().getIncrementInvoiceNum());
|
||||||
|
|
||||||
@ -144,8 +152,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
} else {
|
} else {
|
||||||
// Hide amount fields for original refund
|
// Hide amount fields for original refund
|
||||||
isPartialRefund = false;
|
isPartialRefund = false;
|
||||||
originalAmountLayout.setVisibility(View.GONE);
|
originalAmountLayout.setVisibility(View.VISIBLE);
|
||||||
refundAmountLayout.setVisibility(View.GONE);
|
refundAmountLayout.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -162,6 +170,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
|
|
||||||
String referenceNo = etReferenceNo.getText().toString().trim();
|
String referenceNo = etReferenceNo.getText().toString().trim();
|
||||||
String refundReason = etRefundReason.getText().toString().trim();
|
String refundReason = etRefundReason.getText().toString().trim();
|
||||||
|
String originalAmountStr = etOriginalAmount.getText().toString().trim();
|
||||||
|
String refundAmountStr = etRefundAmount.getText().toString().trim();
|
||||||
|
|
||||||
// Validate reference number
|
// Validate reference number
|
||||||
if (referenceNo.isEmpty()) {
|
if (referenceNo.isEmpty()) {
|
||||||
@ -171,8 +181,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
|
|
||||||
if (isPartialRefund) {
|
if (isPartialRefund) {
|
||||||
// Partial refund validation
|
// Partial refund validation
|
||||||
String originalAmountStr = etOriginalAmount.getText().toString().trim();
|
// String originalAmountStr = etOriginalAmount.getText().toString().trim();
|
||||||
String refundAmountStr = etRefundAmount.getText().toString().trim();
|
// String refundAmountStr = etRefundAmount.getText().toString().trim();
|
||||||
|
|
||||||
if (originalAmountStr.isEmpty()) {
|
if (originalAmountStr.isEmpty()) {
|
||||||
kPayViewModel.invalidAmountMsg.setValue("Enter original amount");
|
kPayViewModel.invalidAmountMsg.setValue("Enter original amount");
|
||||||
@ -207,12 +217,16 @@ public class QRRefundDetailFragment extends DataBindingFragment {
|
|||||||
kPayViewModel.setQrRefund(qrRefund);
|
kPayViewModel.setQrRefund(qrRefund);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
QRRefund qrRefund = new QRRefund(referenceNo, "0", etOriginalAmount.getText().toString().trim(), refundReason);
|
// String originalAmountStr = etOriginalAmount.getText().toString().trim();
|
||||||
|
// String refundAmountStr = etRefundAmount.getText().toString().trim();
|
||||||
|
|
||||||
|
QRRefund qrRefund = new QRRefund(referenceNo, refundAmountStr, originalRefundAmount, refundReason);
|
||||||
|
|
||||||
kPayViewModel.setQrRefund(qrRefund);
|
kPayViewModel.setQrRefund(qrRefund);
|
||||||
}
|
}
|
||||||
sharedViewModel.transactionsType.setValue(TransactionsType.MMQR_REFUND);
|
sharedViewModel.transactionsType.setValue(TransactionsType.MMQR_REFUND);
|
||||||
kPayViewModel.setPayDetail(payDetail);
|
kPayViewModel.setPayDetail(payDetail);
|
||||||
|
// sharedViewModel.amount.setValue(refundAmountStr);
|
||||||
routeId = R.id.action_qrRefundDetail_inputPasswordFragment;
|
routeId = R.id.action_qrRefundDetail_inputPasswordFragment;
|
||||||
safeNavigateToRouteId();
|
safeNavigateToRouteId();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -127,7 +127,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(
|
.subscribe(
|
||||||
response -> {
|
response -> {
|
||||||
handleRefundResponse(response, referenceNo);
|
handleRefundResponse(response, referenceNo, originalAmount);
|
||||||
},
|
},
|
||||||
throwable -> {
|
throwable -> {
|
||||||
LogUtil.e(TAG, "Refund error: " + throwable.getMessage());
|
LogUtil.e(TAG, "Refund error: " + throwable.getMessage());
|
||||||
@ -141,14 +141,12 @@ public class QRRefundProcessFragment extends DataBindingFragment {
|
|||||||
refundDisposable.add(refundDi);
|
refundDisposable.add(refundDi);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleRefundResponse(KPayRefund.RefundResponse response, String referenceNo) {
|
private void handleRefundResponse(KPayRefund.RefundResponse response, String referenceNo, String orgAmount) {
|
||||||
if (response != null && response.getResponse() != null && "REFUND_SUCCESS".equalsIgnoreCase(response.getResponse().getRefundStatus())) {
|
if (response != null && response.getResponse() != null && "REFUND_SUCCESS".equalsIgnoreCase(response.getResponse().getRefundStatus())) {
|
||||||
LogUtil.d(TAG, "Refund successful!");
|
LogUtil.d(TAG, "Refund successful!");
|
||||||
|
|
||||||
String refundAmount = response.getResponse().getRefundAmount();
|
String refundAmount = response.getResponse().getRefundAmount();
|
||||||
Log.d(TAG, "refund amount -> " + refundAmount);
|
|
||||||
long text = POSUtil.getInstance().convertAmount(refundAmount);
|
long text = POSUtil.getInstance().convertAmount(refundAmount);
|
||||||
Log.d(TAG, "refund amount but long -> " + text);
|
|
||||||
|
|
||||||
String dateTime = SystemDateTime.getTodayDateFormat() + " " + SystemDateTime.getTodayTimeFormat();
|
String dateTime = SystemDateTime.getTodayDateFormat() + " " + SystemDateTime.getTodayTimeFormat();
|
||||||
payDetail.setTC(response.getResponse().getRefundStatus());
|
payDetail.setTC(response.getResponse().getRefundStatus());
|
||||||
@ -185,6 +183,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
|
|||||||
if (response != null && response.getResponse() != null && response.getResponse().getMsg() != null) {
|
if (response != null && response.getResponse() != null && response.getResponse().getMsg() != null) {
|
||||||
errorMsg = response.getResponse().getMsg();
|
errorMsg = response.getResponse().getMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
payDetail.setTradeResultDes(errorMsg);
|
payDetail.setTradeResultDes(errorMsg);
|
||||||
EReceiptRequest request = EReceiptUtil.getInstance().generateQRRefundReceipt(
|
EReceiptRequest request = EReceiptUtil.getInstance().generateQRRefundReceipt(
|
||||||
"0",
|
"0",
|
||||||
@ -196,7 +195,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
|
|||||||
TransResultStatus.FAIL
|
TransResultStatus.FAIL
|
||||||
);
|
);
|
||||||
sharedViewModel.pushReceipt(request);
|
sharedViewModel.pushReceipt(request);
|
||||||
|
sharedViewModel.amount.setValue(orgAmount);
|
||||||
sharedViewModel.payDetail.setValue(payDetail);
|
sharedViewModel.payDetail.setValue(payDetail);
|
||||||
navigateToNext();
|
navigateToNext();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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>
|
||||||
@ -162,7 +162,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();
|
||||||
@ -319,8 +320,12 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
|||||||
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) {
|
||||||
|
String originalDate = payDetail.getOriginalTransDate();
|
||||||
|
String tranDate = originalDate.split(" ")[0];
|
||||||
|
String tranTime = originalDate.split(" ")[1];
|
||||||
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
|
print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
|
||||||
print2ColumnsStringNoSpace("TXN DATE/TIME",":"+ payDetail.getOriginalTransDate());
|
print2ColumnsStringNoSpace("TXN DATE ",":"+ tranDate);
|
||||||
|
print2ColumnsStringNoSpace("TXN TIME ",":"+ tranTime);
|
||||||
print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
|
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) {
|
||||||
@ -340,10 +345,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();
|
||||||
//
|
//
|
||||||
@ -430,7 +434,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();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user