QR settlement need to adjust slip design.
This commit is contained in:
parent
eebe9ac2c6
commit
f91ae09be7
File diff suppressed because one or more lines are too long
@ -11,7 +11,7 @@ android {
|
||||
compileSdk 34
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.utsmm.kbz.sit"
|
||||
applicationId "com.utsmm.kbz"
|
||||
minSdk 24
|
||||
targetSdk 33
|
||||
versionCode 1
|
||||
|
||||
@ -178,7 +178,7 @@ public class EmvReadCardFragment extends DataBindingFragment {
|
||||
if(payDetails.size() > 0) {
|
||||
LogUtil.d(TAG,"Pre Auth Comp size :"+payDetails.size());
|
||||
lists.addAll(payDetails);
|
||||
sharedViewModel.payDetailList.postValue(payDetails);
|
||||
// sharedViewModel.payDetailList.postValue(payDetails);
|
||||
} else {
|
||||
LogUtil.d(TAG,"Pre Auth Comp data not found!");
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ public class InputPasswordFragment extends DataBindingFragment implements DataBi
|
||||
break;
|
||||
case SETTLEMENT:
|
||||
inputPasswordViewModel.passwordType.setValue(InputPasswordType.SETTLEMENT);
|
||||
routeId = R.id.action_inputPasswordFragment_to_settlementTransactionFragment;
|
||||
routeId = R.id.action_inputPasswordFragment_to_selectSettlementFragment;
|
||||
break;
|
||||
case SETTING:
|
||||
inputPasswordViewModel.passwordType.setValue(InputPasswordType.SETTING);
|
||||
|
||||
@ -319,7 +319,7 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
|
||||
@Override
|
||||
public void printerReady() {
|
||||
if(isSettlement) {
|
||||
sharedViewModel.startPrintProcessSettlement();
|
||||
sharedViewModel.startPrintSettlement();
|
||||
return;
|
||||
}
|
||||
sharedViewModel.startPrintProcess();
|
||||
|
||||
@ -64,14 +64,14 @@ public class SharedViewModel extends ViewModel {
|
||||
|
||||
public SingleLiveEvent<String> processCode = new SingleLiveEvent<>();
|
||||
|
||||
|
||||
public SingleLiveEvent<PayDetail> payDetail = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<List<PayDetail>> payDetails = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<PrintStatus> printStatus = new SingleLiveEvent<>();
|
||||
public SingleLiveEvent<String> merchantName = new SingleLiveEvent<>();
|
||||
|
||||
public SingleLiveEvent<String> transactionName = new SingleLiveEvent<>();
|
||||
|
||||
/*Apr 28 2022*/
|
||||
public SingleLiveEvent<List<PayDetail>> payDetailList = new SingleLiveEvent<>();
|
||||
|
||||
/*May 16 2022*/
|
||||
public SingleLiveEvent<Boolean> isEcr = new SingleLiveEvent<>();
|
||||
@ -396,7 +396,16 @@ public class SharedViewModel extends ViewModel {
|
||||
|
||||
}
|
||||
|
||||
public void startPrintProcessSettlement() {
|
||||
public void startPrintSettlement() {
|
||||
if(payDetail.getValue() == null) return;
|
||||
if(payDetail.getValue().getTransactionType() == TransactionsType.SETTLEMENT.value) {
|
||||
startPrintProcessSettlement();
|
||||
} else {
|
||||
startPrintProcessQRSettlement();
|
||||
}
|
||||
}
|
||||
|
||||
private void startPrintProcessSettlement() {
|
||||
|
||||
if(payDetail.getValue() == null) return;
|
||||
|
||||
@ -411,8 +420,23 @@ public class SharedViewModel extends ViewModel {
|
||||
|
||||
}
|
||||
});
|
||||
/*POS */
|
||||
// PrintReceipt.getInstance().printSettlementReceiptPOS(settleData.getSaleCount(), settleData.getSaleAmount(), settleData.getRefundCount(), settleData.getRefundAmount(), settleData.getPreAuthCount(), settleData.getPreAuthAmount(), true);
|
||||
}
|
||||
|
||||
private void startPrintProcessQRSettlement() {
|
||||
|
||||
if(payDetail.getValue() == null && payDetails.getValue() == null) return;
|
||||
|
||||
PrintXReceipt.getInstance().printQRSettlementReport(payDetail.getValue(),payDetails.getValue(), new PrintXStatus() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,250 @@
|
||||
package com.utsmm.kbz.ui.settlement;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.utsmm.kbz.util.EReceiptUtil;
|
||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest;
|
||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||
import com.utsmyanmar.paylibs.model.PayDetail;
|
||||
import com.utsmyanmar.paylibs.model.SettleData;
|
||||
import com.utsmyanmar.paylibs.model.TradeData;
|
||||
import com.utsmyanmar.paylibs.utils.POSUtil;
|
||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||
import com.utsmyanmar.paylibs.utils.enums.HostType;
|
||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
|
||||
import com.utsmyanmar.paylibs.utils.params.Params;
|
||||
import com.utsmm.kbz.BR;
|
||||
import com.utsmm.kbz.R;
|
||||
import com.utsmm.kbz.config.Constants;
|
||||
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
||||
import com.utsmm.kbz.ui.management.ManagementViewModel;
|
||||
import com.utsmm.kbz.util.ecr.CoreUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class QRSettlementTransactionFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback {
|
||||
|
||||
private SharedViewModel sharedViewModel;
|
||||
private ManagementViewModel managementViewModel;
|
||||
private SettlementViewModel settlementViewModel;
|
||||
|
||||
ArrayList<PayDetail> qrTransactionsList = new ArrayList<>();
|
||||
|
||||
private int routeId;
|
||||
private int count = 0;
|
||||
private long totalAmount = 0;
|
||||
|
||||
@Override
|
||||
protected void initViewModel() {
|
||||
sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class);
|
||||
managementViewModel = getFragmentScopeViewModel(ManagementViewModel.class);
|
||||
settlementViewModel = getFragmentScopeViewModel(SettlementViewModel.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DataBindingConfig getDataBindingConfig() {
|
||||
return new DataBindingConfig(R.layout.fragment_qr_settlement_screen, BR.sharedViewModel, sharedViewModel)
|
||||
.addBindingParam(BR.manageViewModel, managementViewModel)
|
||||
.addBindingParam(BR.settleViewModel, settlementViewModel)
|
||||
.addBindingParam(BR.click, new ClickEvent());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int currentId() {
|
||||
return R.id.QRSettlementTransactionFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int hostId() {
|
||||
return Constants.NAV_HOST_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int routeId() {
|
||||
return routeId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
setToolBarTitleWithBackIcon(getString(R.string.title_qr_settlement));
|
||||
|
||||
String merchantName = SystemParamsOperation.getInstance().getMerchantName();
|
||||
if (!TextUtils.equals(merchantName, "")) {
|
||||
sharedViewModel.merchantName.postValue(merchantName);
|
||||
} else {
|
||||
sharedViewModel.merchantName.postValue("Default Value");
|
||||
}
|
||||
|
||||
showLoadingView();
|
||||
setupQRSettlementData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setupBackButtonPressDetection(this);
|
||||
observeQRTransactions();
|
||||
}
|
||||
|
||||
private void showLoadingView() {
|
||||
managementViewModel.detailReportLayoutLoadingVisibility.setValue(0);
|
||||
managementViewModel.detailReportLayoutVisibility.setValue(8);
|
||||
managementViewModel.detailReportLayoutViewVisibility.setValue(8);
|
||||
managementViewModel.detailReportBottomLayoutVisibility.setValue(8);
|
||||
}
|
||||
|
||||
private void showDataView() {
|
||||
managementViewModel.detailReportLayoutLoadingVisibility.setValue(8);
|
||||
managementViewModel.detailReportLayoutVisibility.setValue(8);
|
||||
managementViewModel.detailReportLayoutViewVisibility.setValue(0);
|
||||
managementViewModel.detailReportBottomLayoutVisibility.setValue(0);
|
||||
}
|
||||
|
||||
private void showEmptyDataView() {
|
||||
managementViewModel.detailReportLayoutLoadingVisibility.setValue(8);
|
||||
managementViewModel.detailReportLayoutVisibility.setValue(0);
|
||||
managementViewModel.detailReportLayoutViewVisibility.setValue(8);
|
||||
managementViewModel.detailReportBottomLayoutVisibility.setValue(8);
|
||||
}
|
||||
|
||||
private void setupQRSettlementData() {
|
||||
managementViewModel.hostTypeDR.setValue("PAYMENT");
|
||||
managementViewModel.cardTypeDR.setValue("QR PAY");
|
||||
}
|
||||
|
||||
private void observeQRTransactions() {
|
||||
managementViewModel.getTransactionHistory().observe(getViewLifecycleOwner(), payDetailList -> {
|
||||
if (payDetailList != null) {
|
||||
qrTransactionsList.clear();
|
||||
count = 0;
|
||||
totalAmount = 0;
|
||||
|
||||
for (PayDetail payDetail : payDetailList) {
|
||||
// Filter for QR transactions only
|
||||
if ((payDetail.getTransactionType() == TransactionsType.MMQR.value
|
||||
|| payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value)
|
||||
&& payDetail.getQrTransStatus() == 1
|
||||
&& POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) {
|
||||
|
||||
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value;
|
||||
qrTransactionsList.add(payDetail);
|
||||
count++;
|
||||
if (isNeedMinusSign) {
|
||||
totalAmount -= payDetail.getAmount();
|
||||
} else {
|
||||
totalAmount += payDetail.getAmount();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (qrTransactionsList.isEmpty()) {
|
||||
showEmptyDataView();
|
||||
settlementViewModel.isNoData.setValue(true);
|
||||
} else {
|
||||
showDataView();
|
||||
settlementViewModel.isNoData.setValue(false);
|
||||
}
|
||||
|
||||
// Set settlement data for display
|
||||
setupSettlementDisplayData();
|
||||
|
||||
} else {
|
||||
showEmptyDataView();
|
||||
settlementViewModel.isNoData.setValue(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setupSettlementDisplayData() {
|
||||
// Calculate QR sale and refund counts/amounts
|
||||
int qrSaleCount = 0;
|
||||
long qrSaleAmount = 0;
|
||||
int qrRefundCount = 0;
|
||||
long qrRefundAmount = 0;
|
||||
|
||||
for (PayDetail payDetail : qrTransactionsList) {
|
||||
if (payDetail.getTransactionType() == TransactionsType.MMQR.value) {
|
||||
qrSaleCount++;
|
||||
qrSaleAmount += payDetail.getAmount();
|
||||
} else if (payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
|
||||
qrRefundCount++;
|
||||
qrRefundAmount += payDetail.getAmount();
|
||||
}
|
||||
}
|
||||
|
||||
// Set values in settlement view model for display
|
||||
settlementViewModel.sale_count.setValue(qrSaleCount);
|
||||
settlementViewModel.sale_amount.setValue(qrSaleAmount);
|
||||
settlementViewModel.refund_count.setValue(qrRefundCount);
|
||||
settlementViewModel.refund_amount.setValue(qrRefundAmount);
|
||||
|
||||
managementViewModel.totalAmountDR.setValue(totalAmount);
|
||||
managementViewModel.trnxCountDR.setValue(String.valueOf(count));
|
||||
|
||||
// Create settlement data for transaction result
|
||||
SettleData settleData = new SettleData(qrSaleCount, qrSaleAmount, 0, 0L, qrRefundCount, qrRefundAmount, 0, 0L);
|
||||
TradeData tradeData = Params.newTrade(false);
|
||||
PayDetail payDetail = tradeData.getPayDetail();
|
||||
payDetail.setSettleDataObj(settleData);
|
||||
payDetail.setTransactionType(TransactionsType.MMQR_SETTLEMENT.value);
|
||||
payDetail.setTransType(TransactionsType.MMQR_SETTLEMENT.name);
|
||||
payDetail.setAmount(totalAmount);
|
||||
sharedViewModel.payDetail.setValue(payDetail);
|
||||
sharedViewModel.payDetails.setValue(qrTransactionsList);
|
||||
}
|
||||
|
||||
private void finishECRProcess() {
|
||||
CoreUtils.getInstance(sharedViewModel).responseRejectMsg(getString(R.string.txt_cancel_trans));
|
||||
sharedViewModel.isEcrFinished.postValue(true);
|
||||
sharedViewModel.isEcr.postValue(false);
|
||||
}
|
||||
|
||||
private void navigateToResult() {
|
||||
routeId = R.id.action_QRSettlementTransactionFragment_to_transactionResultFragment;
|
||||
safeNavigateToRouteId();
|
||||
}
|
||||
|
||||
private void updateData() {
|
||||
EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue());
|
||||
sharedViewModel.pushReceipt(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPress() {
|
||||
if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) {
|
||||
finishECRProcess();
|
||||
}
|
||||
popBackStack();
|
||||
}
|
||||
|
||||
public class ClickEvent {
|
||||
|
||||
public void onCancel() {
|
||||
if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) {
|
||||
finishECRProcess();
|
||||
}
|
||||
popBackStack();
|
||||
}
|
||||
|
||||
public void onConfirm() {
|
||||
if (!qrTransactionsList.isEmpty()) {
|
||||
for (PayDetail payDetail : qrTransactionsList) {
|
||||
// Mark as settled or delete based on your business logic
|
||||
settlementViewModel.deletePayDetail(payDetail);
|
||||
}
|
||||
|
||||
updateData();
|
||||
navigateToResult();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
package com.utsmm.kbz.ui.settlement;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||
import com.utsmyanmar.paylibs.utils.enums.HostType;
|
||||
import com.utsmyanmar.paylibs.utils.enums.TransMenu;
|
||||
import com.utsmm.kbz.BR;
|
||||
import com.utsmm.kbz.R;
|
||||
import com.utsmm.kbz.config.Constants;
|
||||
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
||||
import com.utsmm.kbz.util.ecr.CoreUtils;
|
||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
|
||||
|
||||
public class SelectSettlementFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback {
|
||||
|
||||
private SharedViewModel sharedViewModel;
|
||||
private int routeId;
|
||||
|
||||
@Override
|
||||
protected void initViewModel() {
|
||||
sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DataBindingConfig getDataBindingConfig() {
|
||||
return new DataBindingConfig(R.layout.fragment_select_settlement_screen, BR.sharedViewModel, sharedViewModel)
|
||||
.addBindingParam(BR.click, new ClickEvent());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int currentId() {
|
||||
return R.id.selectSettlementFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int hostId() {
|
||||
return Constants.NAV_HOST_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int routeId() {
|
||||
return routeId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
setToolBarTitleWithBackIcon(getString(R.string.title_select_settlement_type));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
setupBackButtonPressDetection(this);
|
||||
}
|
||||
|
||||
private void finishECRProcess() {
|
||||
CoreUtils.getInstance(sharedViewModel).responseRejectMsg(getString(R.string.txt_cancel_trans));
|
||||
sharedViewModel.isEcrFinished.postValue(true);
|
||||
sharedViewModel.isEcr.postValue(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPress() {
|
||||
if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) {
|
||||
finishECRProcess();
|
||||
}
|
||||
popBackStack();
|
||||
}
|
||||
|
||||
public class ClickEvent {
|
||||
|
||||
public void onCardSettlement() {
|
||||
|
||||
routeId = R.id.action_selectSettlementFragment_to_settlementTransactionFragment;
|
||||
safeNavigateToRouteId();
|
||||
}
|
||||
|
||||
public void onQRSettlement() {
|
||||
sharedViewModel.hostType.setValue(HostType.QR);
|
||||
routeId = R.id.action_selectSettlementFragment_to_QRSettlementTransactionFragment;
|
||||
safeNavigateToRouteId();
|
||||
}
|
||||
|
||||
public void onCancel() {
|
||||
if (sharedViewModel.isEcr.getValue() != null && sharedViewModel.isEcr.getValue()) {
|
||||
finishECRProcess();
|
||||
}
|
||||
popBackStack();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -211,6 +211,10 @@ public class SettlementViewModel extends ViewModel {
|
||||
repository.updatePayDetail(payDetail);
|
||||
}
|
||||
|
||||
public void deletePayDetail(PayDetail payDetail){
|
||||
repository.deletePayDetail(payDetail);
|
||||
}
|
||||
|
||||
private void updateDB() {
|
||||
|
||||
if(payDetails != null && payDetails.size() > 0) {
|
||||
@ -220,7 +224,8 @@ public class SettlementViewModel extends ViewModel {
|
||||
// paydetail.setIsSettle(true);
|
||||
// updatePayDetail(paydetail);
|
||||
// } else {
|
||||
repository.deletePayDetail(paydetail);
|
||||
deletePayDetail(payDetail);
|
||||
// repository.deletePayDetail(paydetail);
|
||||
// }
|
||||
|
||||
|
||||
@ -230,7 +235,8 @@ public class SettlementViewModel extends ViewModel {
|
||||
|
||||
for (PayDetail pay:deleteTrans
|
||||
) {
|
||||
repository.deletePayDetail(pay);
|
||||
// repository.deletePayDetail(pay);
|
||||
deletePayDetail(pay);
|
||||
}
|
||||
if (payDetails != null) {
|
||||
payDetails.clear();
|
||||
@ -247,6 +253,8 @@ public class SettlementViewModel extends ViewModel {
|
||||
repository.insertPayDetail(payDetail);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
public void startSettlementProcess() {
|
||||
saleCount = sale_count.getValue();
|
||||
|
||||
@ -224,6 +224,8 @@ public class EReceiptUtil {
|
||||
return "R";
|
||||
} else if(transactionType == TransactionsType.SETTLEMENT.value) {
|
||||
return "ST";
|
||||
} else if(transactionType == TransactionsType.MMQR_SETTLEMENT.value) {
|
||||
return "ST";
|
||||
}
|
||||
return "E";
|
||||
}
|
||||
|
||||
293
app/src/main/res/layout/fragment_qr_settlement_screen.xml
Normal file
293
app/src/main/res/layout/fragment_qr_settlement_screen.xml
Normal file
@ -0,0 +1,293 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<import type="com.utsmyanmar.paylibs.utils.POSUtil" />
|
||||
|
||||
<variable
|
||||
name="settleViewModel"
|
||||
type="com.utsmm.kbz.ui.settlement.SettlementViewModel" />
|
||||
|
||||
<variable
|
||||
name="sharedViewModel"
|
||||
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
|
||||
|
||||
<variable
|
||||
name="manageViewModel"
|
||||
type="com.utsmm.kbz.ui.management.ManagementViewModel" />
|
||||
|
||||
<variable
|
||||
name="click"
|
||||
type="com.utsmm.kbz.ui.settlement.QRSettlementTransactionFragment.ClickEvent" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
|
||||
<!-- <!– Loading View –>-->
|
||||
<!-- <include-->
|
||||
<!-- layout="@layout/layout_loading"-->
|
||||
<!-- android:layout_width="match_parent"-->
|
||||
<!-- android:layout_height="match_parent"-->
|
||||
<!-- android:visibility="@{manageViewModel.detailReportLayoutLoadingVisibility}" />-->
|
||||
|
||||
<!-- No Data View -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{manageViewModel.detailReportLayoutVisibility}">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/txt_no_qr_transactions_to_settle"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Data View -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="40dp"
|
||||
android:paddingStart="17dp"
|
||||
android:paddingEnd="17dp"
|
||||
android:visibility="@{manageViewModel.detailReportLayoutViewVisibility}">
|
||||
|
||||
<!-- Header Info -->
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/txt_qr_settlement_summary"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<!-- Column Headers -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/black"
|
||||
android:layout_weight="2"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@string/txt_title_transaction_type"
|
||||
android:textSize="17sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@string/txt_title_count"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="17sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:textColor="@color/black"
|
||||
android:text="@string/txt_title_totals"
|
||||
android:textAlignment="textEnd"
|
||||
android:textSize="17sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/colorLightGray" />
|
||||
|
||||
<!-- QR Sale Row -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@string/txt_qr_sale"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@={settleViewModel.sale_count+``}"
|
||||
tools:text="5"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@{POSUtil.getInstance().getDecimalAmountSeparatorFormat(settleViewModel.sale_amount)}"
|
||||
tools:text="65.00"
|
||||
android:textAlignment="textEnd"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/colorLightGray" />
|
||||
|
||||
<!-- QR Refund Row -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="19dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@string/txt_qr_refund"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:textColor="@color/black"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@={settleViewModel.refund_count+``}"
|
||||
tools:text="0"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@{POSUtil.getInstance().getDecimalAmountSeparatorFormat(settleViewModel.refund_amount)}"
|
||||
tools:text="0.00"
|
||||
android:textAlignment="textEnd"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/colorLightGray" />
|
||||
|
||||
<!-- Total Summary -->
|
||||
<LinearLayout
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:background="@color/colorLightBackground"
|
||||
android:padding="12dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@string/txt_total_qr_transactions"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@{manageViewModel.trnxCountDR}"
|
||||
tools:text="5"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/rubik_regular"
|
||||
android:text="@{POSUtil.getInstance().getDecimalAmountSeparatorFormat(manageViewModel.totalAmountDR)}"
|
||||
tools:text="65.00"
|
||||
android:textAlignment="textEnd"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Bottom Buttons -->
|
||||
<LinearLayout
|
||||
android:id="@+id/bottom_button_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="8dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:visibility="@{manageViewModel.detailReportBottomLayoutVisibility}">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_qr_settlement_cancel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bg_rounded_btn_cancel_cv"
|
||||
android:onClick="@{()->click.onCancel()}"
|
||||
android:text="@string/layout_cancel"
|
||||
android:textColor="@color/colorPrimary" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_qr_settlement_confirm"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="4dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bg_rounded_btn_cv"
|
||||
android:onClick="@{()->click.onConfirm()}"
|
||||
android:text="@string/txt_settle_qr_transactions"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
||||
@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="sharedViewModel"
|
||||
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
|
||||
|
||||
<variable
|
||||
name="click"
|
||||
type="com.utsmm.kbz.ui.settlement.SelectSettlementFragment.ClickEvent" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/button_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginEnd="32dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_card_settlement"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:backgroundTint="@color/primary_color"
|
||||
android:onClick="@{()->click.onCardSettlement()}"
|
||||
android:text="@string/txt_card_settlement"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:cornerRadius="8dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_qr_settlement"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:backgroundTint="@color/primary_color"
|
||||
android:onClick="@{()->click.onQRSettlement()}"
|
||||
android:text="@string/txt_qr_settlement"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:cornerRadius="8dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_cancel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:backgroundTint="@color/gray_500"
|
||||
android:onClick="@{()->click.onCancel()}"
|
||||
android:text="@string/txt_cancel"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:cornerRadius="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
20
app/src/main/res/layout/layout_loading.xml
Normal file
20
app/src/main/res/layout/layout_loading.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ProgressBar
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginBottom="16dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/loading"
|
||||
android:textColor="@color/colorTextTitle"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</LinearLayout>
|
||||
@ -259,6 +259,26 @@
|
||||
app:destination="@id/pinPadFragment" />
|
||||
|
||||
</fragment>
|
||||
<!-- New SelectSettlementFragment -->
|
||||
<fragment
|
||||
android:id="@+id/selectSettlementFragment"
|
||||
android:name="com.utsmm.kbz.ui.settlement.SelectSettlementFragment"
|
||||
tools:layout="@layout/fragment_select_settlement_screen"
|
||||
android:label="@string/title_select_settlement_type">
|
||||
<action
|
||||
android:id="@+id/action_selectSettlementFragment_to_settlementTransactionFragment"
|
||||
app:destination="@id/settlementTransactionFragment" />
|
||||
<action
|
||||
android:id="@+id/action_selectSettlementFragment_to_QRSettlementTransactionFragment"
|
||||
app:destination="@id/QRSettlementTransactionFragment" />
|
||||
<action
|
||||
android:id="@+id/action_selectSettlementFragment_to_nav_main"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@+id/mobile_navigation"
|
||||
app:popUpToInclusive="true"
|
||||
app:destination="@id/nav_main" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
tools:layout="@layout/fragment_view_batch_screen"
|
||||
android:id="@+id/settlementTransactionFragment"
|
||||
@ -283,6 +303,26 @@
|
||||
android:id="@+id/action_settlementTransactionFragment_to_reprintReceiptFragment"
|
||||
app:destination="@id/reprintReceiptFragment" />
|
||||
</fragment>
|
||||
|
||||
<!-- New QRSettlementTransactionFragment -->
|
||||
<fragment
|
||||
android:id="@+id/QRSettlementTransactionFragment"
|
||||
android:name="com.utsmm.kbz.ui.settlement.QRSettlementTransactionFragment"
|
||||
tools:layout="@layout/fragment_qr_settlement_screen"
|
||||
android:label="@string/title_qr_settlement">
|
||||
<action
|
||||
android:id="@+id/action_QRSettlementTransactionFragment_to_nav_main"
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@+id/mobile_navigation"
|
||||
app:popUpToInclusive="true"
|
||||
app:destination="@id/nav_main" />
|
||||
<action
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@+id/mobile_navigation"
|
||||
app:popUpToInclusive="true"
|
||||
android:id="@+id/action_QRSettlementTransactionFragment_to_transactionResultFragment"
|
||||
app:destination="@id/transactionResultFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/transactionHistoryFragment"
|
||||
tools:layout="@layout/fragment_transaction_reprint_screen"
|
||||
@ -321,8 +361,8 @@
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@+id/inputPasswordFragment"
|
||||
app:popUpToInclusive="true"
|
||||
android:id="@+id/action_inputPasswordFragment_to_settlementTransactionFragment"
|
||||
app:destination="@id/settlementTransactionFragment" />
|
||||
android:id="@+id/action_inputPasswordFragment_to_selectSettlementFragment"
|
||||
app:destination="@id/selectSettlementFragment" />
|
||||
<action
|
||||
app:launchSingleTop="true"
|
||||
app:popUpTo="@+id/inputPasswordFragment"
|
||||
@ -661,7 +701,7 @@
|
||||
app:destination="@id/selectHostFragment" />
|
||||
<action
|
||||
android:id="@+id/action_managementFunctionFragment_to_settlementTransactionFragment"
|
||||
app:destination="@id/settlementTransactionFragment" />
|
||||
app:destination="@id/selectSettlementFragment" />
|
||||
<action
|
||||
android:id="@+id/action_managementFunctionFragment_to_inputTraceFragment"
|
||||
app:destination="@id/inputTraceFragment" />
|
||||
|
||||
@ -96,4 +96,10 @@
|
||||
<!-- Common Colors -->
|
||||
|
||||
<color name="transparent">#00000000</color>
|
||||
|
||||
<!-- Settlement Fragment Colors -->
|
||||
<color name="primary_color">#2A60AF</color>
|
||||
<color name="gray_500">#6B7280</color>
|
||||
<color name="colorLightBackground">#F8F9FA</color>
|
||||
|
||||
</resources>
|
||||
@ -601,4 +601,19 @@
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
|
||||
<!-- Settlement Fragments Strings -->
|
||||
<string name="title_select_settlement_type">Select Settlement Type</string>
|
||||
<string name="txt_select_settlement_type">Choose Settlement Type</string>
|
||||
<string name="txt_card_settlement">Card Settlement</string>
|
||||
<string name="txt_qr_settlement">QR Settlement</string>
|
||||
<string name="txt_cancel">Cancel</string>
|
||||
<string name="title_qr_settlement">QR Settlement</string>
|
||||
<string name="txt_qr_settlement_summary">QR Settlement Summary</string>
|
||||
<string name="txt_title_transaction_type">Transaction Type</string>
|
||||
<string name="txt_qr_sale">QR Sale</string>
|
||||
<string name="txt_qr_refund">QR Refund</string>
|
||||
<string name="txt_total_qr_transactions">Total QR Transactions</string>
|
||||
<string name="txt_no_qr_transactions_to_settle">No QR transactions to settle</string>
|
||||
<string name="txt_settle_qr_transactions">Confirm</string>
|
||||
|
||||
</resources>
|
||||
@ -285,8 +285,8 @@ public class NetworkModule {
|
||||
tmsAddress = getTMSUrlFromNative();
|
||||
}
|
||||
|
||||
// String baseUrl = tmsAddress.trim() + "/api/v1/";
|
||||
String baseUrl = tmsAddress.trim() + "/";
|
||||
String baseUrl = tmsAddress.trim() + "/api/v1/";
|
||||
// String baseUrl = tmsAddress.trim() + "/";
|
||||
|
||||
final Gson gson =
|
||||
new GsonBuilder().create();
|
||||
@ -397,8 +397,8 @@ public class NetworkModule {
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.addInterceptor(interceptor)
|
||||
.build();
|
||||
// String baseUrl = "http://receipt-nest.utsmyanmar.com/";
|
||||
String baseUrl = "https://api-tms-uat.kbzbank.com:8443/receipt/";
|
||||
String baseUrl = "http://receipt-nest.utsmyanmar.com/";
|
||||
// String baseUrl = "https://api-tms-uat.kbzbank.com:8443/receipt/";
|
||||
|
||||
return new Retrofit.Builder()
|
||||
.baseUrl(baseUrl)
|
||||
|
||||
@ -622,7 +622,7 @@ public abstract class BaseXPrint {
|
||||
print2ColumnsString("PAYMENT NAME", "");
|
||||
print2ColumnsString("EXP DATE", "");
|
||||
print2ColumnsString("TRANSACTION", "TRACE NO");
|
||||
print2ColumnsString("WAVE TRXN ID", "AMOUNT");
|
||||
print2ColumnsString("TRXN ID", "AMOUNT");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -19,6 +19,8 @@ public interface PrintX {
|
||||
|
||||
void printSmileSettlementReport(PayDetail payDetail,PrintXStatus printXStatus);
|
||||
|
||||
void printQRSettlementReport(PayDetail payDetail,List<PayDetail> list,PrintXStatus printXStatus);
|
||||
|
||||
void printDetailReport(PayDetail payDetail, List<PayDetail> lists, HostType hostType,PrintXStatus printXStatus);
|
||||
|
||||
void printKeyStatus();
|
||||
|
||||
@ -203,6 +203,27 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printQRSettlementReport(PayDetail payDetail, List<PayDetail> list, PrintXStatus printXStatus) {
|
||||
this.callbackStatus = printXStatus;
|
||||
|
||||
try {
|
||||
LogUtil.d(TAG, payDetail.getSettleDataObj().toString());
|
||||
|
||||
setHeight(0x12);
|
||||
printLogo();
|
||||
printMerchantHeader();
|
||||
printTransHeader(payDetail);
|
||||
printTransDetailReport(list,HostType.QR);
|
||||
printTransFooterSummary();
|
||||
|
||||
emptyLine(1);
|
||||
startPrintNex();
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printDetailReport(PayDetail payDetail, List<PayDetail> lists, HostType hostType,PrintXStatus printXStatus) {
|
||||
this.callbackStatus = printXStatus;
|
||||
|
||||
@ -35,6 +35,10 @@ public class PrintXReceipt {
|
||||
printX.printSmileSettlementReport(payDetail,printXStatus);
|
||||
}
|
||||
|
||||
public void printQRSettlementReport(PayDetail payDetail,List<PayDetail> lists,PrintXStatus printXStatus) {
|
||||
printX.printQRSettlementReport(payDetail,lists,printXStatus);
|
||||
}
|
||||
|
||||
public void printSmileSummaryReport(PayDetail payDetail,PrintXStatus printXStatus) {
|
||||
printX.printSmileSummaryReport(payDetail,printXStatus);
|
||||
}
|
||||
|
||||
@ -42,8 +42,8 @@ public class SystemParamsSettings implements Serializable {
|
||||
|
||||
// private String tmsAddress = "https://tms.smile-mm.com";
|
||||
// private String tmsAddress = "http://128.199.170.203";
|
||||
// private String tmsAddress = "http://sirius-nest.utsmyanmar.com";
|
||||
private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
|
||||
private String tmsAddress = "http://sirius-nest.utsmyanmar.com";
|
||||
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
|
||||
private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com";
|
||||
|
||||
private String terminalCapability = "E0E8C8";
|
||||
|
||||
@ -48,7 +48,8 @@ public enum TransactionsType {
|
||||
|
||||
DETAIL_REPORT("DETAIL_REPORT",33,"000000"),
|
||||
|
||||
MMQR_REFUND("QR_REFUND",34,"000000");
|
||||
MMQR_REFUND("QR_REFUND",34,"000000"),
|
||||
MMQR_SETTLEMENT("QR_SETTLEMENT",35,"000000");
|
||||
|
||||
public final String name;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user