Compare commits
No commits in common. "daba685f40d0eb70e46a086d3a72c7f193a27d6f" and "d9de201e88fb2b2a8ccfdc14ec527321d57edcbb" have entirely different histories.
daba685f40
...
d9de201e88
@ -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.kbzbank.com/sirius");
|
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
||||||
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms.kbzbank.com/receipt");
|
SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com/api/v1");
|
||||||
SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
|
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
||||||
SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
|
SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com/api/v1");
|
||||||
|
|
||||||
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,6 +445,8 @@ 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
|
||||||
@ -562,6 +564,9 @@ 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,25 +4,18 @@ 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;
|
||||||
@ -78,7 +71,6 @@ 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;
|
||||||
@ -108,13 +100,6 @@ 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
|
||||||
@ -177,10 +162,18 @@ 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);
|
||||||
@ -454,190 +447,7 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showCurrencyChooserForCardSale() {
|
private void showCurrencyChooserForCardSale() {
|
||||||
List<String> currencies = getAvailableCardSaleCurrencies();
|
currencySelectionHelper.showCardCurrencyChooser(this::startCardSaleFlow);
|
||||||
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,25 +2,16 @@ 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;
|
||||||
@ -34,8 +25,6 @@ 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 {
|
||||||
|
|
||||||
@ -47,13 +36,6 @@ 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;
|
||||||
@ -308,190 +290,7 @@ public class DashboardTransFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showCurrencyChooserForCardFlow(Runnable onSelected) {
|
private void showCurrencyChooserForCardFlow(Runnable onSelected) {
|
||||||
List<String> currencies = getAvailableCardSaleCurrencies();
|
currencySelectionHelper.showCardCurrencyChooser(onSelected);
|
||||||
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,7 +1,5 @@
|
|||||||
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;
|
||||||
|
|
||||||
@ -42,8 +40,6 @@ 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() {
|
||||||
@ -80,7 +76,6 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
stopPrintingAnimation();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +105,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) {
|
||||||
@ -145,7 +140,6 @@ public class ReprintReceiptFragment extends DataBindingFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Success) {
|
} else if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Success) {
|
||||||
startPrintingAnimation();
|
|
||||||
printReceipt(payDetail);
|
printReceipt(payDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -201,44 +195,17 @@ 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,7 +42,8 @@ public class RefundCertificateManager {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
String downloadBase = tmsAddress.trim() + "/file/download?filePath=";
|
// String downloadBase = tmsAddress.trim() + "/api/v1/file/download?filePath="; //local
|
||||||
|
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,10 +1,6 @@
|
|||||||
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;
|
||||||
@ -19,8 +15,6 @@ 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;
|
||||||
|
|
||||||
|
|
||||||
@ -32,9 +26,6 @@ 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() {
|
||||||
@ -54,7 +45,6 @@ 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,13 +56,6 @@ 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;
|
||||||
@ -98,72 +81,7 @@ public class HostConfigFragment extends DataBindingFragment {
|
|||||||
showDeclineDialog("Printer is disabled!");
|
showDeclineDialog("Printer is disabled!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isPrintingHostConfig) {
|
sharedViewModel.printTerminalHostConfigs();
|
||||||
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,10 +78,6 @@ 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 (cardHosts.size() >= 2) {
|
if (isDualCurrencyEnabled && 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 (cardHosts.size() > 1) {
|
if (isDualCurrencyEnabled && 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,9 +142,7 @@
|
|||||||
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"
|
||||||
@ -152,6 +150,7 @@
|
|||||||
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,9 +4,8 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
|
||||||
<import type="android.text.TextUtils"/>
|
<import type="android.text.TextUtils"/>
|
||||||
|
<import type="android.view.View"/>
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="com.utsmm.kbz.ui.settings.HostConfigViewModel"/>
|
type="com.utsmm.kbz.ui.settings.HostConfigViewModel"/>
|
||||||
@ -100,8 +99,7 @@
|
|||||||
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.VISIBLE : View.GONE}'
|
android:visibility="@{TextUtils.isEmpty(viewModel.hostName) ? View.GONE : View.VISIBLE}">
|
||||||
tools:visibility="visible">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="PRIMARY HOST"
|
android:text="PRIMARY HOST"
|
||||||
@ -115,48 +113,56 @@
|
|||||||
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 android:visibility='@{!TextUtils.isEmpty(viewModel.tid) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.mid) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.primaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.primaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secondaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secondaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.currencyCode) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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}'/>
|
||||||
@ -168,6 +174,7 @@
|
|||||||
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"/>
|
||||||
|
|
||||||
@ -176,8 +183,7 @@
|
|||||||
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.VISIBLE : View.GONE}'
|
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostName) ? View.GONE : View.VISIBLE}">
|
||||||
tools:visibility="gone">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="SECONDARY HOST"
|
android:text="SECONDARY HOST"
|
||||||
@ -194,43 +200,57 @@
|
|||||||
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 android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostShortCode) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
<TextView style="@style/HostLabelStyle" android:text="Short Code"/>
|
android:visibility="@{TextUtils.isEmpty(viewModel.thirdHostTid) ? View.GONE : View.VISIBLE}">
|
||||||
|
<TextView style="@style/HostLabelStyle" android:text="TID"/>
|
||||||
<TextView style="@style/HostValueStyle"
|
<TextView style="@style/HostValueStyle"
|
||||||
android:text='@{": " + viewModel.thirdHostShortCode}'/>
|
android:text='@{": " + viewModel.thirdHostTid}'/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
<TableRow android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostPrimaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostPrimaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostSecondaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostSecondaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.thirdHostCurrency) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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}'/>
|
||||||
@ -241,6 +261,7 @@
|
|||||||
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>
|
||||||
@ -250,8 +271,7 @@
|
|||||||
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.VISIBLE : View.GONE}'
|
android:visibility="@{TextUtils.isEmpty(viewModel.secHostName) ? View.GONE : View.VISIBLE}">
|
||||||
tools:visibility="visible">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="QR HOST"
|
android:text="QR HOST"
|
||||||
@ -268,43 +288,50 @@
|
|||||||
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 android:visibility='@{!TextUtils.isEmpty(viewModel.shortCode) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secHostPrimaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secHostPrimaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secHostSecondaryIp) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secHostSecondaryPort) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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 android:visibility='@{!TextUtils.isEmpty(viewModel.secHostCurrency) ? View.VISIBLE : View.GONE}'>
|
<TableRow
|
||||||
|
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}'/>
|
||||||
@ -315,6 +342,7 @@
|
|||||||
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>
|
||||||
@ -339,7 +367,6 @@
|
|||||||
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">
|
||||||
|
|
||||||
@ -359,6 +386,7 @@
|
|||||||
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,63 +127,6 @@
|
|||||||
|
|
||||||
</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,7 +255,6 @@
|
|||||||
<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": 33,
|
"versionCode": 1,
|
||||||
"versionName": "2.13-uat",
|
"versionName": "1.00-uat",
|
||||||
"outputFile": "app-uat-release.apk"
|
"outputFile": "app-uat-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -27,6 +27,10 @@ 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");
|
||||||
@ -50,8 +54,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,8 +254,7 @@ public class NetworkModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (baseUrl.isEmpty()) {
|
if (baseUrl.isEmpty()) {
|
||||||
// baseUrl = "http://api-uat.kbzpay.com/payment/gateway/uat/"; //UAT
|
baseUrl = "http://api-uat.kbzpay.com/payment/gateway/uat/";
|
||||||
baseUrl = "https://api.kbzpay.com/payment/gateway/"; //Prod
|
|
||||||
}
|
}
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
.baseUrl(baseUrl)
|
.baseUrl(baseUrl)
|
||||||
@ -311,8 +310,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();
|
||||||
|
|
||||||
|
|
||||||
@ -326,7 +325,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 = "";
|
pass = "test123";
|
||||||
}
|
}
|
||||||
|
|
||||||
char[] password = pass.toCharArray();
|
char[] password = pass.toCharArray();
|
||||||
|
|||||||
@ -3,10 +3,15 @@ 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 {
|
||||||
|
|
||||||
@ -18,13 +23,13 @@ public interface KPayApiService {
|
|||||||
Observable<KPayQRQueryRequest.QRQueryResponse> checkStatus(@Body KPayQRQueryRequest.QRQueryRequest waveStatusRequest);
|
Observable<KPayQRQueryRequest.QRQueryResponse> checkStatus(@Body KPayQRQueryRequest.QRQueryRequest waveStatusRequest);
|
||||||
|
|
||||||
|
|
||||||
//this accepts "url" bez this api start with https and other are http in uat
|
//this accept "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 uat
|
return kPayApiService.closeOrder(url, request); // this is for local
|
||||||
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,13 +390,6 @@ 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) {
|
||||||
|
|
||||||
@ -1607,10 +1600,10 @@ public abstract class BaseXPrint {
|
|||||||
}else{
|
}else{
|
||||||
|
|
||||||
if(isSettlement && isDuelCurrency){
|
if(isSettlement && isDuelCurrency){
|
||||||
printer.appendPrnStr("MID :" + SystemParamsOperation.getInstance().getMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID :" + safe(SystemParamsOperation.getInstance().getMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID :" + SystemParamsOperation.getInstance().getTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID :" + safe(SystemParamsOperation.getInstance().getTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("MID :" + SystemParamsOperation.getInstance().getThirdHostMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID :" + safe(SystemParamsOperation.getInstance().getThirdHostMerchantId()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID :" + SystemParamsOperation.getInstance().getThirdHostTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID :" + safe(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);
|
||||||
@ -1746,48 +1739,74 @@ 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 : " + sp.getHostName(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Name : " + safe(sp.getHostName()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("TID : " + sp.getTerminalId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID : " + safe(sp.getTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("MID : " + sp.getMerchantId(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID : " + safe(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);
|
||||||
sp.getCurrencyType();
|
printer.appendPrnStr("Currency : " + normalizeHostCurrency(sp.getCurrencyType() == null ? "" : sp.getCurrencyType().toString()), fontNormal, AlignEnum.LEFT, false);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------- THIRD HOST (optional) ----------
|
// ---------- SECONDARY HOST ----------
|
||||||
if (!TextUtils.isEmpty(sp.getThirdHostName())) {
|
printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true);
|
||||||
printer.appendPrnStr("SECONDARY HOST", fontNormal, AlignEnum.LEFT, true);
|
printer.appendPrnStr("Name : " + safe(sp.getThirdHostName()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("Name : " + sp.getThirdHostName(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("TID : " + safe(sp.getThirdHostTerminalId()), fontNormal, AlignEnum.LEFT, false);
|
||||||
printer.appendPrnStr("SHORT CODE : " + sp.getThirdHostShortCode(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("MID : " + safe(sp.getThirdHostMerchantId()), 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 Code : " + sp.getThirdHostCurrency(), fontNormal, AlignEnum.LEFT, false);
|
printer.appendPrnStr("Currency : " + normalizeHostCurrency(safe(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,8 +193,7 @@ 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,10 +40,12 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
private boolean checkExpSwitch = false;
|
private boolean checkExpSwitch = false;
|
||||||
|
|
||||||
// private String tmsAddress = "https://api-tms.kbzbank.com/sirius";
|
// private String tmsAddress = "https://tms.smile-mm.com";
|
||||||
// private String ereceiptAddress = "https://api-tms.kbzbank.com/receipt";
|
// private String tmsAddress = "http://128.199.170.203";
|
||||||
private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
|
private String tmsAddress = "https://sirius-nest.utsmyanmar.com/api/v1";
|
||||||
private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt";
|
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; //for uat
|
||||||
|
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