diff --git a/app/src/main/java/com/utsmm/kbz/ui/SettingsFragment.java b/app/src/main/java/com/utsmm/kbz/ui/SettingsFragment.java index 965cd4c..ae736c0 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/SettingsFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/SettingsFragment.java @@ -327,6 +327,17 @@ public class SettingsFragment extends DataBindingFragment { } } + public void onClearReversalClick() { + try { + sharedViewModel.transactionsType.postValue(TransactionsType.CLEAR_REVERSAL); + sharedViewModel.setTransMenu(TransMenu.CLEAR_REVERSAL); + Navigation.findNavController(requireActivity(), R.id.nav_host_fragment) + .navigate(R.id.inputPasswordFragment); + } catch (Exception e) { + LogUtil.e(TAG, "Error in clear reversal click: " + e.getMessage()); + } + } + public void onTmsConfigClick() { try { LogUtil.d(TAG, "TMS Config clicked"); diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingFragment.java index 6cc28be..1b9cec3 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingFragment.java @@ -6,6 +6,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.lifecycle.Observer; import androidx.navigation.NavController; import androidx.navigation.NavDestination; @@ -17,6 +18,9 @@ import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; import com.utsmyanmar.baselib.util.DataBindingConfig; import com.utsmyanmar.baselib.util.TimeoutCallback; +import com.utsmyanmar.paylibs.model.TradeData; +import com.utsmyanmar.paylibs.reversal.ReversalAction; +import com.utsmyanmar.paylibs.reversal.ReversalListener; import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmm.kbz.BR; import com.utsmm.kbz.R; @@ -104,6 +108,17 @@ public class ProcessingFragment extends DataBindingFragment { setToolBarTitleWithoutBackIcon(getResourceString(R.string.title_processing)); + checkReversal(); + + + +// disableNavigationBar(); + + getNavController(Constants.NAV_HOST_ID).addOnDestinationChangedListener(listener); + + } + + private void startTransactionProcess() { if(isEmvTrans()) { startTransactionProcess(emvTransactionProcessViewModel); } else { @@ -111,11 +126,44 @@ public class ProcessingFragment extends DataBindingFragment { } sharedViewModel.loadingMsg(getResourceString(R.string.txt_sending)); + } -// disableNavigationBar(); + private void checkReversal() { + sharedViewModel.getLastReversalTransaction().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(PayDetail payDetail) { + if(payDetail != null) { + TradeData tradeData = new TradeData(); + tradeData.setPayDetail(payDetail); + LogUtil.d(TAG,"Sending Reversal!"); + sharedViewModel.loadingMsg(getResourceString(R.string.txt_sending_reversal)); - getNavController(Constants.NAV_HOST_ID).addOnDestinationChangedListener(listener); + ReversalAction.getInstance().setData(tradeData).enqueue().startReversal(new ReversalListener() { + @Override + public void onSuccessReversal() { + LogUtil.d(TAG,"Reversal Success!"); + payDetail.setIsNeedReversal(false); + sharedViewModel.updatePayDetail(payDetail); + startTransactionProcess(); + } + @Override + public void onNetworkFail(String msg) { + LogUtil.d(TAG,"Reversal Network Fail!"+msg); + startTransactionProcess(); + } + + @Override + public void onFailReversal(String msg) { + LogUtil.d(TAG,"Reversal Fail!"+msg); + startTransactionProcess(); + } + }); + } else { + startTransactionProcess(); + } + } + }); } private boolean isEmvTrans() { diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java index 37de649..903af51 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/SharedViewModel.java @@ -2,6 +2,7 @@ package com.utsmm.kbz.ui.core_viewmodel; import android.graphics.Bitmap; import android.util.Log; +import android.widget.ListView; import dagger.hilt.android.lifecycle.HiltViewModel; import androidx.lifecycle.LiveData; @@ -447,6 +448,14 @@ public class SharedViewModel extends ViewModel { return repository.getReversalTransaction(voucherNo); } + public LiveData getLastReversalTransaction() { + return repository.getLastReversalTransaction(); + } + + public LiveData> getAllReversalTransaction() { + return repository.getAllReversalTransactions(); + } + public void updatePayDetail(PayDetail payDetail){ repository.updatePayDetail(payDetail); } diff --git a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java index 668d63d..66deee9 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/management/SelectHostFragment.java @@ -210,21 +210,43 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi private void clearReversal() { checkPointReversal = false; - sharedViewModel.getReversalTransaction(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), payDetail -> { - if (payDetail != null) { - if (!checkPointReversal) { - payDetail.setIsNeedReversal(false); - sharedViewModel.updatePayDetail(payDetail); - checkPointReversal = true; +// sharedViewModel.getReversalTransaction(SystemParamsOperation.getInstance().getCurrentSerialNum()).observe(getViewLifecycleOwner(), payDetail -> { +// if (payDetail != null) { +// if (!checkPointReversal) { +// payDetail.setIsNeedReversal(false); +// sharedViewModel.updatePayDetail(payDetail); +// checkPointReversal = true; +// +// showSuccessDialog("Clear reversal success!"); +// } +// } else { +// if (!checkPointReversal) { +// showInfoDialog("Clear reversal", "No reversal found!"); +// checkPointReversal = true; +// } +// +// } +// }); - showSuccessDialog("Clear reversal success!"); - } - } else { - if (!checkPointReversal) { - showInfoDialog("Clear reversal", "No reversal found!"); - checkPointReversal = true; - } + sharedViewModel.getAllReversalTransaction().observe(getViewLifecycleOwner(), new Observer>() { + @Override + public void onChanged(List payDetails) { + if(payDetails != null && !payDetails.isEmpty()) { + if(!checkPointReversal) { + for (PayDetail payDetail : payDetails) { + payDetail.setIsNeedReversal(false); + sharedViewModel.updatePayDetail(payDetail); + } + checkPointReversal = true; + showSuccessDialog("Clear reversal success!"); + } + } else { + if (!checkPointReversal) { + showInfoDialog("Clear reversal", "No reversal found!"); + checkPointReversal = true; + } + } } }); } diff --git a/app/src/main/res/layout/fragment_settings_modern.xml b/app/src/main/res/layout/fragment_settings_modern.xml index 910234e..8796b87 100644 --- a/app/src/main/res/layout/fragment_settings_modern.xml +++ b/app/src/main/res/layout/fragment_settings_modern.xml @@ -969,6 +969,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + getReversalTransaction(String voucherNo); + @Query("SELECT * FROM PayDetail WHERE isNeedReversal = 1 ORDER BY PID DESC LIMIT 1") + LiveData getLastReversalTransactionLive(); + + @Query("SELECT * FROM PayDetail WHERE isNeedReversal = 1 ORDER BY PID DESC") + LiveData> getAllReversalTransactionsLive(); + // @Query("SELECT * FROM paydetail WHERE transactionType != 10 ORDER BY PID DESC") @Query("SELECT * FROM paydetail ORDER BY PID DESC") LiveData> getTransactionHistory(); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java index 7608977..791cbac 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java @@ -146,6 +146,8 @@ public class Repository { public void updatePayDetail(PayDetail payDetail){payDetailDao.update(payDetail);} public LiveData getReversalTransaction(String voucherNo) { return payDetailDao.getReversalTransaction(voucherNo);} + public LiveData getLastReversalTransaction() { return payDetailDao.getLastReversalTransactionLive();} + public LiveData> getAllReversalTransactions() { return payDetailDao.getAllReversalTransactionsLive();} public LiveData> getTransactionHistory(){ return payDetailDao.getTransactionHistory();}