update button hide/show on qr refund

This commit is contained in:
MooN 2025-12-09 16:07:21 +06:30
parent d42ee5d2f7
commit 424678e0ca
49 changed files with 2683 additions and 59 deletions

View File

@ -12,7 +12,7 @@ android {
defaultConfig {
applicationId "com.utsmm.kbz"
minSdk 23
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
@ -29,14 +29,14 @@ android {
dimension "env"
applicationId "com.utsmm.kbz.sit"
versionNameSuffix "-sit"
resValue "string", "app_name", "KBZ-POS-SIT"
resValue "string", "app_name", "KBZ-SIT"
}
uat {
dimension "env"
applicationId "com.utsmm.kbz.uat"
versionNameSuffix "-uat"
resValue "string", "app_name", "KBZ-POS-UAT"
resValue "string", "app_name", "KBZ-UAT"
}
prod {

View File

@ -58,6 +58,8 @@ public class MainViewModel extends ViewModel {
public MutableLiveData<Boolean> kPayStatus = new MutableLiveData<>();
public MutableLiveData<Boolean> voidStatus = new MutableLiveData<>();
public SingleLiveEvent<String> disabledMsg = new SingleLiveEvent<>();
@ -98,6 +100,8 @@ public class MainViewModel extends ViewModel {
kPayStatus.setValue(SystemParamsOperation.getInstance().getQRPayStatus());
disabledMsg.setValue(SystemParamsOperation.getInstance().getDisabledMsg());
voidStatus.setValue(SystemParamsOperation.getInstance().getVoidStatus());
}
@Override

View File

@ -51,10 +51,12 @@ public class QRPayAdapter extends RecyclerView.Adapter<QRPayAdapter.ViewHolder>
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
QRPayItem item = items.get(position);
holder.binding.setText(item.title);
holder.binding.setIcon(item.icon);
holder.binding.setItem(item);
holder.binding.executePendingBindings();
holder.binding.btnItem.setOnClickListener(v -> {
if(listener != null){
if(item.isActive && listener != null){
listener.onItemClick(position);
}
});

View File

@ -100,10 +100,18 @@ public class InputAmountFragment extends DataBindingFragment implements DataBind
setToolBarTitleWithBackIcon(getResourceString(R.string.txt_subtitle_amount));
boolean decimalEnabled = SystemParamsOperation.getInstance().getDecimalEnable();
boolean qrDecimalEnabled = SystemParamsOperation.getInstance().isQrDecimalEnable();
boolean isDecimalEnabled;
if(sharedViewModel.transactionsType.getValue() == TransactionsType.MMQR){
isDecimalEnabled = qrDecimalEnabled;
}else {
isDecimalEnabled = decimalEnabled;
}
View keyboardView = getView().findViewById(R.id.numberKeyboard);
if (keyboardView instanceof NumberKeyboard) {
((NumberKeyboard) keyboardView).setDecimalEnable(decimalEnabled);
((NumberKeyboard) keyboardView).setDecimalEnable(isDecimalEnabled);
}
if(sharedViewModel.isEcr.getValue() != null){

View File

@ -405,7 +405,7 @@ public class SharedViewModel extends ViewModel {
}
}
private void startPrintProcessSettlement() {
public void startPrintProcessSettlement() {
if(payDetail.getValue() == null) return;

View File

@ -17,12 +17,14 @@ import com.utsmm.kbz.util.tms.TMSUtil;
import com.utsmyanmar.baselib.util.DataBindingConfig;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.utils.LogUtil;
import com.utsmyanmar.paylibs.utils.POSUtil;
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
import com.utsmyanmar.paylibs.utils.enums.CurrencyType;
import com.utsmyanmar.paylibs.utils.enums.HostType;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -33,9 +35,6 @@ public class QRPayFragment extends DataBindingFragment {
private static final int hostId = Constants.NAV_HOST_ID;
private int routeId;
private static final int currentId = R.id.qrFragment;
private Observer<PayDetail> observeLastTrans;
private PayDetail lastPay;
@ -54,12 +53,20 @@ public class QRPayFragment extends DataBindingFragment {
@Override
protected DataBindingConfig getDataBindingConfig() {
boolean isQrRefundEnable = SystemParamsOperation.getInstance().getQrRefundEnable();
LogUtil.d("KMK", "isQrRefundEnable =>" + isQrRefundEnable);
List<QRPayItem> features = new ArrayList<>();
features.add(new QRPayItem("Sale", R.drawable.ic_qr_pay, true));
if(isQrRefundEnable){
features.add(new QRPayItem("Refund", R.drawable.ic_refund, false));
}
features.add(new QRPayItem("History", R.drawable.ic_history, true));
List<QRPayItem> features = List.of(
new QRPayItem("Sale", R.drawable.ic_qr_pay),
new QRPayItem("Refund", R.drawable.ic_refund),
new QRPayItem("History", R.drawable.ic_history)
);
// List<QRPayItem> features = List.of(
// new QRPayItem("Sale", R.drawable.ic_qr_pay, true),
// new QRPayItem("Refund", R.drawable.ic_refund, false),
// new QRPayItem("History", R.drawable.ic_history, true)
// );
QRPayAdapter adapter = new QRPayAdapter(features, position -> {
QRPayItem selectedBtn = features.get(position);

View File

@ -3,9 +3,12 @@ package com.utsmm.kbz.ui.qr_pay;
public class QRPayItem {
public String title;
public int icon;
public boolean isActive;
public QRPayItem(String title, int icon) {
public QRPayItem(String title, int icon, boolean isActive) {
this.title = title;
this.icon = icon;
this.isActive = isActive;
}
}

View File

@ -11,6 +11,7 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.res.ResourcesCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -49,8 +50,8 @@ public class HostConfigFragment extends DataBindingFragment {
private HostConfigViewModel viewModel;
protected Printer printer;
int FONT_NORMAL = 20;
int FONT_HEADER = 28;
int FONT_NORMAL = 24;
int FONT_HEADER = 30;
@Override
protected void initViewModel() {
@ -112,20 +113,18 @@ public class HostConfigFragment extends DataBindingFragment {
return;
}
printer.setGray(GrayLevelEnum.LEVEL_2);
printer.setTypeface(Typeface.SANS_SERIF);
Typeface typeface = ResourcesCompat.getFont(requireContext(), R.font.consolas_regular);
printer.setTypeface(typeface);
SystemParamsOperation sp = SystemParamsOperation.getInstance();
Bitmap bitmap = BitmapFactory.decodeResource(requireContext().getResources(), com.utsmyanmar.paylibs.R.drawable.print_kbz_logo);
Bitmap bitmap = BitmapFactory.decodeResource(requireContext().getResources(), R.drawable.kbz_receipt_logo);
printLogo(bitmap);
printer.appendPrnStr("\n", FONT_NORMAL, AlignEnum.CENTER, false);
printer.appendPrnStr("TERMINAL CONFIGURATION", FONT_HEADER, AlignEnum.CENTER, true);
printer.appendPrnStr("\n", FONT_NORMAL, AlignEnum.CENTER, false);
printer.appendPrnStr(sp.getMerchantName(), FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr(sp.getMerchantPhoneNo(), FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr(sp.getMerchantName(), FONT_NORMAL, AlignEnum.CENTER, false);
printer.appendPrnStr(sp.getMerchantAddress(), FONT_NORMAL, AlignEnum.CENTER, false);
printer.appendPrnStr(sp.getMerchantAddress2(), FONT_NORMAL, AlignEnum.CENTER, false);
printer.appendPrnStr("\n--------------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr("\n---------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr("PRIMARY HOST", FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("Name : " + sp.getHostName(), FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr("TID : " + sp.getTerminalId(), FONT_NORMAL, AlignEnum.LEFT, false);
@ -143,7 +142,7 @@ public class HostConfigFragment extends DataBindingFragment {
printer.appendPrnStr("Secondary Ip : " + secIp, FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("Secondary Port: " + secPort, FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("\n--------------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr("\n---------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
if (!TextUtils.isEmpty(sp.getSecHostName())) {
printer.appendPrnStr("SECONDARY HOST", FONT_NORMAL, AlignEnum.LEFT, true);
@ -163,7 +162,7 @@ public class HostConfigFragment extends DataBindingFragment {
printer.appendPrnStr("Secondary Ip : " + secHostSecIp, FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("Secondary Port: " + secHostSecPort, FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("Currency Code : " + sp.getCurrencyType(), FONT_NORMAL, AlignEnum.LEFT, true);
printer.appendPrnStr("\n--------------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
printer.appendPrnStr("\n---------------------------\n", FONT_NORMAL, AlignEnum.LEFT, false);
}
printer.startPrint(true, ret -> {

View File

@ -602,8 +602,11 @@ public class TMSSetupsImpl implements TMSSetups{
SystemParamsOperation.getInstance().setAppKey(data);
} else if (TextUtils.equals(name,"app_id")) {
SystemParamsOperation.getInstance().setAppId(data);
}else if (TextUtils.equals(name, "qr_decimal_enable")) {
SystemParamsOperation.getInstance().setQrDecimalEnable(parseBoolean(data));
}else if (TextUtils.equals(name, "qr_refund_enable")){
SystemParamsOperation.getInstance().setQrRefundEnable(parseBoolean(data));
}
}
SystemParamsOperation.getInstance().setCarouselUrls(convertToString(imgUrls));

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

View File

@ -167,6 +167,9 @@
android:layout_width="120dp"
android:layout_height="120dp"
android:background="@drawable/honey"
android:clickable="@{mainViewModel.voidStatus}"
android:focusable="@{mainViewModel.voidStatus}"
android:alpha="@{mainViewModel.voidStatus ? 1f : 0.5f}"
android:onClick="@{() -> click.onClickVoid()}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bt4"

View File

@ -7,11 +7,8 @@
<import type="com.utsmm.kbz.R"/>
<import type="com.utsmm.kbz.util.enums.FeaturesType" />
<variable
name="text"
type="String" />
<variable
name="icon"
type="Integer" />
name="item"
type="com.utsmm.kbz.ui.qr_pay.QRPayItem" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_height="wrap_content"
@ -25,8 +22,6 @@
app:cardElevation="6dp"
android:layout_margin="6dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:background="@color/white"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
@ -48,7 +43,7 @@
android:layout_width="38dp"
android:layout_height="38dp"
android:layout_marginBottom="8dp"
app:srcUrl="@{icon}"
app:srcUrl="@{item.icon}"
app:tint="@color/colorPrimary"
tools:src="@drawable/ic_sale"
tools:tint="@color/colorPrimary" />
@ -60,7 +55,7 @@
android:fontFamily="@font/rubik_medium"
android:gravity="center"
android:maxLines="2"
android:text="@{text}"
android:text="@{item.title}"
tools:text="button title"
android:textAlignment="center"
android:textColor="@color/colorPrimary"

View File

@ -285,8 +285,8 @@ public class NetworkModule {
tmsAddress = getTMSUrlFromNative();
}
String baseUrl = tmsAddress.trim() + "/api/v1/";
// String baseUrl = tmsAddress.trim() + "/";
// String baseUrl = tmsAddress.trim() + "/api/v1/";
String baseUrl = tmsAddress.trim() + "/";
final Gson gson =
new GsonBuilder().create();

View File

@ -1,2 +1,2 @@
configurations.maybeCreate("default")
artifacts.add("default", file('nexgo-sdk-dlkey-1.0.2.aar'))
artifacts.add("default", file('nexgo-sdk-dlkey-1.0.3.aar'))

View File

@ -0,0 +1 @@
i/AndroidManifest.xml

View File

@ -0,0 +1 @@
o/com.nexgo.downloadkey-r.txt

View File

@ -0,0 +1 @@
o/nexgo-sdk-dlkey-1.0.3-api.jar

View File

@ -0,0 +1 @@
o/nexgo-sdk-dlkey-1.0.3-runtime.jar

View File

@ -0,0 +1 @@
o/com.nexgo.downloadkey

View File

@ -0,0 +1 @@
o/nexgo-sdk-dlkey-1.0.3

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nexgo.downloadkey"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true" >
</application>
</manifest>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">downloadkey</string>
</resources>

View File

@ -0,0 +1 @@
i/jars/classes.jar

View File

@ -0,0 +1 @@
o/nexgo-sdk-dlkey-1.0.3-runtime

Binary file not shown.

View File

@ -1573,4 +1573,25 @@ public class SystemParamsOperation {
return params.isQrPartialRefundEnable();
}
public void setQrDecimalEnable(boolean enable){
SystemParamsSettings params = getSystemParamsSettings();
params.setQrDecimalEnable(enable);
saveSystemParamsSettings(params);
}
public boolean isQrDecimalEnable(){
SystemParamsSettings params = getSystemParamsSettings();
return params.isQrDecimalEnable();
}
public void setQrRefundEnable(boolean enable) {
SystemParamsSettings params = getSystemParamsSettings();
params.setQrRefundEnable(enable);
saveSystemParamsSettings(params);
}
public boolean getQrRefundEnable(){
SystemParamsSettings params = getSystemParamsSettings();
return params.getQrRefundEnable();
}
}

View File

@ -42,8 +42,8 @@ public class SystemParamsSettings implements Serializable {
// private String tmsAddress = "https://tms.smile-mm.com";
// private String tmsAddress = "http://128.199.170.203";
private String tmsAddress = "http://sirius-nest.utsmyanmar.com";
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
// private String tmsAddress = "http://sirius-nest.utsmyanmar.com";
private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com";
private String terminalCapability = "E0E8C8";
@ -238,6 +238,9 @@ public class SystemParamsSettings implements Serializable {
private boolean qrPartialRefundEnable = false;
private boolean qrDecimalEnable = false;
private boolean qrRefundEnable = false;
public boolean isQrPartialRefundEnable(){
return qrPartialRefundEnable;
}
@ -932,6 +935,22 @@ public class SystemParamsSettings implements Serializable {
this.emvEnabled = emvEnabled;
}
public boolean isQrDecimalEnable() {
return qrDecimalEnable;
}
public void setQrDecimalEnable(boolean qrDecimalEnable){
this.qrDecimalEnable = qrDecimalEnable;
}
public void setQrRefundEnable(boolean qrRefundEnable) {
this.qrRefundEnable = qrRefundEnable;
}
public boolean getQrRefundEnable(){
return qrRefundEnable;
}
/* // 流水号起始
private String serialNum = Configs.getInstance().SERIAL_NUM();
// 批次号起始