Merge branch 'test' into duel_settlement
This commit is contained in:
commit
daba685f40
@ -116,8 +116,8 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
||||||
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
||||||
|
|
||||||
// Keep screen on
|
// Keep screen on
|
||||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
@ -160,10 +160,10 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initKey(){
|
private void initKey(){
|
||||||
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms.kbzbank.com/sirius");
|
||||||
SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com/api/v1");
|
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms.kbzbank.com/receipt");
|
||||||
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
||||||
SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com/api/v1");
|
SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
||||||
|
|
||||||
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
|
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
|
||||||
byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK();
|
byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK();
|
||||||
@ -436,8 +436,8 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
SystemParamsOperation.getInstance().setDownloadedParams(false);
|
SystemParamsOperation.getInstance().setDownloadedParams(false);
|
||||||
|
|
||||||
handleAutoSettlementIntent(getIntent());
|
handleAutoSettlementIntent(getIntent());
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
||||||
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -445,8 +445,6 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
public void onStop(){
|
public void onStop(){
|
||||||
super.onStop();
|
super.onStop();
|
||||||
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().enableHomeButton();
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().enableTaskButton();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -564,9 +562,6 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().enableHomeButton();
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().enableTaskButton();
|
|
||||||
// Clean up RxJava disposables
|
// Clean up RxJava disposables
|
||||||
compositeDisposable.clear();
|
compositeDisposable.clear();
|
||||||
// Reset screen mode
|
// Reset screen mode
|
||||||
|
|||||||
@ -4,18 +4,25 @@ import android.content.pm.PackageInfo;
|
|||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
|
import androidx.appcompat.widget.AppCompatButton;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.denzcoskun.imageslider.ImageSlider;
|
import com.denzcoskun.imageslider.ImageSlider;
|
||||||
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
import com.denzcoskun.imageslider.constants.ScaleTypes;
|
||||||
@ -71,6 +78,7 @@ import java.nio.charset.StandardCharsets;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -100,6 +108,13 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
private final ArrayList<SlideModel> imgList = new ArrayList<>();
|
private final ArrayList<SlideModel> imgList = new ArrayList<>();
|
||||||
private Observer<PayDetail> observeLastTrans;
|
private Observer<PayDetail> observeLastTrans;
|
||||||
private PayDetail lastPay;
|
private PayDetail lastPay;
|
||||||
|
private boolean cardPrimaryHostCached = false;
|
||||||
|
private String cardPrimaryHostName = "";
|
||||||
|
private String cardPrimaryTid = "";
|
||||||
|
private String cardPrimaryMid = "";
|
||||||
|
private String cardPrimaryIp = "";
|
||||||
|
private String cardPrimarySecIp = "";
|
||||||
|
private CurrencyType cardPrimaryCurrency = CurrencyType.MMK;
|
||||||
private CurrencySelectionHelper currencySelectionHelper;
|
private CurrencySelectionHelper currencySelectionHelper;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ -162,18 +177,10 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
NexGoSDK.getInstance().cancelCheckCard();
|
NexGoSDK.getInstance().cancelCheckCard();
|
||||||
NexGoSDK.getInstance().closeReader();
|
NexGoSDK.getInstance().closeReader();
|
||||||
enableHomeButton();
|
enableHomeButton();
|
||||||
// enablePinPadSound(false);
|
|
||||||
// disableTaskButton();
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
|
|
||||||
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void enablePinPadSound(boolean flag) {n
|
|
||||||
// int result = BaseApplication.getInstance().deviceEngine.getPlatform().enablePinpadBeep(flag);
|
|
||||||
// LogUtil.d(TAG, "Pin Pad Beep Result:" + result);
|
|
||||||
// }
|
|
||||||
|
|
||||||
private void disableHomeButton() {
|
private void disableHomeButton() {
|
||||||
int result = BaseApplication.getInstance().deviceEngine.getPlatform().disableHomeButton();
|
int result = BaseApplication.getInstance().deviceEngine.getPlatform().disableHomeButton();
|
||||||
LogUtil.d(TAG, "Disable Home Button Result:" + result);
|
LogUtil.d(TAG, "Disable Home Button Result:" + result);
|
||||||
@ -447,7 +454,190 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showCurrencyChooserForCardSale() {
|
private void showCurrencyChooserForCardSale() {
|
||||||
currencySelectionHelper.showCardCurrencyChooser(this::startCardSaleFlow);
|
List<String> currencies = getAvailableCardSaleCurrencies();
|
||||||
|
if (currencies.isEmpty()) {
|
||||||
|
applyCardCurrencyAndHost("MMK");
|
||||||
|
startCardSaleFlow();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currencies.size() == 1) {
|
||||||
|
applyCardCurrencyAndHost(currencies.get(0));
|
||||||
|
startCardSaleFlow();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
showCurrencyPickerDialog("Choose Currency", currencies, currency -> {
|
||||||
|
applyCardCurrencyAndHost(currency);
|
||||||
|
startCardSaleFlow();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableCardSaleCurrencies() {
|
||||||
|
cachePrimaryCardHostIfNeeded();
|
||||||
|
LinkedHashSet<String> values = new LinkedHashSet<>();
|
||||||
|
|
||||||
|
if (cardPrimaryCurrency != null && !TextUtils.isEmpty(cardPrimaryCurrency.name)) {
|
||||||
|
values.add(normalizeCurrency(cardPrimaryCurrency.name));
|
||||||
|
}
|
||||||
|
|
||||||
|
String secondaryCurrency = normalizeCurrency(SystemParamsOperation.getInstance().getThirdHostCurrency());
|
||||||
|
if (!TextUtils.isEmpty(SystemParamsOperation.getInstance().getThirdHostName()) && !TextUtils.isEmpty(secondaryCurrency)) {
|
||||||
|
values.add(secondaryCurrency);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayList<>(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyCardCurrencyAndHost(String selectedCurrency) {
|
||||||
|
cachePrimaryCardHostIfNeeded();
|
||||||
|
|
||||||
|
String selected = normalizeCurrency(selectedCurrency);
|
||||||
|
String secondaryCurrency = normalizeCurrency(SystemParamsOperation.getInstance().getThirdHostCurrency());
|
||||||
|
|
||||||
|
boolean useSecondaryCardHost = !TextUtils.isEmpty(SystemParamsOperation.getInstance().getThirdHostName())
|
||||||
|
&& !TextUtils.isEmpty(secondaryCurrency)
|
||||||
|
&& secondaryCurrency.equals(selected);
|
||||||
|
|
||||||
|
if (useSecondaryCardHost) {
|
||||||
|
SystemParamsOperation.getInstance().setHostName(SystemParamsOperation.getInstance().getThirdHostName());
|
||||||
|
SystemParamsOperation.getInstance().setTerminalId(SystemParamsOperation.getInstance().getThirdHostTerminalId());
|
||||||
|
SystemParamsOperation.getInstance().setMerchantId(SystemParamsOperation.getInstance().getThirdHostMerchantId());
|
||||||
|
SystemParamsOperation.getInstance().setIpAddress(SystemParamsOperation.getInstance().getThirdHostIpAddress());
|
||||||
|
SystemParamsOperation.getInstance().setSecIpAddress(SystemParamsOperation.getInstance().getThirdHostSecIpAddress());
|
||||||
|
} else {
|
||||||
|
SystemParamsOperation.getInstance().setHostName(cardPrimaryHostName);
|
||||||
|
SystemParamsOperation.getInstance().setTerminalId(cardPrimaryTid);
|
||||||
|
SystemParamsOperation.getInstance().setMerchantId(cardPrimaryMid);
|
||||||
|
SystemParamsOperation.getInstance().setIpAddress(cardPrimaryIp);
|
||||||
|
SystemParamsOperation.getInstance().setSecIpAddress(cardPrimarySecIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
CurrencyType currencyType = useSecondaryCardHost ? toCurrencyType(selected) : cardPrimaryCurrency;
|
||||||
|
SystemParamsOperation.getInstance().setCurrencyType(currencyType);
|
||||||
|
sharedViewModel.set_currencyText(currencyType.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cachePrimaryCardHostIfNeeded() {
|
||||||
|
if (cardPrimaryHostCached) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cardPrimaryHostName = SystemParamsOperation.getInstance().getHostName();
|
||||||
|
cardPrimaryTid = SystemParamsOperation.getInstance().getTerminalId();
|
||||||
|
cardPrimaryMid = SystemParamsOperation.getInstance().getMerchantId();
|
||||||
|
cardPrimaryIp = SystemParamsOperation.getInstance().getIpAddress();
|
||||||
|
cardPrimarySecIp = SystemParamsOperation.getInstance().getSecIpAddress();
|
||||||
|
CurrencyType activeCurrency = SystemParamsOperation.getInstance().getCurrencyType();
|
||||||
|
cardPrimaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency;
|
||||||
|
cardPrimaryHostCached = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showCurrencyPickerDialog(String title, List<String> currencies, CurrencySelectCallback callback) {
|
||||||
|
LinearLayout root = new LinearLayout(requireContext());
|
||||||
|
root.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
root.setPadding(dp(20), dp(20), dp(20), dp(12));
|
||||||
|
|
||||||
|
TextView tvTitle = new TextView(requireContext());
|
||||||
|
tvTitle.setText(title);
|
||||||
|
tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
|
||||||
|
tvTitle.setTextColor(ContextCompat.getColor(requireContext(), R.color.colorTextTitle));
|
||||||
|
tvTitle.setPadding(0, 0, 0, dp(16));
|
||||||
|
root.addView(tvTitle);
|
||||||
|
|
||||||
|
final AlertDialog[] dialogHolder = new AlertDialog[1];
|
||||||
|
for (String currency : currencies) {
|
||||||
|
AppCompatButton button = new AppCompatButton(requireContext());
|
||||||
|
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
dp(56)
|
||||||
|
);
|
||||||
|
lp.bottomMargin = dp(10);
|
||||||
|
button.setLayoutParams(lp);
|
||||||
|
button.setAllCaps(false);
|
||||||
|
button.setText(currency);
|
||||||
|
button.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
|
||||||
|
button.setGravity(Gravity.CENTER);
|
||||||
|
button.setBackgroundResource(R.drawable.bg_rounded_btn_cv);
|
||||||
|
button.setTextColor(ContextCompat.getColor(requireContext(), R.color.white));
|
||||||
|
button.setOnClickListener(v -> {
|
||||||
|
if (dialogHolder[0] != null) {
|
||||||
|
dialogHolder[0].dismiss();
|
||||||
|
}
|
||||||
|
callback.onSelected(currency);
|
||||||
|
});
|
||||||
|
root.addView(button);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppCompatButton cancel = new AppCompatButton(requireContext());
|
||||||
|
LinearLayout.LayoutParams cancelLp = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
dp(52)
|
||||||
|
);
|
||||||
|
cancel.setLayoutParams(cancelLp);
|
||||||
|
cancel.setAllCaps(false);
|
||||||
|
cancel.setText("Cancel");
|
||||||
|
cancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
|
||||||
|
cancel.setBackgroundResource(R.drawable.bg_rounded_btn_cancel_cv);
|
||||||
|
cancel.setTextColor(ContextCompat.getColor(requireContext(), R.color.colorPrimary));
|
||||||
|
cancel.setOnClickListener(v -> {
|
||||||
|
if (dialogHolder[0] != null) {
|
||||||
|
dialogHolder[0].dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
root.addView(cancel);
|
||||||
|
|
||||||
|
AlertDialog dialog = new AlertDialog.Builder(requireContext())
|
||||||
|
.setView(root)
|
||||||
|
.create();
|
||||||
|
dialogHolder[0] = dialog;
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int dp(int value) {
|
||||||
|
return Math.round(value * requireContext().getResources().getDisplayMetrics().density);
|
||||||
|
}
|
||||||
|
|
||||||
|
private interface CurrencySelectCallback {
|
||||||
|
void onSelected(String currency);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CurrencyType toCurrencyType(String value) {
|
||||||
|
String normalized = normalizeCurrency(value);
|
||||||
|
try {
|
||||||
|
return CurrencyType.valueOf(normalized);
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return CurrencyType.MMK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String normalizeCurrency(String raw) {
|
||||||
|
if (TextUtils.isEmpty(raw)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
String value = raw.trim().toUpperCase();
|
||||||
|
switch (value) {
|
||||||
|
case "104":
|
||||||
|
case "MMK":
|
||||||
|
return "MMK";
|
||||||
|
case "840":
|
||||||
|
case "USD":
|
||||||
|
return "USD";
|
||||||
|
case "156":
|
||||||
|
case "CNY":
|
||||||
|
case "RMB":
|
||||||
|
return "CNY";
|
||||||
|
case "764":
|
||||||
|
case "THB":
|
||||||
|
return "THB";
|
||||||
|
case "643":
|
||||||
|
case "RUB":
|
||||||
|
return "RUB";
|
||||||
|
default:
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
// currencySelectionHelper.showCardCurrencyChooser(this::startCardSaleFlow);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showCurrencyChooserForSignOn() {
|
private void showCurrencyChooserForSignOn() {
|
||||||
|
|||||||
@ -2,16 +2,25 @@ package com.utsmm.kbz.ui.dashboard;
|
|||||||
|
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.appcompat.widget.AppCompatButton;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.utsmm.kbz.util.enums.SettlementType;
|
import com.utsmm.kbz.util.enums.SettlementType;
|
||||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
|
import com.utsmyanmar.paylibs.utils.enums.CurrencyType;
|
||||||
import com.utsmyanmar.paylibs.utils.enums.TransMenu;
|
import com.utsmyanmar.paylibs.utils.enums.TransMenu;
|
||||||
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
|
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
|
||||||
import com.utsmm.kbz.BR;
|
import com.utsmm.kbz.BR;
|
||||||
@ -25,6 +34,8 @@ import com.utsmm.kbz.util.CurrencySelectionHelper;
|
|||||||
import com.utsmm.kbz.util.tms.TMSUtil;
|
import com.utsmm.kbz.util.tms.TMSUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class DashboardTransFragment extends DataBindingFragment {
|
public class DashboardTransFragment extends DataBindingFragment {
|
||||||
|
|
||||||
@ -36,6 +47,13 @@ public class DashboardTransFragment extends DataBindingFragment {
|
|||||||
private ArrayList<Features> featuresList = new ArrayList<>();
|
private ArrayList<Features> featuresList = new ArrayList<>();
|
||||||
|
|
||||||
MainAdapter mainAdapter;
|
MainAdapter mainAdapter;
|
||||||
|
private boolean cardPrimaryHostCached = false;
|
||||||
|
private String cardPrimaryHostName = "";
|
||||||
|
private String cardPrimaryTid = "";
|
||||||
|
private String cardPrimaryMid = "";
|
||||||
|
private String cardPrimaryIp = "";
|
||||||
|
private String cardPrimarySecIp = "";
|
||||||
|
private CurrencyType cardPrimaryCurrency = CurrencyType.MMK;
|
||||||
|
|
||||||
private static final int hostId = Constants.NAV_HOST_ID;
|
private static final int hostId = Constants.NAV_HOST_ID;
|
||||||
private int routeId;
|
private int routeId;
|
||||||
@ -290,7 +308,190 @@ public class DashboardTransFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showCurrencyChooserForCardFlow(Runnable onSelected) {
|
private void showCurrencyChooserForCardFlow(Runnable onSelected) {
|
||||||
currencySelectionHelper.showCardCurrencyChooser(onSelected);
|
List<String> currencies = getAvailableCardSaleCurrencies();
|
||||||
|
if (currencies.isEmpty()) {
|
||||||
|
applyCardCurrencyAndHost("MMK");
|
||||||
|
onSelected.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currencies.size() == 1) {
|
||||||
|
applyCardCurrencyAndHost(currencies.get(0));
|
||||||
|
onSelected.run();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
showCurrencyPickerDialog("Choose Currency", currencies, currency -> {
|
||||||
|
applyCardCurrencyAndHost(currency);
|
||||||
|
onSelected.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableCardSaleCurrencies() {
|
||||||
|
cachePrimaryCardHostIfNeeded();
|
||||||
|
LinkedHashSet<String> values = new LinkedHashSet<>();
|
||||||
|
|
||||||
|
if (cardPrimaryCurrency != null && !TextUtils.isEmpty(cardPrimaryCurrency.name)) {
|
||||||
|
values.add(normalizeCurrency(cardPrimaryCurrency.name));
|
||||||
|
}
|
||||||
|
|
||||||
|
String secondaryCurrency = normalizeCurrency(SystemParamsOperation.getInstance().getThirdHostCurrency());
|
||||||
|
if (!TextUtils.isEmpty(SystemParamsOperation.getInstance().getThirdHostName()) && !TextUtils.isEmpty(secondaryCurrency)) {
|
||||||
|
values.add(secondaryCurrency);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ArrayList<>(values);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyCardCurrencyAndHost(String selectedCurrency) {
|
||||||
|
cachePrimaryCardHostIfNeeded();
|
||||||
|
|
||||||
|
String selected = normalizeCurrency(selectedCurrency);
|
||||||
|
String secondaryCurrency = normalizeCurrency(SystemParamsOperation.getInstance().getThirdHostCurrency());
|
||||||
|
|
||||||
|
boolean useSecondaryCardHost = !TextUtils.isEmpty(SystemParamsOperation.getInstance().getThirdHostName())
|
||||||
|
&& !TextUtils.isEmpty(secondaryCurrency)
|
||||||
|
&& secondaryCurrency.equals(selected);
|
||||||
|
|
||||||
|
if (useSecondaryCardHost) {
|
||||||
|
SystemParamsOperation.getInstance().setHostName(SystemParamsOperation.getInstance().getThirdHostName());
|
||||||
|
SystemParamsOperation.getInstance().setTerminalId(SystemParamsOperation.getInstance().getThirdHostTerminalId());
|
||||||
|
SystemParamsOperation.getInstance().setMerchantId(SystemParamsOperation.getInstance().getThirdHostMerchantId());
|
||||||
|
SystemParamsOperation.getInstance().setIpAddress(SystemParamsOperation.getInstance().getThirdHostIpAddress());
|
||||||
|
SystemParamsOperation.getInstance().setSecIpAddress(SystemParamsOperation.getInstance().getThirdHostSecIpAddress());
|
||||||
|
} else {
|
||||||
|
SystemParamsOperation.getInstance().setHostName(cardPrimaryHostName);
|
||||||
|
SystemParamsOperation.getInstance().setTerminalId(cardPrimaryTid);
|
||||||
|
SystemParamsOperation.getInstance().setMerchantId(cardPrimaryMid);
|
||||||
|
SystemParamsOperation.getInstance().setIpAddress(cardPrimaryIp);
|
||||||
|
SystemParamsOperation.getInstance().setSecIpAddress(cardPrimarySecIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
CurrencyType currencyType = useSecondaryCardHost ? toCurrencyType(selected) : cardPrimaryCurrency;
|
||||||
|
SystemParamsOperation.getInstance().setCurrencyType(currencyType);
|
||||||
|
sharedViewModel.set_currencyText(currencyType.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cachePrimaryCardHostIfNeeded() {
|
||||||
|
if (cardPrimaryHostCached) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cardPrimaryHostName = SystemParamsOperation.getInstance().getHostName();
|
||||||
|
cardPrimaryTid = SystemParamsOperation.getInstance().getTerminalId();
|
||||||
|
cardPrimaryMid = SystemParamsOperation.getInstance().getMerchantId();
|
||||||
|
cardPrimaryIp = SystemParamsOperation.getInstance().getIpAddress();
|
||||||
|
cardPrimarySecIp = SystemParamsOperation.getInstance().getSecIpAddress();
|
||||||
|
CurrencyType activeCurrency = SystemParamsOperation.getInstance().getCurrencyType();
|
||||||
|
cardPrimaryCurrency = activeCurrency == null ? CurrencyType.MMK : activeCurrency;
|
||||||
|
cardPrimaryHostCached = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CurrencyType toCurrencyType(String value) {
|
||||||
|
String normalized = normalizeCurrency(value);
|
||||||
|
try {
|
||||||
|
return CurrencyType.valueOf(normalized);
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return CurrencyType.MMK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String normalizeCurrency(String raw) {
|
||||||
|
if (TextUtils.isEmpty(raw)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
String value = raw.trim().toUpperCase();
|
||||||
|
switch (value) {
|
||||||
|
case "104":
|
||||||
|
case "MMK":
|
||||||
|
return "MMK";
|
||||||
|
case "840":
|
||||||
|
case "USD":
|
||||||
|
return "USD";
|
||||||
|
case "156":
|
||||||
|
case "CNY":
|
||||||
|
case "RMB":
|
||||||
|
return "CNY";
|
||||||
|
case "764":
|
||||||
|
case "THB":
|
||||||
|
return "THB";
|
||||||
|
case "643":
|
||||||
|
case "RUB":
|
||||||
|
return "RUB";
|
||||||
|
default:
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showCurrencyPickerDialog(String title, List<String> currencies, CurrencySelectCallback callback) {
|
||||||
|
LinearLayout root = new LinearLayout(requireContext());
|
||||||
|
root.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
root.setPadding(dp(20), dp(20), dp(20), dp(12));
|
||||||
|
|
||||||
|
TextView tvTitle = new TextView(requireContext());
|
||||||
|
tvTitle.setText(title);
|
||||||
|
tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
|
||||||
|
tvTitle.setTextColor(ContextCompat.getColor(requireContext(), R.color.colorTextTitle));
|
||||||
|
tvTitle.setPadding(0, 0, 0, dp(16));
|
||||||
|
root.addView(tvTitle);
|
||||||
|
|
||||||
|
final AlertDialog[] dialogHolder = new AlertDialog[1];
|
||||||
|
for (String currency : currencies) {
|
||||||
|
AppCompatButton button = new AppCompatButton(requireContext());
|
||||||
|
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
dp(56)
|
||||||
|
);
|
||||||
|
lp.bottomMargin = dp(10);
|
||||||
|
button.setLayoutParams(lp);
|
||||||
|
button.setAllCaps(false);
|
||||||
|
button.setText(currency);
|
||||||
|
button.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
|
||||||
|
button.setGravity(Gravity.CENTER);
|
||||||
|
button.setBackgroundResource(R.drawable.bg_rounded_btn_cv);
|
||||||
|
button.setTextColor(ContextCompat.getColor(requireContext(), R.color.white));
|
||||||
|
button.setOnClickListener(v -> {
|
||||||
|
if (dialogHolder[0] != null) {
|
||||||
|
dialogHolder[0].dismiss();
|
||||||
|
}
|
||||||
|
callback.onSelected(currency);
|
||||||
|
});
|
||||||
|
root.addView(button);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppCompatButton cancel = new AppCompatButton(requireContext());
|
||||||
|
LinearLayout.LayoutParams cancelLp = new LinearLayout.LayoutParams(
|
||||||
|
LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
dp(52)
|
||||||
|
);
|
||||||
|
cancel.setLayoutParams(cancelLp);
|
||||||
|
cancel.setAllCaps(false);
|
||||||
|
cancel.setText("Cancel");
|
||||||
|
cancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
|
||||||
|
cancel.setBackgroundResource(R.drawable.bg_rounded_btn_cancel_cv);
|
||||||
|
cancel.setTextColor(ContextCompat.getColor(requireContext(), R.color.colorPrimary));
|
||||||
|
cancel.setOnClickListener(v -> {
|
||||||
|
if (dialogHolder[0] != null) {
|
||||||
|
dialogHolder[0].dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
root.addView(cancel);
|
||||||
|
|
||||||
|
AlertDialog dialog = new AlertDialog.Builder(requireContext())
|
||||||
|
.setView(root)
|
||||||
|
.create();
|
||||||
|
dialogHolder[0] = dialog;
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int dp(int value) {
|
||||||
|
return Math.round(value * requireContext().getResources().getDisplayMetrics().density);
|
||||||
|
}
|
||||||
|
|
||||||
|
private interface CurrencySelectCallback {
|
||||||
|
void onSelected(String currency);
|
||||||
|
// currencySelectionHelper.showCardCurrencyChooser(onSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.utsmm.kbz.ui.management;
|
package com.utsmm.kbz.ui.management;
|
||||||
|
|
||||||
|
import android.animation.ObjectAnimator;
|
||||||
|
import android.animation.ValueAnimator;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
@ -40,6 +42,8 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
private static final String TAG = ReprintReceiptFragment.class.getSimpleName();
|
private static final String TAG = ReprintReceiptFragment.class.getSimpleName();
|
||||||
|
|
||||||
private PayDetail payDetail;
|
private PayDetail payDetail;
|
||||||
|
private ObjectAnimator slideUpAnimator;
|
||||||
|
private View printingCard;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViewModel() {
|
protected void initViewModel() {
|
||||||
@ -76,6 +80,7 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
stopPrintingAnimation();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +110,7 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
printingCard = mBinding.getRoot().findViewById(R.id.printingCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateUIPrintReceiptFailure(PayDetail payDetail) {
|
private void updateUIPrintReceiptFailure(PayDetail payDetail) {
|
||||||
@ -140,6 +145,7 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Success) {
|
} else if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Success) {
|
||||||
|
startPrintingAnimation();
|
||||||
printReceipt(payDetail);
|
printReceipt(payDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,17 +201,44 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
private PrintXStatus printXStatus = new PrintXStatus() {
|
private PrintXStatus printXStatus = new PrintXStatus() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
|
stopPrintingAnimation();
|
||||||
delayFunctionCall(ReprintReceiptFragment.this::navigateMainScreen);
|
delayFunctionCall(ReprintReceiptFragment.this::navigateMainScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure() {
|
public void onFailure() {
|
||||||
|
stopPrintingAnimation();
|
||||||
updateUIPrintReceiptFailure(payDetail);
|
updateUIPrintReceiptFailure(payDetail);
|
||||||
|
|
||||||
// checkPaperExists(payDetail);
|
// checkPaperExists(payDetail);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private void startPrintingAnimation() {
|
||||||
|
if (printingCard == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (slideUpAnimator != null && slideUpAnimator.isRunning()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
slideUpAnimator = ObjectAnimator.ofFloat(printingCard, View.TRANSLATION_Y, 0f, -20f);
|
||||||
|
slideUpAnimator.setDuration(420);
|
||||||
|
slideUpAnimator.setRepeatMode(ValueAnimator.REVERSE);
|
||||||
|
slideUpAnimator.setRepeatCount(ValueAnimator.INFINITE);
|
||||||
|
slideUpAnimator.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopPrintingAnimation() {
|
||||||
|
if (slideUpAnimator != null) {
|
||||||
|
slideUpAnimator.cancel();
|
||||||
|
slideUpAnimator = null;
|
||||||
|
}
|
||||||
|
if (printingCard != null) {
|
||||||
|
printingCard.setTranslationY(0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings("ConstantConditions")
|
||||||
private void navigateMainScreen() {
|
private void navigateMainScreen() {
|
||||||
|
|||||||
@ -42,8 +42,7 @@ public class RefundCertificateManager {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
// String downloadBase = tmsAddress.trim() + "/api/v1/file/download?filePath="; //local
|
String downloadBase = tmsAddress.trim() + "/file/download?filePath=";
|
||||||
String downloadBase = tmsAddress.trim() + "/file/download?filePath="; // uat and prod
|
|
||||||
|
|
||||||
String certUrl = SystemParamsOperation.getInstance().getCertificateUrl();
|
String certUrl = SystemParamsOperation.getInstance().getCertificateUrl();
|
||||||
String clientCertUrl = SystemParamsOperation.getInstance().getCertificateClientUrl();
|
String clientCertUrl = SystemParamsOperation.getInstance().getCertificateClientUrl();
|
||||||
|
|||||||
@ -1,6 +1,10 @@
|
|||||||
package com.utsmm.kbz.ui.settings;
|
package com.utsmm.kbz.ui.settings;
|
||||||
|
|
||||||
|
import android.animation.ObjectAnimator;
|
||||||
|
import android.animation.ValueAnimator;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.animation.LinearInterpolator;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@ -15,6 +19,8 @@ import com.utsmm.kbz.databinding.FragmentHostConfigBinding;
|
|||||||
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
||||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||||
|
import com.utsmyanmar.paylibs.print.printx.PrintXReceipt;
|
||||||
|
import com.utsmyanmar.paylibs.print.printx.PrintXStatus;
|
||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
|
|
||||||
|
|
||||||
@ -26,6 +32,9 @@ public class HostConfigFragment extends DataBindingFragment {
|
|||||||
protected Printer printer;
|
protected Printer printer;
|
||||||
int FONT_NORMAL = 20;
|
int FONT_NORMAL = 20;
|
||||||
int FONT_HEADER = 24;
|
int FONT_HEADER = 24;
|
||||||
|
private ObjectAnimator rollUpAnimator;
|
||||||
|
private View hostCardView;
|
||||||
|
private volatile boolean isPrintingHostConfig = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void initViewModel() {
|
protected void initViewModel() {
|
||||||
@ -45,6 +54,7 @@ public class HostConfigFragment extends DataBindingFragment {
|
|||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
FragmentHostConfigBinding binding = (FragmentHostConfigBinding) this.binding;
|
FragmentHostConfigBinding binding = (FragmentHostConfigBinding) this.binding;
|
||||||
|
hostCardView = binding.getRoot().findViewById(R.id.hostCard);
|
||||||
viewModel.loadConfig();
|
viewModel.loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +66,13 @@ public class HostConfigFragment extends DataBindingFragment {
|
|||||||
sharedViewModel.printerDisabled.setValue(!SystemParamsOperation.getInstance().getPrinterEnabled());
|
sharedViewModel.printerDisabled.setValue(!SystemParamsOperation.getInstance().getPrinterEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
stopRollUpAnimation();
|
||||||
|
isPrintingHostConfig = false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int currentId() {
|
protected int currentId() {
|
||||||
return R.id.hostConfigFragment;
|
return R.id.hostConfigFragment;
|
||||||
@ -81,7 +98,72 @@ public class HostConfigFragment extends DataBindingFragment {
|
|||||||
showDeclineDialog("Printer is disabled!");
|
showDeclineDialog("Printer is disabled!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sharedViewModel.printTerminalHostConfigs();
|
if (isPrintingHostConfig) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
startHostConfigPrint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startHostConfigPrint() {
|
||||||
|
isPrintingHostConfig = true;
|
||||||
|
startRollUpAnimation();
|
||||||
|
|
||||||
|
PrintXReceipt.getInstance().printTerminalHostConfig(new PrintXStatus() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
requireActivity().runOnUiThread(() -> {
|
||||||
|
isPrintingHostConfig = false;
|
||||||
|
stopRollUpAnimation();
|
||||||
|
Log.d("PrintConfig", "Print Terminal Config Success.");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure() {
|
||||||
|
requireActivity().runOnUiThread(() -> {
|
||||||
|
isPrintingHostConfig = false;
|
||||||
|
stopRollUpAnimation();
|
||||||
|
Log.e("PrintConfig", "Print Terminal Config Failure.");
|
||||||
|
showDeclineDialog("Failed to print host config.");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startRollUpAnimation() {
|
||||||
|
if (hostCardView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (rollUpAnimator != null && rollUpAnimator.isRunning()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
hostCardView.post(() -> {
|
||||||
|
int cardTop = hostCardView.getTop();
|
||||||
|
int cardHeight = hostCardView.getHeight();
|
||||||
|
if (cardHeight <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move past the top edge so the card fully leaves the screen.
|
||||||
|
float offScreenDistance = cardTop + cardHeight + 80f;
|
||||||
|
|
||||||
|
rollUpAnimator = ObjectAnimator.ofFloat(hostCardView, View.TRANSLATION_Y, 0f, -offScreenDistance);
|
||||||
|
rollUpAnimator.setDuration(3000);
|
||||||
|
rollUpAnimator.setInterpolator(new LinearInterpolator());
|
||||||
|
rollUpAnimator.setRepeatMode(ValueAnimator.RESTART);
|
||||||
|
rollUpAnimator.setRepeatCount(ValueAnimator.INFINITE);
|
||||||
|
rollUpAnimator.start();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopRollUpAnimation() {
|
||||||
|
if (rollUpAnimator != null) {
|
||||||
|
rollUpAnimator.cancel();
|
||||||
|
rollUpAnimator = null;
|
||||||
|
}
|
||||||
|
if (hostCardView != null) {
|
||||||
|
hostCardView.setTranslationY(0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,6 +78,10 @@ public class SettlementViewModel extends ViewModel {
|
|||||||
public SingleLiveEvent<Long> sale_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> sale_amount = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<String> sale_breakdown = new SingleLiveEvent<>();
|
public SingleLiveEvent<String> sale_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
|
public SingleLiveEvent<Integer> void_count = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<Long> void_amount = new SingleLiveEvent<>();
|
||||||
|
public SingleLiveEvent<String> void_breakdown = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<Integer> pre_count = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> pre_count = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<Long> pre_amount = new SingleLiveEvent<>();
|
public SingleLiveEvent<Long> pre_amount = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<String> pre_breakdown = new SingleLiveEvent<>();
|
public SingleLiveEvent<String> pre_breakdown = new SingleLiveEvent<>();
|
||||||
|
|||||||
@ -210,7 +210,7 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// For dual-currency card flow, prefer MMK as PRIMARY HOST.
|
// For dual-currency card flow, prefer MMK as PRIMARY HOST.
|
||||||
if (isDualCurrencyEnabled && cardHosts.size() >= 2) {
|
if (cardHosts.size() >= 2) {
|
||||||
SiriusHost first = cardHosts.get(0);
|
SiriusHost first = cardHosts.get(0);
|
||||||
SiriusHost second = cardHosts.get(1);
|
SiriusHost second = cardHosts.get(1);
|
||||||
boolean firstIsMMK = "MMK".equalsIgnoreCase(first.getCurrency());
|
boolean firstIsMMK = "MMK".equalsIgnoreCase(first.getCurrency());
|
||||||
@ -240,7 +240,7 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SECONDARY HOST (Card #2)
|
// SECONDARY HOST (Card #2)
|
||||||
if (isDualCurrencyEnabled && cardHosts.size() > 1) {
|
if (cardHosts.size() > 1) {
|
||||||
SiriusHost secondaryCard = cardHosts.get(1);
|
SiriusHost secondaryCard = cardHosts.get(1);
|
||||||
SystemParamsOperation.getInstance().setThirdHostName(secondaryCard.getName() == null ? "" : secondaryCard.getName());
|
SystemParamsOperation.getInstance().setThirdHostName(secondaryCard.getName() == null ? "" : secondaryCard.getName());
|
||||||
SystemParamsOperation.getInstance().setThirdHostTerminalId(secondaryCard.getTid() == null ? "" : secondaryCard.getTid());
|
SystemParamsOperation.getInstance().setThirdHostTerminalId(secondaryCard.getTid() == null ? "" : secondaryCard.getTid());
|
||||||
|
|||||||
@ -142,7 +142,9 @@
|
|||||||
android:weightSum="3">
|
android:weightSum="3">
|
||||||
|
|
||||||
<!-- Tap Card -->
|
<!-- Tap Card -->
|
||||||
|
<!-- android:onClick="@{()->click.onClickTap()}"-->
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
|
android:onClick="@{()->click.onClickTap()}"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="96dp"
|
android:layout_height="96dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
@ -150,7 +152,6 @@
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:cardCornerRadius="12dp"
|
app:cardCornerRadius="12dp"
|
||||||
app:cardElevation="2dp"
|
app:cardElevation="2dp"
|
||||||
android:onClick="@{()->click.onClickTap()}"
|
|
||||||
android:backgroundTint="#fff"
|
android:backgroundTint="#fff"
|
||||||
android:foreground="?android:attr/selectableItemBackground"
|
android:foreground="?android:attr/selectableItemBackground"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
|
|||||||
@ -4,8 +4,9 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.text.TextUtils"/>
|
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
|
<import type="android.text.TextUtils"/>
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="com.utsmm.kbz.ui.settings.HostConfigViewModel"/>
|
type="com.utsmm.kbz.ui.settings.HostConfigViewModel"/>
|
||||||
@ -99,7 +100,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.hostName) ? View.GONE : View.VISIBLE}">
|
android:visibility='@{!TextUtils.isEmpty(viewModel.hostName) ? View.VISIBLE : View.GONE}'
|
||||||
|
tools:visibility="visible">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="PRIMARY HOST"
|
android:text="PRIMARY HOST"
|
||||||
@ -113,56 +115,48 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:stretchColumns="1">
|
android:stretchColumns="1">
|
||||||
|
|
||||||
<TableRow
|
<TableRow>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.hostName) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.hostName}'/>
|
android:text='@{": " + viewModel.hostName}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.tid) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.tid) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="TID"/>
|
<TextView style="@style/HostLabelStyle" android:text="TID"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.tid}'/>
|
android:text='@{": " + viewModel.tid}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.mid) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.mid) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="MID"/>
|
<TextView style="@style/HostLabelStyle" android:text="MID"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.mid}'/>
|
android:text='@{": " + viewModel.mid}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.primaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.primaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.primaryIp}'/>
|
android:text='@{": " + viewModel.primaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.primaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.primaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.primaryPort}'/>
|
android:text='@{": " + viewModel.primaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secondaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secondaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secondaryIp}'/>
|
android:text='@{": " + viewModel.secondaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secondaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secondaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secondaryPort}'/>
|
android:text='@{": " + viewModel.secondaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.currencyCode) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.currencyCode) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.currencyCode}'/>
|
android:text='@{": " + viewModel.currencyCode}'/>
|
||||||
@ -174,7 +168,6 @@
|
|||||||
android:text="--------------------------------------------------------------------------"
|
android:text="--------------------------------------------------------------------------"
|
||||||
android:gravity="left"
|
android:gravity="left"
|
||||||
android:paddingVertical="8dp"
|
android:paddingVertical="8dp"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.hostName) ? View.GONE : View.VISIBLE}"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="match_parent"/>
|
android:layout_width="match_parent"/>
|
||||||
|
|
||||||
@ -183,7 +176,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostName) ? View.GONE : View.VISIBLE}">
|
android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostName) ? View.VISIBLE : View.GONE}'
|
||||||
|
tools:visibility="gone">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="SECONDARY HOST"
|
android:text="SECONDARY HOST"
|
||||||
@ -200,57 +194,43 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:stretchColumns="1">
|
android:stretchColumns="1">
|
||||||
|
|
||||||
<TableRow
|
<TableRow>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostName) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostName}'/>
|
android:text='@{": " + viewModel.thirdHostName}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostShortCode) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostTid) ? View.GONE : View.VISIBLE}">
|
<TextView style="@style/HostLabelStyle" android:text="Short Code"/>
|
||||||
<TextView style="@style/HostLabelStyle" android:text="TID"/>
|
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostTid}'/>
|
android:text='@{": " + viewModel.thirdHostShortCode}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostPrimaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostMid) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="MID"/>
|
|
||||||
<TextView style="@style/HostValueStyle"
|
|
||||||
android:text='@{": " + viewModel.thirdHostMid}'/>
|
|
||||||
</TableRow>
|
|
||||||
|
|
||||||
<TableRow
|
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostPrimaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostPrimaryIp}'/>
|
android:text='@{": " + viewModel.thirdHostPrimaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostPrimaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostPrimaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostPrimaryPort}'/>
|
android:text='@{": " + viewModel.thirdHostPrimaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostSecondaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostSecondaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostSecondaryIp}'/>
|
android:text='@{": " + viewModel.thirdHostSecondaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostSecondaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostSecondaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostSecondaryPort}'/>
|
android:text='@{": " + viewModel.thirdHostSecondaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostCurrency) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostCurrency) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostCurrency}'/>
|
android:text='@{": " + viewModel.thirdHostCurrency}'/>
|
||||||
@ -261,7 +241,6 @@
|
|||||||
android:text="--------------------------------------------------------------------------"
|
android:text="--------------------------------------------------------------------------"
|
||||||
android:gravity="left"
|
android:gravity="left"
|
||||||
android:paddingVertical="8dp"
|
android:paddingVertical="8dp"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostName) ? View.GONE : View.VISIBLE}"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="match_parent"/>
|
android:layout_width="match_parent"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -271,7 +250,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostName) ? View.GONE : View.VISIBLE}">
|
android:visibility='@{!TextUtils.isEmpty(viewModel.secHostName) ? View.VISIBLE : View.GONE}'
|
||||||
|
tools:visibility="visible">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="QR HOST"
|
android:text="QR HOST"
|
||||||
@ -288,50 +268,43 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:stretchColumns="1">
|
android:stretchColumns="1">
|
||||||
|
|
||||||
<TableRow
|
<TableRow>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostName) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
<TextView style="@style/HostLabelStyle" android:text="Name"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostName}'/>
|
android:text='@{": " + viewModel.secHostName}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.shortCode) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.shortCode) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Short Code"/>
|
<TextView style="@style/HostLabelStyle" android:text="Short Code"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.shortCode}'/>
|
android:text='@{": " + viewModel.shortCode}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secHostPrimaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostPrimaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostPrimaryIp}'/>
|
android:text='@{": " + viewModel.secHostPrimaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secHostPrimaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostPrimaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Primary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostPrimaryPort}'/>
|
android:text='@{": " + viewModel.secHostPrimaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secHostSecondaryIp) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostSecondaryIp) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary IP"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostSecondaryIp}'/>
|
android:text='@{": " + viewModel.secHostSecondaryIp}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secHostSecondaryPort) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostSecondaryPort) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
<TextView style="@style/HostLabelStyle" android:text="Secondary Port"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostSecondaryPort}'/>
|
android:text='@{": " + viewModel.secHostSecondaryPort}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow
|
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.secHostCurrency) ? View.VISIBLE : View.GONE}'>
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostCurrency) ? View.GONE : View.VISIBLE}">
|
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
<TextView style="@style/HostLabelStyle" android:text="Currency"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.secHostCurrency}'/>
|
android:text='@{": " + viewModel.secHostCurrency}'/>
|
||||||
@ -342,7 +315,6 @@
|
|||||||
android:text="--------------------------------------------------------------------------"
|
android:text="--------------------------------------------------------------------------"
|
||||||
android:gravity="left"
|
android:gravity="left"
|
||||||
android:paddingVertical="8dp"
|
android:paddingVertical="8dp"
|
||||||
android:visibility="@{TextUtils.isEmpty(viewModel.secHostName) ? View.GONE : View.VISIBLE}"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="match_parent"/>
|
android:layout_width="match_parent"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -367,6 +339,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
|
android:visibility="@{sharedViewModel.printerDisabled ? View.GONE : View.VISIBLE}"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent">
|
app:layout_constraintStart_toStartOf="parent">
|
||||||
|
|
||||||
@ -386,7 +359,6 @@
|
|||||||
android:layout_height="52dp"
|
android:layout_height="52dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:visibility="@{sharedViewModel.printerDisabled ? View.GONE : View.VISIBLE}"
|
|
||||||
android:text="Print"
|
android:text="Print"
|
||||||
android:onClick="@{()-> click.onPrint()}"
|
android:onClick="@{()-> click.onPrint()}"
|
||||||
android:background="@drawable/bg_rounded_btn_cv"
|
android:background="@drawable/bg_rounded_btn_cv"
|
||||||
|
|||||||
@ -127,6 +127,63 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_marginTop="19dp"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<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:layout_weight="2"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@string/txt_subtitle_void"
|
||||||
|
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>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:fontFamily="@font/rubik_regular"
|
||||||
|
android:text="@{settleViewModel.sale_breakdown}"
|
||||||
|
android:textColor="@color/colorTextContent"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text="MMK 2 / 10,000.00 USD 1 / 25.00" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_marginTop="15dp"
|
android:layout_marginTop="15dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@ -255,6 +255,7 @@
|
|||||||
<string name="txt_title_count">Count</string>
|
<string name="txt_title_count">Count</string>
|
||||||
<string name="txt_title_totals">Totals</string>
|
<string name="txt_title_totals">Totals</string>
|
||||||
<string name="txt_subtitle_sale">Sale</string>
|
<string name="txt_subtitle_sale">Sale</string>
|
||||||
|
<string name="txt_subtitle_void">Void</string>
|
||||||
<string name="txt_subtitle_sale_completion">Sale Completion</string>
|
<string name="txt_subtitle_sale_completion">Sale Completion</string>
|
||||||
<string name="txt_subtitle_refund">Refund</string>
|
<string name="txt_subtitle_refund">Refund</string>
|
||||||
<string name="txt_subtitle_amount">Amount</string>
|
<string name="txt_subtitle_amount">Amount</string>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -11,8 +11,8 @@
|
|||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 1,
|
"versionCode": 33,
|
||||||
"versionName": "1.00-uat",
|
"versionName": "2.13-uat",
|
||||||
"outputFile": "app-uat-release.apk"
|
"outputFile": "app-uat-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -27,10 +27,6 @@ public final class TerminalKeyUtil {
|
|||||||
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase());
|
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase());
|
||||||
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
|
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
|
||||||
private static final byte[] work_key_data = new byte[16];
|
private static final byte[] work_key_data = new byte[16];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void initNexKey() {
|
public static void initNexKey() {
|
||||||
byte[] IPEKByte = ByteUtil.hexStr2Bytes("5A4CFF6DE93F0488926166F3317EFD2F"); // IPEK
|
byte[] IPEKByte = ByteUtil.hexStr2Bytes("5A4CFF6DE93F0488926166F3317EFD2F"); // IPEK
|
||||||
byte[] IPEKKCVByte = ByteUtil.hexStr2Bytes("1F0C18");
|
byte[] IPEKKCVByte = ByteUtil.hexStr2Bytes("1F0C18");
|
||||||
@ -54,8 +50,8 @@ public final class TerminalKeyUtil {
|
|||||||
// int result = pinPad.dukptKeyInject(9, DukptKeyTypeEnum.IPEK,IPEKByte,16,KSNByte);
|
// int result = pinPad.dukptKeyInject(9, DukptKeyTypeEnum.IPEK,IPEKByte,16,KSNByte);
|
||||||
// int result = pinPad.dukptKeyInject(9, DukptKeyTypeEnum.BDK,IPEKByte,16,ksn);
|
// int result = pinPad.dukptKeyInject(9, DukptKeyTypeEnum.BDK,IPEKByte,16,ksn);
|
||||||
|
|
||||||
LogUtil.d(TAG, "save tmk key result: "+result);
|
// LogUtil.d(TAG, "save tmk key result: "+result);
|
||||||
LogUtil.d(TAG, "save tmk kcv: "+ByteUtil.bytes2HexStr(kcv));
|
// LogUtil.d(TAG, "save tmk kcv: "+ByteUtil.bytes2HexStr(kcv));
|
||||||
|
|
||||||
// byte[] encryptedPIK = SystemParamsOperation.getInstance().getKeyPIK().get(0);
|
// byte[] encryptedPIK = SystemParamsOperation.getInstance().getKeyPIK().get(0);
|
||||||
//
|
//
|
||||||
|
|||||||
@ -254,7 +254,8 @@ public class NetworkModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (baseUrl.isEmpty()) {
|
if (baseUrl.isEmpty()) {
|
||||||
baseUrl = "http://api-uat.kbzpay.com/payment/gateway/uat/";
|
// baseUrl = "http://api-uat.kbzpay.com/payment/gateway/uat/"; //UAT
|
||||||
|
baseUrl = "https://api.kbzpay.com/payment/gateway/"; //Prod
|
||||||
}
|
}
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
.baseUrl(baseUrl)
|
.baseUrl(baseUrl)
|
||||||
@ -310,8 +311,8 @@ public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
|
|||||||
|
|
||||||
// char[] password = "test123".toCharArray();
|
// char[] password = "test123".toCharArray();
|
||||||
|
|
||||||
// String refundBaseUrl = "https://api.kbzpay.com:8008/payment/gateway/";
|
String refundBaseUrl = "https://api.kbzpay.com:8008/payment/gateway/";
|
||||||
String refundBaseUrl = "https://api-uat.kbzpay.com:18008/payment/gateway/uat/";
|
// String refundBaseUrl = "https://api-uat.kbzpay.com:18008/payment/gateway/uat/";
|
||||||
// String IpAddress = SystemParamsOperation.getInstance().getSecHostIpAddress();
|
// String IpAddress = SystemParamsOperation.getInstance().getSecHostIpAddress();
|
||||||
|
|
||||||
|
|
||||||
@ -325,7 +326,7 @@ public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
|
|||||||
|
|
||||||
String pass = SystemParamsOperation.getInstance().getCertificatePassword();
|
String pass = SystemParamsOperation.getInstance().getCertificatePassword();
|
||||||
if (TextUtils.isEmpty(pass)) {
|
if (TextUtils.isEmpty(pass)) {
|
||||||
pass = "test123";
|
pass = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
char[] password = pass.toCharArray();
|
char[] password = pass.toCharArray();
|
||||||
|
|||||||
@ -3,15 +3,10 @@ package com.utsmyanmar.baselib.network;
|
|||||||
import com.utsmyanmar.baselib.network.model.KPayQRQueryRequest;
|
import com.utsmyanmar.baselib.network.model.KPayQRQueryRequest;
|
||||||
import com.utsmyanmar.baselib.network.model.KPayQRRequest;
|
import com.utsmyanmar.baselib.network.model.KPayQRRequest;
|
||||||
import com.utsmyanmar.baselib.network.model.KPayQRResponse;
|
import com.utsmyanmar.baselib.network.model.KPayQRResponse;
|
||||||
import com.utsmyanmar.baselib.network.model.MMQRStatusResponse;
|
|
||||||
import com.utsmyanmar.baselib.network.model.WaveQRRequest;
|
|
||||||
import com.utsmyanmar.baselib.network.model.WaveQRResponse;
|
|
||||||
import com.utsmyanmar.baselib.network.model.WaveStatusRequest;
|
|
||||||
|
|
||||||
import io.reactivex.rxjava3.core.Observable;
|
import io.reactivex.rxjava3.core.Observable;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
import retrofit2.http.Url;
|
|
||||||
|
|
||||||
public interface KPayApiService {
|
public interface KPayApiService {
|
||||||
|
|
||||||
@ -23,13 +18,13 @@ public interface KPayApiService {
|
|||||||
Observable<KPayQRQueryRequest.QRQueryResponse> checkStatus(@Body KPayQRQueryRequest.QRQueryRequest waveStatusRequest);
|
Observable<KPayQRQueryRequest.QRQueryResponse> checkStatus(@Body KPayQRQueryRequest.QRQueryRequest waveStatusRequest);
|
||||||
|
|
||||||
|
|
||||||
//this accept "url" bez this api start with https and other are http in uat
|
//this accepts "url" bez this api start with https and other are http in uat
|
||||||
@POST
|
// @POST
|
||||||
Observable<KPayQRRequest.CloseOrderResponse> closeOrder(@Url String url, @Body KPayQRRequest.CloseOrderRequest closeOrderRequest);
|
// Observable<KPayQRRequest.CloseOrderResponse> closeOrder(@Url String url, @Body KPayQRRequest.CloseOrderRequest closeOrderRequest);
|
||||||
|
|
||||||
|
|
||||||
//this 2 is for production
|
//this 2 is for production
|
||||||
// @POST("closeorder")
|
@POST("closeorder")
|
||||||
// Observable<KPayQRRequest.CloseOrderResponse> closeOrder(@Body KPayQRRequest.CloseOrderRequest closeOrderRequest);
|
Observable<KPayQRRequest.CloseOrderResponse> closeOrder(@Body KPayQRRequest.CloseOrderRequest closeOrderRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -86,9 +86,9 @@ public class Repository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Observable<KPayQRRequest.CloseOrderResponse> qrCloseOrder(KPayQRRequest.CloseOrderRequest request){
|
public Observable<KPayQRRequest.CloseOrderResponse> qrCloseOrder(KPayQRRequest.CloseOrderRequest request){
|
||||||
String url = "https://api-uat.kbzpay.com/payment/gateway/uat/closeorder"; //close this in prod
|
// String url = "https://api-uat.kbzpay.com/payment/gateway/uat/closeorder"; //close this in prod
|
||||||
return kPayApiService.closeOrder(url, request); // this is for local
|
// return kPayApiService.closeOrder(url, request); // this is for uat
|
||||||
// return kPayApiService.closeOrder(request); //this is for prod
|
return kPayApiService.closeOrder(request); //this is for prod
|
||||||
}
|
}
|
||||||
|
|
||||||
public Observable<KPayQRQueryRequest.QRQueryResponse> qrStatusCheck(KPayQRQueryRequest.QRQueryRequest request) {
|
public Observable<KPayQRQueryRequest.QRQueryResponse> qrStatusCheck(KPayQRQueryRequest.QRQueryRequest request) {
|
||||||
|
|||||||
@ -290,9 +290,9 @@ public abstract class BaseXPrint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void printSettlementCurrencySection(String currencyLabel, CurrencySettlementSummary summary) {
|
private void printSettlementCurrencySection(String currencyLabel, CurrencySettlementSummary summary) {
|
||||||
if (!summary.hasAnyValue()) {
|
// if (!summary.hasAnyValue()) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
boolean isDecimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
|
||||||
|
|
||||||
int totalCount = summary.saleCount + summary.preAuthCompCount + summary.refundCount + summary.cashAdvanceCount;
|
int totalCount = summary.saleCount + summary.preAuthCompCount + summary.refundCount + summary.cashAdvanceCount;
|
||||||
@ -390,6 +390,13 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
protected void printTransFooterForSettlement() {
|
||||||
|
String receiptFooter = SystemParamsOperation.getInstance().getReceiptFooter();
|
||||||
|
String finalVersion = SystemParamsOperation.getInstance().getFinalVersion();
|
||||||
|
printer.appendPrnStr("***** SETTLEMENT CONFIRM *****", fontNormal, AlignEnum.CENTER,false);
|
||||||
|
printer.appendPrnStr(receiptFooter, fontNormal, AlignEnum.CENTER,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void printTransDetail(PayDetail payDetail) {
|
protected void printTransDetail(PayDetail payDetail) {
|
||||||
|
|
||||||
@ -1600,10 +1607,10 @@ public abstract class BaseXPrint {
|
|||||||
}else{
|
}else{
|
||||||
|
|
||||||
if(isSettlement && isDuelCurrency){
|
if(isSettlement && isDuelCurrency){
|
||||||
printer.appendPrnStr("MID :" + safe(SystemParamsOperation.getInstance().getMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID :" + SystemParamsOperation.getInstance().getMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID :" + safe(SystemParamsOperation.getInstance().getTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID :" + SystemParamsOperation.getInstance().getTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("MID :" + safe(SystemParamsOperation.getInstance().getThirdHostMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID :" + SystemParamsOperation.getInstance().getThirdHostMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID :" + safe(SystemParamsOperation.getInstance().getThirdHostTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID :" + SystemParamsOperation.getInstance().getThirdHostTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
}else{
|
}else{
|
||||||
printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false);
|
printer.appendPrnStr("MID :" + payDetail.getMerchantNo(), fontNormal, AlignEnum.LEFT,false);
|
||||||
printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false);
|
printer.appendPrnStr("TID :" + payDetail.getTerminalNo(), fontNormal, AlignEnum.LEFT,false);
|
||||||
@ -1739,74 +1746,48 @@ public abstract class BaseXPrint {
|
|||||||
|
|
||||||
// ---------- PRIMARY HOST ----------
|
// ---------- PRIMARY HOST ----------
|
||||||
printer.appendPrnStr("PRIMARY HOST", fontNormal, AlignEnum.LEFT, true);
|
printer.appendPrnStr("PRIMARY HOST", fontNormal, AlignEnum.LEFT, true);
|
||||||
printer.appendPrnStr("Name : " + safe(sp.getHostName()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Name : " + sp.getHostName(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID : " + safe(sp.getTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID : " + sp.getTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("MID : " + safe(sp.getMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID : " + sp.getMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
||||||
String[] ipPort = splitIpAndPort(sp.getIpAddress());
|
String[] ipPort = splitIpAndPort(sp.getIpAddress());
|
||||||
printer.appendPrnStr("Primary IP : " + ipPort[0], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Primary IP : " + ipPort[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Primary Port : " + ipPort[1], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Primary Port : " + ipPort[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
String[] secIpPort = splitIpAndPort(sp.getSecIpAddress());
|
String[] secIpPort = splitIpAndPort(sp.getSecIpAddress());
|
||||||
printer.appendPrnStr("Secondary IP : " + secIpPort[0], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Secondary IP : " + secIpPort[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Secondary Port: " + secIpPort[1], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Secondary Port: " + secIpPort[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Currency : " + normalizeHostCurrency(sp.getCurrencyType() == null ? "" : sp.getCurrencyType().toString()), fontNormal, AlignEnum.LEFT, false);
|
sp.getCurrencyType();
|
||||||
|
printer.appendPrnStr(sp.getCurrencyType().toString(), fontNormal, AlignEnum.LEFT, false);
|
||||||
dotBreak();
|
dotBreak();
|
||||||
|
// ---------- SECONDARY HOST (optional) ----------
|
||||||
|
if (!TextUtils.isEmpty(sp.getSecHostName())) {
|
||||||
|
printer.appendPrnStr("QR HOST", fontNormal, AlignEnum.LEFT, true);
|
||||||
|
printer.appendPrnStr("Name : " + sp.getSecHostName(), fontNormal, AlignEnum.LEFT, false);
|
||||||
|
printer.appendPrnStr("SHORT CODE : " + sp.getShortCode(), fontNormal, AlignEnum.LEFT, false);
|
||||||
|
String[] secHostIp = splitIpAndPort(sp.getSecHostIpAddress());
|
||||||
|
printer.appendPrnStr("Primary Ip : " + secHostIp[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
|
printer.appendPrnStr("Primary Port : " + secHostIp[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
|
String[] secHostSecIp = splitIpAndPort(sp.getSecHostSecIpAddress());
|
||||||
|
printer.appendPrnStr("Secondary Ip : " + secHostSecIp[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
|
printer.appendPrnStr("Secondary Port: " + secHostSecIp[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
|
String qrHostCurrency = TextUtils.isEmpty(sp.getSecHostCurrency()) ? String.valueOf(sp.getCurrencyType()) : sp.getSecHostCurrency();
|
||||||
|
printer.appendPrnStr("Currency Code : " + qrHostCurrency, fontNormal, AlignEnum.LEFT, false);
|
||||||
|
dotBreak();
|
||||||
|
printer.appendPrnStr("App Version : " + getAppVersion(), fontNormal, AlignEnum.LEFT, false);
|
||||||
|
}
|
||||||
|
|
||||||
// ---------- SECONDARY HOST ----------
|
// ---------- THIRD HOST (optional) ----------
|
||||||
printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true);
|
if (!TextUtils.isEmpty(sp.getThirdHostName())) {
|
||||||
printer.appendPrnStr("Name : " + safe(sp.getThirdHostName()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true);
|
||||||
printer.appendPrnStr("TID : " + safe(sp.getThirdHostTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Name : " + sp.getThirdHostName(), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("MID : " + safe(sp.getThirdHostMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("SHORT CODE : " + sp.getThirdHostShortCode(), fontNormal, AlignEnum.LEFT, false);
|
||||||
String[] thirdHostIp = splitIpAndPort(sp.getThirdHostIpAddress());
|
String[] thirdHostIp = splitIpAndPort(sp.getThirdHostIpAddress());
|
||||||
printer.appendPrnStr("Primary IP : " + thirdHostIp[0], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Primary Ip : " + thirdHostIp[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Primary Port : " + thirdHostIp[1], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Primary Port : " + thirdHostIp[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
String[] thirdHostSecIp = splitIpAndPort(sp.getThirdHostSecIpAddress());
|
String[] thirdHostSecIp = splitIpAndPort(sp.getThirdHostSecIpAddress());
|
||||||
printer.appendPrnStr("Secondary IP : " + thirdHostSecIp[0], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Secondary Ip : " + thirdHostSecIp[0], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Secondary Port: " + thirdHostSecIp[1], fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Secondary Port: " + thirdHostSecIp[1], fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Currency : " + normalizeHostCurrency(safe(sp.getThirdHostCurrency())), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Currency Code : " + sp.getThirdHostCurrency(), fontNormal, AlignEnum.LEFT, false);
|
||||||
dotBreak();
|
dotBreak();
|
||||||
|
|
||||||
// ---------- QR HOST ----------
|
|
||||||
printer.appendPrnStr("QR HOST", fontNormal, AlignEnum.LEFT, true);
|
|
||||||
printer.appendPrnStr("Name : " + safe(sp.getSecHostName()), fontNormal, AlignEnum.LEFT, false);
|
|
||||||
printer.appendPrnStr("Short Code : " + safe(sp.getShortCode()), fontNormal, AlignEnum.LEFT, false);
|
|
||||||
String[] qrHostIp = splitIpAndPort(sp.getSecHostIpAddress());
|
|
||||||
printer.appendPrnStr("Primary IP : " + qrHostIp[0], fontNormal, AlignEnum.LEFT, false);
|
|
||||||
printer.appendPrnStr("Primary Port : " + qrHostIp[1], fontNormal, AlignEnum.LEFT, false);
|
|
||||||
String[] qrHostSecIp = splitIpAndPort(sp.getSecHostSecIpAddress());
|
|
||||||
printer.appendPrnStr("Secondary IP : " + qrHostSecIp[0], fontNormal, AlignEnum.LEFT, false);
|
|
||||||
printer.appendPrnStr("Secondary Port: " + qrHostSecIp[1], fontNormal, AlignEnum.LEFT, false);
|
|
||||||
printer.appendPrnStr("Currency : " + normalizeHostCurrency(safe(sp.getSecHostCurrency())), fontNormal, AlignEnum.LEFT, false);
|
|
||||||
dotBreak();
|
|
||||||
|
|
||||||
printer.appendPrnStr("App Version : " + getAppVersion(), fontNormal, AlignEnum.LEFT, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String safe(String value) {
|
|
||||||
return value == null ? "" : value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String normalizeHostCurrency(String raw) {
|
|
||||||
if (TextUtils.isEmpty(raw)) return "";
|
|
||||||
String value = raw.trim().toUpperCase();
|
|
||||||
switch (value) {
|
|
||||||
case "104":
|
|
||||||
case "MMK":
|
|
||||||
return "MMK";
|
|
||||||
case "840":
|
|
||||||
case "USD":
|
|
||||||
return "USD";
|
|
||||||
case "156":
|
|
||||||
case "CNY":
|
|
||||||
case "RMB":
|
|
||||||
return "CNY";
|
|
||||||
case "764":
|
|
||||||
case "THB":
|
|
||||||
return "THB";
|
|
||||||
case "643":
|
|
||||||
case "RUB":
|
|
||||||
return "RUB";
|
|
||||||
default:
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -193,7 +193,8 @@ public class PrintXImpl extends BaseXPrint implements PrintX {
|
|||||||
printMerchantHeader();
|
printMerchantHeader();
|
||||||
printTransHeader(payDetail);
|
printTransHeader(payDetail);
|
||||||
printTransDetailSettlement(payDetail);
|
printTransDetailSettlement(payDetail);
|
||||||
printTransFooterSummary();
|
// printTransFooterSummary();
|
||||||
|
printTransFooterForSettlement();
|
||||||
|
|
||||||
emptyLine(1);
|
emptyLine(1);
|
||||||
startPrintNex();
|
startPrintNex();
|
||||||
|
|||||||
@ -40,12 +40,10 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
private boolean checkExpSwitch = false;
|
private boolean checkExpSwitch = false;
|
||||||
|
|
||||||
// private String tmsAddress = "https://tms.smile-mm.com";
|
// private String tmsAddress = "https://api-tms.kbzbank.com/sirius";
|
||||||
// private String tmsAddress = "http://128.199.170.203";
|
// private String ereceiptAddress = "https://api-tms.kbzbank.com/receipt";
|
||||||
private String tmsAddress = "https://sirius-nest.utsmyanmar.com/api/v1";
|
private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
|
||||||
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; //for uat
|
private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt";
|
||||||
private String ereceiptAddress = "https://receipt-nest.utsmyanmar.com/api/v1"; //for on prime
|
|
||||||
// private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; //for uat
|
|
||||||
|
|
||||||
private String binValues = "";
|
private String binValues = "";
|
||||||
private String restrictedBinValues = "";
|
private String restrictedBinValues = "";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user