dashboard fixed

This commit is contained in:
MooN 2025-12-02 23:47:30 +06:30
parent a6db8970af
commit 6b1c6ef4b5
16 changed files with 467 additions and 280 deletions

View File

@ -931,5 +931,24 @@ public class MainFragment extends DataBindingFragment {
safeNavigateToRouteId();
}
}
public void onClickVoid(){
if (mainViewModel.payDetailSingle.getValue() != null) {
mainViewModel.startReversal(mainViewModel.payDetailSingle.getValue());
} else if (checkTid()) {
showDeclineDialog("Please Download Config!");
} else {
sharedViewModel.setTransactionsType(TransactionsType.VOID);
// sharedViewModel.transMenu.postValue(TransMenu.TRANSACTIONS);
sharedViewModel.setTransMenu(TransMenu.TRANSACTIONS);
routeId = R.id.action_nav_main_to_inputPasswordFragment;
safeRouteTo(currentId(),routeId, hostId());
}
}
public void onClickReport(){
routeId = R.id.action_nav_main_to_manageFunctionFragment;
safeRouteTo(currentId(), routeId, hostId());
}
}
}

View File

@ -3,6 +3,8 @@ package com.utsmm.kbz.ui.adapters;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.PorterDuff;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
@ -299,4 +301,5 @@ public class MyBindingAdapter {
textView.setText("TRC:"+payDetail.getVoucherNo());
}
}
}

View File

@ -13,6 +13,7 @@ import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptResponse;
import com.utsmyanmar.baselib.network.model.sirius.SiriusRequest;
import com.utsmyanmar.baselib.network.model.sirius.SiriusResponse;
import com.utsmyanmar.baselib.repo.Repository;
import com.utsmyanmar.baselib.util.TerminalUtil;
import com.utsmyanmar.ecr.data.TransType;
import com.utsmyanmar.ecr.data.model.Transactions;
import com.utsmyanmar.paylibs.model.PayDetail;
@ -43,10 +44,6 @@ import javax.inject.Inject;
@HiltViewModel
public class SharedViewModel extends ViewModel {
public MutableLiveData<String> terminalId = new MutableLiveData<>();
public MutableLiveData<Boolean> qrPartialRefundEnable = new MutableLiveData<>();
private static final String TAG = SharedViewModel.class.getSimpleName();
private final Repository repository;
@ -170,6 +167,9 @@ public class SharedViewModel extends ViewModel {
private PayDetail mPayDetail = new PayDetail();
public MutableLiveData<String> serialNumber = new MutableLiveData<>();
// Updated constructor for Hilt ViewModel
@Inject
public SharedViewModel(Repository repository) {
@ -177,10 +177,8 @@ public class SharedViewModel extends ViewModel {
setPrintStatus(PrintStatus.FIRST_PRINT);
isReprint.setValue(false);
cardNo.setValue("");
String tid = SystemParamsOperation.getInstance().getTerminalId();
terminalId.setValue(tid);
boolean isQrPartialRefundEnable = SystemParamsOperation.getInstance().isQrPartialRefundEnable();
qrPartialRefundEnable.setValue(isQrPartialRefundEnable);
String sn = TerminalUtil.getInstance().getSerialNo();
serialNumber.setValue(sn);
}

View File

@ -14,7 +14,7 @@ import androidx.annotation.Nullable;
import com.utsmm.kbz.util.tms.TMSUtil;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.network.model.KPayRefund;
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptQRRequest;
//import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptQRRequest;
import com.utsmyanmar.baselib.util.DataBindingConfig;
import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.model.TradeData;

View File

@ -335,7 +335,7 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi
} catch (Exception e) {
LogUtil.d(TAG, "On Exception::");
sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "QR Failed! :" + e.getMessage()));
// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "QR Failed! :" + e.getMessage()));
e.printStackTrace();
EReceiptRequest request = EReceiptUtil.getInstance().generateQRReceipt(payDetail, TransResultStatus.TIME_OUT);
sharedViewModel.pushReceipt(request);
@ -445,44 +445,44 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi
}
private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) {
// Timestamp (MMddHHmmss)
String currentTimestamp = new java.text.SimpleDateFormat(
"MMddHHmmss", java.util.Locale.getDefault()
).format(new java.util.Date());
// Device Info
String serial = TMSUtil.getInstance().getSerialNumber();
String appId = requireActivity().getPackageName();
// Terminal Info
// String terminalId = SystemParamsOperation.getInstance().getTerminalId();
// String merchantId = SystemParamsOperation.getInstance().getMerchantId();
// Amount convert (long cents double 0.00)
double realAmount = payDetail.getAmount() / 100.0;
DecimalFormat df = new DecimalFormat("0.00");
String amount = df.format(realAmount);
EReceiptQRRequest request = new EReceiptQRRequest();
request.setDE3("QR"); // QR Process Code
request.setDE4(amount); // Amount
request.setDE7(currentTimestamp); // Timestamp
request.setDE37(payDetail.getReferNo()); // Reference No
request.setDE39(isSuccess ? "A" : "E"); // A=Approved, D=Declined/Timeout
request.setDE41(terminalId);
request.setDE42(merchantId);
request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency
request.setSerial(serial);
request.setInvoiceNumber(payDetail.getInvoiceNo());
request.setDE11(payDetail.getVoucherNo()); // STAN
request.setAppId(appId);
request.setDescription(reason); // Anything: success / timeout / error message
return request;
}
// private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) {
//
// // Timestamp (MMddHHmmss)
// String currentTimestamp = new java.text.SimpleDateFormat(
// "MMddHHmmss", java.util.Locale.getDefault()
// ).format(new java.util.Date());
//
// // Device Info
// String serial = TMSUtil.getInstance().getSerialNumber();
// String appId = requireActivity().getPackageName();
//
// // Terminal Info
//// String terminalId = SystemParamsOperation.getInstance().getTerminalId();
//// String merchantId = SystemParamsOperation.getInstance().getMerchantId();
//
//
// // Amount convert (long cents double 0.00)
// double realAmount = payDetail.getAmount() / 100.0;
// DecimalFormat df = new DecimalFormat("0.00");
// String amount = df.format(realAmount);
//
// EReceiptQRRequest request = new EReceiptQRRequest();
// request.setDE3("QR"); // QR Process Code
// request.setDE4(amount); // Amount
// request.setDE7(currentTimestamp); // Timestamp
// request.setDE37(payDetail.getReferNo()); // Reference No
// request.setDE39(isSuccess ? "A" : "E"); // A=Approved, D=Declined/Timeout
// request.setDE41(terminalId);
// request.setDE42(merchantId);
// request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency
// request.setSerial(serial);
// request.setInvoiceNumber(payDetail.getInvoiceNo());
// request.setDE11(payDetail.getVoucherNo()); // STAN
// request.setAppId(appId);
// request.setDescription(reason); // Anything: success / timeout / error message
//
// return request;
// }
}

View File

@ -17,7 +17,7 @@ import com.utsmm.kbz.util.ecr.CoreUtils;
import com.utsmm.kbz.util.tms.TMSUtil;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.network.model.KPayRefund;
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptQRRequest;
//import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptQRRequest;
import com.utsmyanmar.baselib.util.DataBindingConfig;
import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.system.SystemDateTime;
@ -144,7 +144,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
payDetail.setReferNo(referenceNo);
payDetail.setIsCanceled(true);
sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, true, "Refund success"));
// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, true, "Refund success"));
retrievedUpdatePayDetail(referenceNo);
@ -159,7 +159,7 @@ public class QRRefundProcessFragment extends DataBindingFragment {
errorMsg = response.getResponse().getMsg();
}
payDetail.setTradeResultDes(errorMsg);
sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "Refund Failed! "+errorMsg));
// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "Refund Failed! "+errorMsg));
sharedViewModel.payDetail.setValue(payDetail);
navigateToNext();
@ -233,44 +233,44 @@ public class QRRefundProcessFragment extends DataBindingFragment {
}
}
private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) {
// Timestamp (MMddHHmmss)
String currentTimestamp = new java.text.SimpleDateFormat(
"MMddHHmmss", java.util.Locale.getDefault()
).format(new java.util.Date());
// Device Info
String serial = TMSUtil.getInstance().getSerialNumber();
String appId = requireActivity().getPackageName();
// Terminal Info
// String terminalId = SystemParamsOperation.getInstance().getTerminalId();
// String merchantId = SystemParamsOperation.getInstance().getMerchantId();
String terminalId = TransactionUtil.getInstance().getQRTerminalId();
String merchantId = TransactionUtil.getInstance().getQRMerchantId();
// Amount convert (long cents double 0.00)
double realAmount = payDetail.getAmount() / 100.0;
DecimalFormat df = new DecimalFormat("0.00");
String amount = df.format(realAmount);
EReceiptQRRequest request = new EReceiptQRRequest();
request.setDE3("QRV"); // QR Process Code(fix later with get from config)
request.setDE4(amount); // Amount
request.setDE7(currentTimestamp); // Timestamp
request.setDE37(payDetail.getReferNo()); // Reference No
request.setDE39(isSuccess ? "A" : "E"); // A=Approved, E=Error/Declined/Timeout
request.setDE41(terminalId);
request.setDE42(merchantId);
request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency(fix later with get from config)
request.setSerial(serial);
request.setInvoiceNumber(payDetail.getInvoiceNo());
request.setDE11(payDetail.getVoucherNo()); // STAN
request.setAppId(appId);
request.setDescription(reason); // Anything: success / timeout / error message
return request;
}
// private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) {
//
// // Timestamp (MMddHHmmss)
// String currentTimestamp = new java.text.SimpleDateFormat(
// "MMddHHmmss", java.util.Locale.getDefault()
// ).format(new java.util.Date());
//
// // Device Info
// String serial = TMSUtil.getInstance().getSerialNumber();
// String appId = requireActivity().getPackageName();
//
//
// // Terminal Info
//// String terminalId = SystemParamsOperation.getInstance().getTerminalId();
//// String merchantId = SystemParamsOperation.getInstance().getMerchantId();
// String terminalId = TransactionUtil.getInstance().getQRTerminalId();
// String merchantId = TransactionUtil.getInstance().getQRMerchantId();
//
// // Amount convert (long cents double 0.00)
// double realAmount = payDetail.getAmount() / 100.0;
// DecimalFormat df = new DecimalFormat("0.00");
// String amount = df.format(realAmount);
//
// EReceiptQRRequest request = new EReceiptQRRequest();
// request.setDE3("QRV"); // QR Process Code(fix later with get from config)
// request.setDE4(amount); // Amount
// request.setDE7(currentTimestamp); // Timestamp
// request.setDE37(payDetail.getReferNo()); // Reference No
// request.setDE39(isSuccess ? "A" : "E"); // A=Approved, E=Error/Declined/Timeout
// request.setDE41(terminalId);
// request.setDE42(merchantId);
// request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency(fix later with get from config)
// request.setSerial(serial);
// request.setInvoiceNumber(payDetail.getInvoiceNo());
// request.setDE11(payDetail.getVoucherNo()); // STAN
// request.setAppId(appId);
// request.setDescription(reason); // Anything: success / timeout / error message
//
// return request;
// }
}

View File

@ -0,0 +1,28 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="100"
android:viewportHeight="100">
<path
android:fillColor="@color/white"
android:strokeColor="@color/white"
android:strokeWidth="1"
android:strokeLineJoin="round"
android:strokeLineCap="round"
android:pathData="
M55.1858,3.015
L87.8142,21.985
Q93,25 93,31
L93,69
Q93,75 87.8142,78.015
L55.1858,96.985
Q50,100 44.8142,96.985
L12.1858,78.015
Q7,75 7,69
L7,31
Q7,25 12.1858,21.985
L44.8142,3.015
Q50,0 55.1858,3.015
Z" />
</vector>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="422.074"
android:viewportHeight="422.073">
<path
android:fillColor="#FF000000"
android:pathData="M229.001,392.729H44.522V27.274h198.907V82.69c0,5.6,4.534,10.133,10.131,10.133h53.791l0.009,181.564c9.418,0.215,18.602,1.963,27.266,5.188V77.743c0,-2.168,-0.863,-4.248,-2.396,-5.787L262.667,2.395C261.133,0.862,259.053,0,256.881,0H41.796C28.262,0,17.25,11.008,17.25,24.543v370.915c0,13.533,11.012,24.543,24.547,24.543h206.973C240.466,412.384,233.714,403.114,229.001,392.729z"/>
<path
android:fillColor="#FF000000"
android:pathData="M404.824,311.648c0,-4.586,-1.785,-8.896,-5.027,-12.142l-12.844,-12.844c-3.244,-3.242,-7.555,-5.027,-12.139,-5.027c-4.582,0,-8.896,1.785,-12.141,5.029l-19.602,19.6c-10.47,-7.506,-23.304,-11.928,-37.168,-11.928c-35.273,0,-63.867,28.596,-63.867,63.869c0,35.271,28.594,63.867,63.867,63.867c35.271,0,63.867,-28.597,63.867,-63.867c0,-1.43,-0.051,-2.848,-0.145,-4.254l30.166,-30.166C403.039,320.546,404.824,316.232,404.824,311.648z M385.857,315.467l-61.43,61.428c-1.295,1.296,-3.051,2.021,-4.881,2.021h-0.002c-1.832,0,-3.588,-0.729,-4.881,-2.023l-28.465,-28.51c-2.691,-2.693,-2.689,-7.062,0.002,-9.758l5.483,-5.479c2.69,-2.693,7.058,-2.695,9.755,-0.007l18.104,18.058l51.019,-51.021c1.296,-1.296,3.052,-2.021,4.882,-2.021s3.586,0.727,4.881,2.021l5.531,5.53C388.552,308.4,388.552,312.77,385.857,315.467z"/>
<path
android:fillColor="#FF000000"
android:pathData="M188.141,108.951l-57.438,13.148l13.149,-57.438c-20.125,-5.047,-42.319,0.296,-58.059,16.035c-23.835,23.834,-23.835,62.478,0,86.312c23.835,23.835,62.478,23.835,86.313,0C187.843,151.269,193.187,129.075,188.141,108.951z"/>
<path
android:fillColor="#FF000000"
android:pathData="M188.689,64.113c-8.097,-8.096,-17.901,-13.439,-28.254,-16.035l-13.149,57.437l57.438,-13.149C202.128,82.014,196.785,72.209,188.689,64.113z"/>
<path
android:fillColor="#FF000000"
android:pathData="M89.161,249.945h20.993c5.813,0,10.542,-4.729,10.542,-10.543c0,-5.814,-4.729,-10.543,-10.542,-10.543H89.161c-5.813,0,-10.543,4.729,-10.543,10.543C78.618,245.216,83.348,249.945,89.161,249.945z"/>
<path
android:fillColor="#FF000000"
android:pathData="M170.153,267.859H89.161c-5.813,0,-10.543,4.729,-10.543,10.543c0,5.813,4.729,10.543,10.543,10.543h80.993c5.813,0,10.542,-4.729,10.542,-10.543C180.695,272.588,175.966,267.859,170.153,267.859z"/>
<path
android:fillColor="#FF000000"
android:pathData="M158.153,306.859H89.161c-5.813,0,-10.543,4.729,-10.543,10.543c0,5.813,4.729,10.543,10.543,10.543h68.993c5.813,0,10.542,-4.729,10.542,-10.543C168.695,311.588,163.966,306.859,158.153,306.859z"/>
</vector>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="64"
android:viewportHeight="64">
<!-- Centering shift: moved whole document from x=6 to x=12 -->
<!-- Document outline -->
<path
android:pathData="M12,4 H52 V60 H12 Z"
android:fillColor="@android:color/transparent"
android:strokeColor="#FFFFFF"
android:strokeWidth="2"
android:strokeLineJoin="round"
android:strokeLineCap="round" />
<!-- Folded corner -->
<path
android:pathData="M52,4 V16 H42"
android:fillColor="@android:color/transparent"
android:strokeColor="#FFFFFF"
android:strokeWidth="2"
android:strokeLineJoin="round"
android:strokeLineCap="round" />
<!-- Bar chart (centered as well) -->
<path android:pathData="M20,34 H26 V50 H20 Z" android:fillColor="#FFFFFF"/>
<path android:pathData="M28,26 H34 V50 H28 Z" android:fillColor="#FFFFFF"/>
<path android:pathData="M36,30 H42 V50 H36 Z" android:fillColor="#FFFFFF"/>
<!-- Text lines -->
<path
android:pathData="M20,14 H44"
android:fillColor="@android:color/transparent"
android:strokeColor="#FFFFFF"
android:strokeWidth="1.6"
android:strokeLineCap="round" />
<path
android:pathData="M20,18 H44"
android:fillColor="@android:color/transparent"
android:strokeColor="#FFFFFF"
android:strokeWidth="1.6"
android:strokeLineCap="round" />
<path
android:pathData="M20,22 H32"
android:fillColor="@android:color/transparent"
android:strokeColor="#FFFFFF"
android:strokeWidth="1.6"
android:strokeLineCap="round" />
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -15,36 +15,33 @@
<variable name="carouselAdapter" type="androidx.recyclerview.widget.RecyclerView.Adapter"/>
<variable name="myAdapter" type="com.utsmm.kbz.ui.adapters.MainAdapter"/>
</data>
<!-- ======== ROOT ======== -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:padding="16dp">
>
<FrameLayout
android:id="@+id/tid"
<TextView
android:id="@+id/serialNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tidText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{`TID : ` + shareViewModel.terminalId}'
tools:text="TID : 123456789"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginStart="4dp"
android:layout_marginBottom="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@id/bannerCard" />
</FrameLayout>
app:layout_constraintTop_toTopOf="parent"
tools:text="S/N : N86PW500019"
android:fontFamily="@font/rubik_medium"
android:text='@{"S/N : " + shareViewModel.serialNumber}'
android:textSize="14sp"
android:textStyle="bold"
/>
<!-- ====================== BANNER ====================== -->
@ -52,13 +49,13 @@
android:id="@+id/bannerCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="4dp"
android:layout_margin="16dp"
app:cardCornerRadius="16dp"
app:cardElevation="6dp"
app:layout_constraintDimensionRatio="16:6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/tid"
app:layout_constraintTop_toBottomOf="@+id/tid">
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/serialNumber">
<com.denzcoskun.imageslider.ImageSlider
android:id="@+id/image_slider"
@ -78,83 +75,227 @@
android:id="@+id/menuGrid"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/bannerCard"
android:paddingTop="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
>
<!-- ===== FULL WIDTH SALE BUTTON ===== -->
<androidx.cardview.widget.CardView
android:id="@+id/cardMenuCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="18dp"
app:cardElevation="4dp"
android:layout_margin="6dp"
android:foreground="?attr/selectableItemBackground"
android:onClick="@{() -> click.onClickCard()}"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/bannerCard"
app:layout_constraintVertical_bias="1.0">
<FrameLayout
android:id="@+id/btn1"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginStart="60dp"
android:layout_marginTop="45dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toTopOf="@+id/btn3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="1:0.4">
app:layout_constraintTop_toTopOf="parent"
android:onClick="@{() -> click.onClickCard()}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="20dp"
android:background="@color/white">
android:orientation="vertical">
<ImageView
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="6dp"
android:src="@drawable/ic_sale"
app:tint="@color/colorPrimary"
android:layout_marginBottom="6dp" />
app:tint="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="@string/menu_sale"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium"
android:textAlignment="center" />
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</FrameLayout>
<!-- ===== ROW 1 ===== -->
<!-- Settlement -->
<androidx.cardview.widget.CardView
android:id="@+id/settlementMenuCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="18dp"
app:cardElevation="4dp"
android:layout_margin="6dp"
android:foreground="?attr/selectableItemBackground"
android:onClick="@{() -> click.onClickSettlement()}"
app:disableBtn="@{mainViewModel.settlementStatus}"
app:layout_constraintTop_toBottomOf="@id/cardMenuCard"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/signOnMenuCard"
app:layout_constraintDimensionRatio="1:0.8">
<FrameLayout
android:id="@+id/btn2"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginTop="45dp"
android:layout_marginEnd="60dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toTopOf="@+id/bt4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:clickable="@{mainViewModel.kPayStatus}"
android:focusable="@{mainViewModel.kPayStatus}"
android:alpha="@{mainViewModel.kPayStatus ? 1f : 0.5f}"
android:onClick="@{() -> click.onClickQR()}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
android:padding="18dp">
android:orientation="vertical">
<ImageView
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginBottom="6dp"
android:src="@drawable/mmqr_logo"
/>
<!-- <TextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:fontFamily="@font/rubik_medium"-->
<!-- android:text="@string/qr_pay"-->
<!-- android:textAlignment="center"-->
<!-- android:textColor="@color/colorPrimary"-->
<!-- android:textSize="14sp"-->
<!-- android:textStyle="bold" />-->
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/btn3"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="@drawable/honey"
android:onClick="@{() -> click.onClickVoid()}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/bt4"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="6dp"
android:src="@drawable/ic_void_dash"
app:tint="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="Void"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/bt4"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:onClick="@{() -> click.onClickSignOn()}"
>
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_signon"
android:layout_marginBottom="6dp"
app:tint="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="@string/menu_sign_on"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/bt5"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/bt4"
android:onClick="@{() -> click.onClickReport()}"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="6dp"
android:src="@drawable/ic_dash_report"
app:tint="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="Reports"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/bt6"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginStart="60dp"
android:layout_marginBottom="45dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bt4"
android:clickable="@{mainViewModel.settlementStatus}"
android:focusable="@{mainViewModel.settlementStatus}"
android:alpha="@{mainViewModel.settlementStatus ? 1f : 0.5f}"
android:onClick="@{() -> click.onClickSettlement()}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginBottom="6dp"
android:src="@drawable/ic_settlement"
app:tint="@color/colorPrimary" />
@ -162,146 +303,53 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="@string/menu_settlement"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium"
android:textAlignment="center" />
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</FrameLayout>
<!-- Sign On -->
<androidx.cardview.widget.CardView
android:id="@+id/signOnMenuCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="18dp"
app:cardElevation="4dp"
android:layout_margin="6dp"
android:foreground="?attr/selectableItemBackground"
android:onClick="@{() -> click.onClickSignOn()}"
app:layout_constraintTop_toBottomOf="@id/cardMenuCard"
app:layout_constraintStart_toEndOf="@id/settlementMenuCard"
<FrameLayout
android:id="@+id/bt7"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginEnd="60dp"
android:layout_marginBottom="45dp"
android:background="@drawable/honey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="1:0.8">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
android:padding="18dp">
<ImageView
android:layout_width="46dp"
android:layout_height="46dp"
android:src="@drawable/ic_signon"
app:tint="@color/colorPrimary"
android:layout_marginBottom="6dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/menu_sign_on"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium"
android:textAlignment="center" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- ===== ROW 2 ===== -->
<!-- Transactions -->
<androidx.cardview.widget.CardView
android:id="@+id/otherFeaturesCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="18dp"
app:cardElevation="4dp"
android:layout_margin="6dp"
android:foreground="?attr/selectableItemBackground"
android:onClick="@{() -> click.onClickTrans()}"
app:layout_constraintTop_toBottomOf="@id/settlementMenuCard"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/qrPayMenuCard"
app:layout_constraintDimensionRatio="1:0.8">
app:layout_constraintTop_toBottomOf="@+id/bt4">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@color/white"
android:orientation="vertical"
android:padding="18dp">
android:orientation="vertical">
<ImageView
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_width="39dp"
android:layout_height="36dp"
android:layout_marginBottom="6dp"
android:src="@drawable/ic_other_features"
app:tint="@color/colorPrimary"
android:layout_marginBottom="6dp" />
app:tint="@color/colorPrimary" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/menu_transactions"
android:fontFamily="@font/rubik_medium"
android:text="@string/dash_see_more"
android:textAlignment="center"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium"
android:textAlignment="center" />
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</FrameLayout>
<!-- QR Pay -->
<androidx.cardview.widget.CardView
android:id="@+id/qrPayMenuCard"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="18dp"
app:cardElevation="4dp"
android:layout_margin="6dp"
android:foreground="?attr/selectableItemBackground"
android:onClick="@{() -> click.onClickQR()}"
app:disableBtn="@{mainViewModel.kPayStatus}"
app:layout_constraintTop_toBottomOf="@id/signOnMenuCard"
app:layout_constraintStart_toEndOf="@id/otherFeaturesCard"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="1:0.8">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
android:padding="18dp">
<ImageView
android:layout_width="46dp"
android:layout_height="46dp"
android:src="@drawable/ic_mmqr"
android:layout_marginBottom="6dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/menu_qrpay"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium"
android:textAlignment="center" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -69,7 +69,6 @@
android:layout_weight="1"
android:text="Partial Amount"
android:textSize="16sp"
android:visibility="@{sharedViewModel.qrPartialRefundEnable ? View.VISIBLE : View.GONE}"
/>
</RadioGroup>

View File

@ -160,6 +160,9 @@
<action
android:id="@+id/action_nav_main_to_nav_sign_on"
app:destination="@id/nav_sign_on" />
<action
android:id="@+id/action_nav_main_to_manageFunctionFragment"
app:destination="@id/managementFunctionFragment" />
</fragment>
<fragment

View File

@ -518,6 +518,8 @@
<string name="error_occurred">Error Occured</string>
<string name="nav_app_bar_open_drawer_description">Open navigation drawer</string>
<string name="no_history">No History yet</string>
<string name="qr_pay">QR Pay</string>
<string name="dash_see_more">See More</string>
<string-array name="pref_bank_name">
<item>UTS</item>
<item>YOMA Bank</item>

View File

@ -288,7 +288,6 @@ public class NetworkModule {
String baseUrl = tmsAddress.trim() + "/api/v1/";
// String baseUrl = tmsAddress.trim() + "/";
final Gson gson =
new GsonBuilder().create();