From 4867644d69f4dae4ce8db7e6e1a6101937ba49de Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Thu, 5 Feb 2026 15:23:16 +0630 Subject: [PATCH] added new history screen --- .../main/java/com/utsmm/kbz/MainFragment.java | 5 + .../dashboard/DashboardHistoryFragment.java | 190 ++++++++++++++++++ .../ui/dashboard/DashboardTransFragment.java | 9 - .../fragment_dashboard_history_screen.xml | 106 ++++++++++ .../res/layout/fragment_dashboard_screen.xml | 9 +- .../main/res/navigation/mobile_navigation.xml | 21 +- 6 files changed, 322 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardHistoryFragment.java create mode 100644 app/src/main/res/layout/fragment_dashboard_history_screen.xml diff --git a/app/src/main/java/com/utsmm/kbz/MainFragment.java b/app/src/main/java/com/utsmm/kbz/MainFragment.java index 7ae42f2..ffe4359 100644 --- a/app/src/main/java/com/utsmm/kbz/MainFragment.java +++ b/app/src/main/java/com/utsmm/kbz/MainFragment.java @@ -973,6 +973,11 @@ public class MainFragment extends DataBindingFragment { } } + public void onClickHistory(){ + routeId = R.id.action_nav_main_to_dashboardHistoryFragment; + safeRouteTo(currentId(), routeId, hostId()); + } + public void onClickReport() { routeId = R.id.action_nav_main_to_manageFunctionFragment; safeRouteTo(currentId(), routeId, hostId()); diff --git a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardHistoryFragment.java b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardHistoryFragment.java new file mode 100644 index 0000000..d920d40 --- /dev/null +++ b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardHistoryFragment.java @@ -0,0 +1,190 @@ +package com.utsmm.kbz.ui.dashboard; + +import android.os.Bundle; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.utsmyanmar.baselib.fragment.DataBindingFragment; +import com.utsmyanmar.baselib.util.DataBindingConfig; +import com.utsmyanmar.baselib.util.DialogCallback; +import com.utsmyanmar.paylibs.model.PayDetail; +import com.utsmyanmar.paylibs.model.TradeData; +import com.utsmyanmar.paylibs.print.PrintHelper; +import com.utsmyanmar.paylibs.print.printx.PrintXReceipt; +import com.utsmyanmar.paylibs.print.printx.PrintXStatus; +import com.utsmyanmar.paylibs.utils.POSUtil; +import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; +import com.utsmyanmar.paylibs.utils.enums.HostType; +import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; +import com.utsmyanmar.paylibs.utils.params.Params; +import com.nexgo.oaf.apiv3.SdkResult; +import com.utsmm.kbz.BR; +import com.utsmm.kbz.R; +import com.utsmm.kbz.config.Constants; +import com.utsmm.kbz.databinding.FragmentDashboardHistoryScreenBinding; +import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel; +import com.utsmm.kbz.ui.management.HistoryAdapter; +import com.utsmm.kbz.ui.management.ManagementViewModel; + +import java.util.ArrayList; + +public class DashboardHistoryFragment extends DataBindingFragment { + + private ManagementViewModel managementViewModel; + private SharedViewModel sharedViewModel; + private HistoryAdapter detailReportAdapter; + private int routeId; + + private final ArrayList lists = new ArrayList<>(); + + @Override + protected void initViewModel() { + managementViewModel = getFragmentScopeViewModel(ManagementViewModel.class); + sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class); + } + + @Override + protected DataBindingConfig getDataBindingConfig() { + return new DataBindingConfig(R.layout.fragment_dashboard_history_screen, BR.manageViewModel, managementViewModel) + .addBindingParam(BR.sharedViewModel, sharedViewModel) + .addBindingParam(BR.click, new ClickEvent()); + } + + @Override + protected int currentId() { + return R.id.dashboardHistoryFragment; + } + + @Override + protected int hostId() { + return Constants.NAV_HOST_ID; + } + + @Override + protected int routeId() { + return routeId; + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + observeHistory(); + } + + @Override + public void onResume() { + super.onResume(); + setToolBarTitleWithBackIcon(getString(R.string.title_history)); + + managementViewModel.detailReportLayoutVisibility.setValue(0); + managementViewModel.detailReportBottomLayoutVisibility.setValue(0); + } + + private void observeHistory() { + managementViewModel.getTransactionHistory().observe(getViewLifecycleOwner(), payDetailList -> { + if (payDetailList == null) { + return; + } + + lists.clear(); + + if (payDetailList.isEmpty()) { + managementViewModel.detailReportLayoutVisibility.setValue(0); + managementViewModel.detailReportBottomLayoutVisibility.setValue(8); + } else { + managementViewModel.detailReportLayoutVisibility.setValue(8); + managementViewModel.detailReportBottomLayoutVisibility.setValue(0); + } + + HostType hostType = sharedViewModel.hostType.getValue(); + + for (PayDetail payDetail : payDetailList) { + if (hostType == HostType.MPU) { + if (payDetail.getTransactionType() != TransactionsType.MMQR.value + && payDetail.getTransactionType() != TransactionsType.REVERSAL.value + && payDetail.getTransactionType() != TransactionsType.SETTLEMENT.value + && POSUtil.getInstance().getYesterdayDate() + .compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) { + lists.add(payDetail); + } + } else if (hostType == HostType.QR) { + if (payDetail.getTransactionType() == TransactionsType.MMQR.value + && payDetail.getQrTransStatus() == 1) { + lists.add(payDetail); + } + } else { + lists.add(payDetail); + } + } + + if (lists.isEmpty()) { + managementViewModel.detailReportBottomLayoutVisibility.setValue(8); + managementViewModel.detailReportLayoutVisibility.setValue(0); + } + + detailReportAdapter = new HistoryAdapter(lists); + ((FragmentDashboardHistoryScreenBinding) mBinding).setAdapter(detailReportAdapter); + }); + } + + private void navigateMain() { + routeId = R.id.action_dashboardHistoryFragment_to_nav_main; + safeNavigateToRouteId(); + } + + public class ClickEvent { + public void onCancel() { + navigateMain(); + } + + public void onPrint() { + TradeData tradeData = Params.newTrade(false); + PayDetail payDetail = tradeData.getPayDetail(); + payDetail.setTransType(TransactionsType.DETAIL_REPORT.name); + payDetail.setTransactionType(TransactionsType.DETAIL_REPORT.value); + + if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Printer_PaperLack) { + showPrinterAlertDialog(getString(R.string.txt_paper_roll_not_ready), new DialogCallback() { + @Override + public void onClickCancel() { + dismissPrinterAlertDialog(); + } + + @Override + public void onClickRetry() { + dismissPrinterAlertDialog(); + + if (PrintHelper.getInstance().paperRollStatus() != SdkResult.Success) { + return; + } + + PrintXReceipt.getInstance().printDetailReport(payDetail, lists, sharedViewModel.hostType.getValue(), new PrintXStatus() { + @Override + public void onSuccess() { + } + + @Override + public void onFailure() { + } + }); + } + }); + if (SystemParamsOperation.getInstance().isAlertSound()) { + startSound(getString(R.string.txt_audio_printer_alert)); + } + } else if (PrintHelper.getInstance().paperRollStatus() == SdkResult.Success) { + PrintXReceipt.getInstance().printDetailReport(payDetail, lists, sharedViewModel.hostType.getValue(), new PrintXStatus() { + @Override + public void onSuccess() { + } + + @Override + public void onFailure() { + } + }); + } + } + } +} diff --git a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java index f6abe9b..62e3e3f 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/dashboard/DashboardTransFragment.java @@ -157,9 +157,6 @@ public class DashboardTransFragment extends DataBindingFragment { case CASH_ADVANCE: new DashboardTransFragment.ClickEvent().onClickCashAdvance(); break; - case HISTORY: - new DashboardTransFragment.ClickEvent().onClickHistory(); - break; case DEVICE_CONFIG: new DashboardTransFragment.ClickEvent().onClickDeviceConfig(); break; @@ -262,12 +259,6 @@ public class DashboardTransFragment extends DataBindingFragment { safeRouteTo(currentId,routeId,hostId); } - - public void onClickHistory() { - routeId = R.id.action_dashboardTransFragment_to_manageFunctionFragment; - safeRouteTo(currentId,routeId,hostId); - } - public void onClickDeviceConfig(){ routeId = R.id.action_dashboardTransFragment_to_deviceConfig; safeRouteTo(currentId, routeId, hostId); diff --git a/app/src/main/res/layout/fragment_dashboard_history_screen.xml b/app/src/main/res/layout/fragment_dashboard_history_screen.xml new file mode 100644 index 0000000..a9ce4c8 --- /dev/null +++ b/app/src/main/res/layout/fragment_dashboard_history_screen.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_dashboard_screen.xml b/app/src/main/res/layout/fragment_dashboard_screen.xml index d9db004..54c80fb 100644 --- a/app/src/main/res/layout/fragment_dashboard_screen.xml +++ b/app/src/main/res/layout/fragment_dashboard_screen.xml @@ -168,10 +168,7 @@ 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()}" + android:onClick="@{() -> click.onClickHistory()}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/bt4" app:layout_constraintTop_toTopOf="parent"> @@ -186,14 +183,14 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_marginBottom="6dp" - android:src="@drawable/ic_void_dash" + android:src="@drawable/ic_history" app:tint="@color/colorPrimary" /> + @@ -617,8 +620,8 @@ app:launchSingleTop="true" app:popUpTo="@+id/dashboardTransFragment" app:popUpToInclusive="true" - android:id="@+id/action_dashboardTransFragment_to_manageFunctionFragment" - app:destination="@id/managementFunctionFragment" /> + android:id="@+id/action_dashboardTransFragment_to_dashboardHistoryFragment" + app:destination="@id/dashboardHistoryFragment" /> + + + - \ No newline at end of file +