balance Inquiry ready !!!

This commit is contained in:
kizzy 2026-08-23 19:05:23 +07:00
parent 54c7a2e28b
commit 088dbd0d96
14 changed files with 91 additions and 12 deletions

View File

@ -36,6 +36,8 @@ import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmm.kbz.util.ecr.CoreUtils;
import com.utsmyanmar.paylibs.utils.LogUtil;
import com.utsmyanmar.paylibs.utils.POSUtil;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import java.text.DecimalFormat;
@ -229,14 +231,23 @@ public class ProcessingFragment extends DataBindingFragment {
private void updateData(){
PayDetail payDetail;
if(isEmvTrans()) {
LogUtil.d(TAG,"Updated sharedViewmodel payDetail for emv");
sharedViewModel.payDetail.setValue(emvTransactionProcessViewModel.payDetailResult.getValue());
payDetail = emvTransactionProcessViewModel.payDetailResult.getValue();
} else {
LogUtil.d(TAG,"Updated sharedViewmodel payDetail for non emv");
sharedViewModel.payDetail.setValue(transProcessViewModel.payDetailResult.getValue());
payDetail = transProcessViewModel.payDetailResult.getValue();
}
sharedViewModel.payDetail.setValue(payDetail);
if (sharedViewModel.transactionsType.getValue() == TransactionsType.BALANCE_INQUIRY && payDetail != null) {
sharedViewModel.amount.setValue(POSUtil.getInstance().getDecimalAmountSeparatorFormat(payDetail.getAmount()));
LogUtil.d(TAG,"amount :"+payDetail.getAmount());
}
// if(sharedViewModel.transactionsType.getValue() == TransactionsType.BALANCE_INQUIRY) {
// sharedViewModel.amount.setValue(Objects.requireNonNull(sharedViewModel.payDetail.getValue()).amount + "");
// }
// if(sharedViewModel.payDetail.getValue() != null) {
// EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue());

View File

@ -98,6 +98,7 @@ public class DashboardTransFragment extends DataBindingFragment {
Boolean isVoidEnabled = SystemParamsOperation.getInstance().getVoidStatus();
Boolean isPreAuthEnabled = SystemParamsOperation.getInstance().getPreAuthStatus();
Boolean isCashAdvanceEnabled = SystemParamsOperation.getInstance().getCashAdvanceStatus();
Boolean isBalanceInquiryEnabled = SystemParamsOperation.getInstance().getBalanceInquiryStatus();
private void initData() {
featuresList.clear();
@ -137,6 +138,11 @@ public class DashboardTransFragment extends DataBindingFragment {
}
break;
// case BALANCE_INQUIRY:
// if(isBalanceInquiryEnabled){
// featuresList.add(feature);
// }
// break;
default:
featuresList.add(feature);
break;
@ -184,6 +190,9 @@ public class DashboardTransFragment extends DataBindingFragment {
case DEVICE_CONFIG:
new DashboardTransFragment.ClickEvent().onClickDeviceConfig();
break;
case BALANCE_INQUIRY:
new DashboardTransFragment.ClickEvent().onClickBalanceInquiry();
break;
}
});
@ -294,6 +303,16 @@ public class DashboardTransFragment extends DataBindingFragment {
}
public void onClickBalanceInquiry() {
showCurrencyChooserForCardFlow(() -> {
sharedViewModel.setTransactionsType(TransactionsType.BALANCE_INQUIRY);
sharedViewModel.setTransMenu(TransMenu.BALANCE_INQUIRY);
routeId = R.id.action_dashboardTransFragment_to_cardWaitingFragment;
safeRouteTo(currentId, routeId, hostId);
});
}
public void onClickClearReversal() {
sharedViewModel.transactionsType.postValue(TransactionsType.CLEAR_REVERSAL);
sharedViewModel.setTransMenu(TransMenu.CLEAR_REVERSAL);

View File

@ -11,6 +11,7 @@ public enum FeaturesType {
PRE_AUTH_COMPLETE,
PRE_AUTH_COMPLETE_VOID,
REFUND,
BALANCE_INQUIRY,
MANAGEMENT_FEATURES,
TIP_ADJUSTMENT,
QR_PAY,

View File

@ -204,7 +204,7 @@ public class TMSUtil {
boolean preAuthCancelStatus = true;
boolean preAuthCompleteStatus = true;
boolean preAuthCompleteCancelStatus = true;
boolean balanceInquiryStatus = true;
preAuthStatus = SystemParamsOperation.getInstance().getPreAuthStatus();
voidStatus = SystemParamsOperation.getInstance().getVoidStatus();
@ -222,7 +222,7 @@ public class TMSUtil {
featuresList.add(new Features(6, fragmentActivity.getString(R.string.menu_preauth_completion), R.drawable.ic_pre_auth_dash, FeaturesType.PRE_AUTH_COMPLETE, preAuthCompleteStatus));
// featuresList.add(new Features(5, fragmentActivity.getString(R.string.menu_wavepay_inquiry), R.drawable.ic_wave_status_dash, FeaturesType.WAVE_PAY_INQUIRY, wavePayInquiryStatus));
featuresList.add(new Features(1, fragmentActivity.getString(R.string.menu_cash_advance), R.drawable.ic_cash_advance, FeaturesType.CASH_ADVANCE, cashAdvanceStatus));
// featuresList.add(new Features(9, fragmentActivity.getString(R.string.menu_history), R.drawable.ic_history, FeaturesType.HISTORY, true));
featuresList.add(new Features(9, fragmentActivity.getString(R.string.menu_balance), R.drawable.ic_bank_card, FeaturesType.BALANCE_INQUIRY, balanceInquiryStatus));
featuresList.add(new Features(11, "Clear Reversal", R.drawable.ic_clear_all, FeaturesType.CLEAR_REVERSAL, true));
featuresList.add(new Features(10, "Configs", R.drawable.ic_host, FeaturesType.DEVICE_CONFIG, true));
}

View File

@ -634,6 +634,12 @@
app:popUpToInclusive="true"
android:id="@+id/action_dashboardTransFragment_to_deviceConfig"
app:destination="@id/hostConfigFragment" />
<action
app:launchSingleTop="true"
app:popUpTo="@+id/dashboardTransFragment"
app:popUpToInclusive="true"
android:id="@+id/action_dashboardTransFragment_to_cardWaitingFragment"
app:destination="@id/cardWaitingFragment" />
</fragment>
<dialog
tools:layout="@layout/fragment_dashboard_bottom_sheet_pre_auth"

View File

@ -54,6 +54,12 @@ public class GeneralTest {
System.out.println(binParser(input3)); // Output: [55555]
}
@Test
public void testAmount() {
long data = Long.parseLong("000190294744");
System.out.println("data : "+data);
}
public static List<String> binParser(String input) {
if (input == null || input.trim().isEmpty()) {

View File

@ -1,6 +1,7 @@
package com.utsmm.kbz;
import com.kizzy.xpay.util.Sign;
import com.utsmyanmar.baselib.util.EReceiptHelper;
import org.junit.Test;
import static org.junit.Assert.*;

View File

@ -83,7 +83,7 @@ public class TransactionsOperation {
isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.BOTH_HEADER_TPDU, hostName)
.build();
if (transactionsType == TransactionsType.SALE || transactionsType == TransactionsType.PRE_AUTH_SALE || transactionsType == TransactionsType.CASH_OUT) {
if (transactionsType == TransactionsType.SALE || transactionsType == TransactionsType.PRE_AUTH_SALE || transactionsType == TransactionsType.CASH_OUT || transactionsType == TransactionsType.BALANCE_INQUIRY) {
transTradeData = setUpNormalTransaction(tradeData, transactionsType, hostName);
} else {
transTradeData = setUpRebuildTransactions(tradeData, transactionsType, hostName);
@ -139,8 +139,10 @@ public class TransactionsOperation {
transPayDetail.setIsSettle(false);
if (responseMap.get("F04") != null) {
transPayDetail.setAmount(Long.parseLong(Objects.requireNonNull(responseMap.get("F04")).getDataStr()));
MsgField amountField = responseMap.get("F004");
if (amountField != null && amountField.getDataStr() != null) {
transPayDetail.setAmount(Long.parseLong(amountField.getDataStr()));
LogUtil.d(Constant.TAG, transactionsType.name + " PROCESS AMOUNT :" + transPayDetail.getAmount());
}
if (responseMap.get("F012") != null) {
@ -255,8 +257,9 @@ public class TransactionsOperation {
listener.onReversal(transTradeData);
} else {
listener.onSuccess(transTradeData);
transTradeData.setPayDetail(transPayDetail);
listener.onSuccess(transTradeData);
}
// else if (!transPayDetail.getIsNeedReversal()) {

View File

@ -402,6 +402,8 @@ public class POSUtil {
} else if(payDetail.getTransactionType() == TransactionsType.CASH_OUT.value) {
long totalAmount = payDetail.getAmount() + payDetail.getAdditionalAmount();
return "Transaction for Amount \n"+getDecimalAmountFormat(totalAmount) +" "+currencySign+" Received.";
} else if(payDetail.getTransactionType() == TransactionsType.BALANCE_INQUIRY.value) {
return "Available Balance \n"+getDecimalAmountSeparatorFormat(payDetail.getAmount()) +" "+currencySign;
}
else {
return "Transaction for Amount \n"+getDecimalAmountFormat(payDetail.getAmount()) +" "+currencySign+" Received.";

View File

@ -1265,6 +1265,17 @@ public class SystemParamsOperation {
return params.getCashAdvanceStatus();
}
public void setBalanceInquiryStatus(boolean status) {
SystemParamsSettings params = getSystemParamsSettings();
params.setBalanceInquiryStatus(status);
saveSystemParamsSettings(params);
}
public boolean getBalanceInquiryStatus() {
SystemParamsSettings params = getSystemParamsSettings();
return params.getBalanceInquiryStatus();
}
public boolean getFullVoidPreauthStatus() {
SystemParamsSettings params = getSystemParamsSettings();
return params.getFullVoidPreauthStatus();

View File

@ -218,6 +218,7 @@ public class SystemParamsSettings implements Serializable {
private boolean cash_advance_status = true;
private boolean balance_inquiry_status = true;
private boolean decimal_enable = false;
private boolean refund_status = true;
@ -634,6 +635,9 @@ public class SystemParamsSettings implements Serializable {
protected void setVoidStatus(boolean void_status) { this.void_status = void_status; }
protected boolean getBalanceInquiryStatus() { return balance_inquiry_status;}
protected void setBalanceInquiryStatus(boolean balance_inquiry_status) { this.balance_inquiry_status = balance_inquiry_status; }
protected boolean getCashAdvanceStatus() { return cash_advance_status;}
protected void setCashAdvanceStatus(boolean cash_advance_status) { this.cash_advance_status = cash_advance_status;}

View File

@ -23,5 +23,6 @@ public enum TransMenu {
PRE_AUTH,
PRE_AUTH_FULL_VOID,
PRE_AUTH_PARTIAL_VOID,
TIP_ADJUSTMENT
TIP_ADJUSTMENT,
BALANCE_INQUIRY
}

View File

@ -93,7 +93,13 @@ public class HostUtils {
bitmap = BitmapConfig.FINEXUS_SALE;
}
break;
case BALANCE_INQUIRY:
if (hostName == HostName.BPC) {
bitmap = BitmapConfig.BPC_BALANCE_INQUIRY;
} else {
bitmap = BitmapConfig.FINEXUS_SALE;
}
break;
default:
bitmap = BitmapConfig.DEFAULT;
break;
@ -106,6 +112,14 @@ public class HostUtils {
public MessageType getMessageType(HostName hostName, TransactionsType transactionsType) {
final MessageType msgType;
switch (transactionsType) {
case BALANCE_INQUIRY:
if (hostName == HostName.BPC) {
msgType = MessageType.AUTHORIZATION;
} else {
msgType = MessageType.AUTHORIZATION;
}
break;
case PRE_AUTH_SALE:
if (hostName == HostName.BPC) {
msgType = MessageType.FINANCIAL;

View File

@ -52,7 +52,7 @@ public class BitmapConfig {
public static final String BPC_LOG_ON = "2220010000800000"; // TID,MID
public static final String BPC_LOG_OFF = "2220010000C00000"; // TID,MID
public static final String BPC_BALANCE_INQUIRY = "3230058020C09000";
public static final String BPC_BALANCE_INQUIRY = "3230058020C09200";
// public static final String BPC_SALE = "7230058020C09201";
// public static final String BPC_SALE = "7230058020C09000";