diff --git a/app/build.gradle b/app/build.gradle
index 1fb91b7..292a875 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz"
minSdk 24
targetSdk 33
- versionCode 11
- versionName "1.10"
+ versionCode 14
+ versionName "1.13"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 91a8970..9c36dce 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
index 3fb209b..0c3f03c 100644
--- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
+++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/TransactionResultFragment.java
@@ -94,7 +94,6 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
@Override
public void onStart() {
super.onStart();
-
}
@Override
@@ -172,7 +171,11 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
handleSettlementTransaction(siriusReq);
} else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) {
// startPrintProcess(false);
- showDeclineDialog("QR Payment Failed!");
+ if(transactionType == TransactionsType.MMQR_REFUND){
+ showDeclineDialog("QR Refund Failed!");
+ }else{
+ showDeclineDialog("QR Payment Failed!");
+ }
navigateToMainScreen();
} else if (isQRPaySuccessTransaction(transactionType, payDetail)) {
handleQRPaySuccessTransaction(payDetail, siriusReq);
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundDetailFragment.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundDetailFragment.java
index 92e489f..3439b9b 100644
--- a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundDetailFragment.java
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundDetailFragment.java
@@ -26,6 +26,8 @@ import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
import com.utsmm.kbz.util.DecimalDigitsInputFilter;
import com.utsmm.kbz.util.TransactionUtil;
+import java.text.DecimalFormat;
+
public class QRRefundDetailFragment extends DataBindingFragment {
@@ -43,6 +45,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
private EditText etReferenceNo, etOriginalAmount, etRefundAmount, etRefundReason;
private LinearLayout originalAmountLayout, refundAmountLayout;
+ private String originalRefundAmount;
+
private boolean isPartialRefund = false;
@@ -122,6 +126,10 @@ public class QRRefundDetailFragment extends DataBindingFragment {
}
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.setInvoiceNo(SystemParamsOperation.getInstance().getIncrementInvoiceNum());
@@ -144,8 +152,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
} else {
// Hide amount fields for original refund
isPartialRefund = false;
- originalAmountLayout.setVisibility(View.GONE);
- refundAmountLayout.setVisibility(View.GONE);
+ originalAmountLayout.setVisibility(View.VISIBLE);
+ refundAmountLayout.setVisibility(View.VISIBLE);
}
});
}
@@ -162,6 +170,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
String referenceNo = etReferenceNo.getText().toString().trim();
String refundReason = etRefundReason.getText().toString().trim();
+ String originalAmountStr = etOriginalAmount.getText().toString().trim();
+ String refundAmountStr = etRefundAmount.getText().toString().trim();
// Validate reference number
if (referenceNo.isEmpty()) {
@@ -171,8 +181,8 @@ public class QRRefundDetailFragment extends DataBindingFragment {
if (isPartialRefund) {
// Partial refund validation
- String originalAmountStr = etOriginalAmount.getText().toString().trim();
- String refundAmountStr = etRefundAmount.getText().toString().trim();
+// String originalAmountStr = etOriginalAmount.getText().toString().trim();
+// String refundAmountStr = etRefundAmount.getText().toString().trim();
if (originalAmountStr.isEmpty()) {
kPayViewModel.invalidAmountMsg.setValue("Enter original amount");
@@ -207,12 +217,16 @@ public class QRRefundDetailFragment extends DataBindingFragment {
kPayViewModel.setQrRefund(qrRefund);
} 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);
}
sharedViewModel.transactionsType.setValue(TransactionsType.MMQR_REFUND);
kPayViewModel.setPayDetail(payDetail);
+// sharedViewModel.amount.setValue(refundAmountStr);
routeId = R.id.action_qrRefundDetail_inputPasswordFragment;
safeNavigateToRouteId();
}
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java
index 2a8a6c8..ecc0852 100644
--- a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java
@@ -127,7 +127,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
response -> {
- handleRefundResponse(response, referenceNo);
+ handleRefundResponse(response, referenceNo, originalAmount);
},
throwable -> {
LogUtil.e(TAG, "Refund error: " + throwable.getMessage());
@@ -141,14 +141,12 @@ public class QRRefundProcessFragment extends DataBindingFragment {
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())) {
LogUtil.d(TAG, "Refund successful!");
String refundAmount = response.getResponse().getRefundAmount();
- Log.d(TAG, "refund amount -> " + refundAmount);
long text = POSUtil.getInstance().convertAmount(refundAmount);
- Log.d(TAG, "refund amount but long -> " + text);
String dateTime = SystemDateTime.getTodayDateFormat() + " " + SystemDateTime.getTodayTimeFormat();
payDetail.setTC(response.getResponse().getRefundStatus());
@@ -185,6 +183,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
if (response != null && response.getResponse() != null && response.getResponse().getMsg() != null) {
errorMsg = response.getResponse().getMsg();
}
+
payDetail.setTradeResultDes(errorMsg);
EReceiptRequest request = EReceiptUtil.getInstance().generateQRRefundReceipt(
"0",
@@ -196,7 +195,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
TransResultStatus.FAIL
);
sharedViewModel.pushReceipt(request);
-
+ sharedViewModel.amount.setValue(orgAmount);
sharedViewModel.payDetail.setValue(payDetail);
navigateToNext();
}
diff --git a/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java b/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
index 908b68a..a3a8b4c 100644
--- a/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
+++ b/app/src/main/java/com/utsmm/kbz/util/tms/TMSUtil.java
@@ -319,6 +319,7 @@ public class TMSUtil {
Log.d(TAG,"Connected to Wifi");
return "WIFI";
}
- }return "No Connection";
+ }
+ return "No Connection";
}
}
diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml
index 53d56cc..9dab6ac 100644
--- a/app/src/main/res/xml/network_security_config.xml
+++ b/app/src/main/res/xml/network_security_config.xml
@@ -1,14 +1,16 @@
-
+
159.223.40.176
128.199.170.203
152.42.199.193
api.kbzpay.com
-
- receipt-nest.utsmyanmar.com
-
sirius-nest.utsmyanmar.com
-
\ No newline at end of file
+
+
+ receipt-nest.utsmyanmar.com
+
+
+
diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java
index 4e5b211..b0f4aa5 100644
--- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java
+++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/PrintXImpl.java
@@ -162,7 +162,7 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
printMerchantHeader();
printTransHeader(payDetail);
printTransDetailQR(payDetail);
- LogUtil.d(TAG,"QR trans status:"+payDetail.getQrTransStatus());
+// LogUtil.d(TAG,"QR trans status:"+payDetail.getQrTransStatus());
if (payDetail.getQrTransStatus() == 1) {
printTransFooter(true,payDetail, isMerchantCopy);
} else {
@@ -232,7 +232,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
setHeight(0x12);
printLogo();
printMerchantHeader();
- printTransHeader(payDetail, hostType);
+// printTransHeader(payDetail, hostType);
+ printTranHeader("DETAIL REPORT");
printTransDetailReport(lists,hostType);
// emptyLine(1);
startPrintNex();
@@ -310,23 +311,27 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
// 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()));
- print2ColumnsStringNoSpace("TRXN REF ",": "+ payDetail.getReferNo());
+ print2ColumnsStringNoSpace("PAYMENT TYPE",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
+ print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
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("STATUS ",": "+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
+ print2ColumnsStringNoSpace("TRXN ID ",":"+ (payDetail.getQrTransId() == null || payDetail.getQrTransId().isEmpty() ? "-": payDetail.getQrTransId()));
+ print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
} else if(payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value && payDetail.getQrTransStatus() == 1) {
- print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
- print2ColumnsStringNoSpace("TXN DATE/TIME",":"+ payDetail.getOriginalTransDate());
- print2ColumnsStringNoSpace("STATUS ",":"+ PrintUtils.getInstance().getQrTransStatus(payDetail.getQrTransStatus()));
+ String originalDate = payDetail.getOriginalTransDate();
+ String tranDate = originalDate.split(" ")[0];
+ 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) {
- print2ColumnsStringNoSpace("PAYMENT TYPE ",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
- print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
- print2ColumnsStringNoSpace("TXN TIME ",":"+ (payDetail.getOriginalTransDate() == null || payDetail.getOriginalTransDate().isEmpty() ? POSUtil.getInstance().getCurrentDateTimeForQR(): payDetail.getOriginalTransDate()));
+ print2ColumnsStringNoSpace("PAYMENT TYPE",":"+ (payDetail.getCustomerMobile() == null || payDetail.getCustomerMobile().isEmpty() ? "-": payDetail.getCustomerMobile()));
+ print2ColumnsStringNoSpace("TRXN REF ",":"+ payDetail.getReferNo());
+ print2ColumnsStringNoSpace("TXN TIME ",":"+ (payDetail.getOriginalTransDate() == null || payDetail.getOriginalTransDate().isEmpty() ? POSUtil.getInstance().getCurrentDateTimeForQR(): payDetail.getOriginalTransDate()));
}
@@ -340,10 +345,9 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value;
boolean isQrDecimalEnable = SystemParamsOperation.getInstance().isQrDecimalEnable();
- lineBreak();
- print2ColumnsStringBoldCenter("TOTAL MMK", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable): PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable),fontLarge, AlignEnum.LEFT);
- lineBreak();
-
+ dotBreak();
+ print2ColumnsStringBoldCenter("AMOUNT :", isNeedMinusSign? "- "+PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable) + " MMK": PrintUtils.getInstance().getSeparatorNumberFormat(payDetail.getAmount(), isQrDecimalEnable) + " MMK",fontLarge, AlignEnum.LEFT);
+ dotBreak();
// if(payDetail.getTransactionType() == TransactionsType.MMQR.value) {
// 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);
printLogo();
printMerchantHeader();
- printTransHeader(payDetail, hostType);
+// printTransHeader(payDetail, hostType);
+ printTranHeader("SUMMARY REPORT");
printTransDetailSummary(payDetail);
// printTransFooterSummary();