Compare commits

...

6 Commits

Author SHA1 Message Date
moon
1d48c48c0e toggle beep 2026-05-06 15:51:18 +06:30
moon
309d105fe1 Merge branch 'duel_settlement' of https://hub.utsmyanmar.com/Kyaw_Min_Khant/KBZ-POS into duel_settlement 2026-05-06 15:43:32 +06:30
moon
4eff1168c0 Create CHANGELOG.md 2026-05-06 15:43:29 +06:30
moon
79756a81aa add RRN search in ReprintAnyScreen 2026-05-06 15:38:06 +06:30
moon
9c8dc0be95 pinpad sound enable/disable toggle added 2026-05-06 15:27:19 +06:30
moon
6f3f6d553b Trace No to Invoice Num in ReprintAnyTran 2026-05-06 14:16:04 +06:30
9 changed files with 152 additions and 12 deletions

12
CHANGELOG.md Normal file
View File

@ -0,0 +1,12 @@
# Changelog
## [2.12] - 2026-05-06
### News
- **Pinpad Sound Toggle**
- Beep is ON by default
- Can Toggle PinPad sound on Side Navigation ( Under SystemManagement Tab)
- **Transaction Search**
- Search now matches by both Trace No and RRN instead of Trace No only
- Trace No uses partial match (`contains`), RRN uses exact match (`equals`)

View File

@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz"
minSdk 24
targetSdk 33
versionCode 31
versionName "2.11"
versionCode 32
versionName "2.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -116,7 +116,8 @@ public class MainActivity extends AppCompatActivity implements
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
// Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@ -435,7 +436,8 @@ public class MainActivity extends AppCompatActivity implements
SystemParamsOperation.getInstance().setDownloadedParams(false);
handleAutoSettlementIntent(getIntent());
BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
}
@Override

View File

@ -160,17 +160,17 @@ public class MainFragment extends DataBindingFragment {
NexGoSDK.getInstance().cancelCheckCard();
NexGoSDK.getInstance().closeReader();
enableHomeButton();
enablePinPadSound(false);
// enablePinPadSound(false);
// disableTaskButton();
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
// BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
});
}
private void enablePinPadSound(boolean flag) {
int result = BaseApplication.getInstance().deviceEngine.getPlatform().enablePinpadBeep(flag);
LogUtil.d(TAG, "Pin Pad Beep Result:" + result);
}
// private void enablePinPadSound(boolean flag) {
// int result = BaseApplication.getInstance().deviceEngine.getPlatform().enablePinpadBeep(flag);
// LogUtil.d(TAG, "Pin Pad Beep Result:" + result);
// }
private void disableHomeButton() {
int result = BaseApplication.getInstance().deviceEngine.getPlatform().disableHomeButton();

View File

@ -145,6 +145,18 @@ public class ReprintAnyTransactionFragment extends DataBindingFragment {
cardViewAdapter.updateList(searchedLists);
}
private void searchByTraceAndRRN(String input) {
for (PayDetail s : lists) {
boolean matchTrace = s.getVoucherNo() != null && s.getVoucherNo().contains(input);
boolean matchRRN = s.getReferNo() != null && s.getReferNo().contains(input);
if (matchTrace || matchRRN) {
searchedLists.add(s);
}
}
cardViewAdapter.updateList(searchedLists);
}
public class ClickEvent {
public void onClickSearch() {
@ -152,7 +164,7 @@ public class ReprintAnyTransactionFragment extends DataBindingFragment {
String input = managementViewModel.txtRRNTrace.getValue();
if(input != null && !input.isEmpty()) {
searchByTrace(input);
searchByTraceAndRRN(input);
} else {
searchedLists.addAll(lists);
}

View File

@ -4,6 +4,8 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import androidx.databinding.ObservableBoolean;
import com.nexgo.oaf.apiv3.APIProxy;
import com.nexgo.oaf.apiv3.DeviceEngine;
import com.nexgo.oaf.apiv3.DeviceInfo;
@ -12,6 +14,7 @@ import com.nexgo.oaf.apiv3.device.printer.AlignEnum;
import com.nexgo.oaf.apiv3.device.printer.GrayLevelEnum;
import com.nexgo.oaf.apiv3.device.printer.LineOptionEntity;
import com.nexgo.oaf.apiv3.device.printer.Printer;
import com.utsmyanmar.baselib.BaseApplication;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.network.model.sirius.SiriusHost;
import com.utsmyanmar.baselib.network.model.sirius.SiriusMerchant;
@ -20,12 +23,14 @@ import com.utsmyanmar.baselib.util.DataBindingConfig;
import com.utsmyanmar.paylibs.Constant;
import com.utsmyanmar.paylibs.sign_on.EchoTestProcess;
import com.utsmyanmar.paylibs.sign_on.SignOnListener;
import com.utsmyanmar.paylibs.utils.LogUtil;
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
import com.utsmm.kbz.BR;
import com.utsmm.kbz.R;
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
import java.util.List;
import java.util.Observable;
public class NaviMainFragment extends DataBindingFragment {
@ -114,6 +119,36 @@ public class NaviMainFragment extends DataBindingFragment {
}
public class ClickEvent {
private static final String PREF_NAME = "pinpad_prefs";
private static final String KEY_PINPAD_SOUND = "pinpad_sound_enabled";
public final ObservableBoolean pinpadSoundEnabled;
public ClickEvent() {
boolean savedValue = loadPinpadSoundState();
this.pinpadSoundEnabled = new ObservableBoolean(savedValue);
BaseApplication.getInstance().deviceEngine.getPlatform().enablePinpadBeep(savedValue);
}
public boolean loadPinpadSoundState(){
return BaseApplication.getInstance().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE).getBoolean(KEY_PINPAD_SOUND, true);
}
public void savePinpadSoundState(boolean enabled){
BaseApplication.getInstance().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE).edit().putBoolean(KEY_PINPAD_SOUND, enabled).apply();
}
public void onClickPinpadSound(){
boolean newState = !pinpadSoundEnabled.get();
int result = BaseApplication.getInstance().deviceEngine.getPlatform().enablePinpadBeep(newState);
if(result == SdkResult.Success){
pinpadSoundEnabled.set(newState);
savePinpadSoundState(newState);
// LogUtil.d("NaviMainFragment", "pinpad enabled");
}
}
public void onClickEcho() {
showLoadingDialog("Sending Echo!");

View File

@ -118,7 +118,7 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:hint="@string/txt_search_by_trace"
android:hint="Search By Invoice/RRN"
android:textColorHint="@color/colorPrimary"
android:alpha="0.6"
android:text="@={manageViewModel.txtRRNTrace}"

View File

@ -5,6 +5,7 @@
<data>
<import type="androidx.databinding.ObservableBoolean"/>
<variable
name="sharedViewModel"
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
@ -376,6 +377,84 @@
android:textSize="16sp"
android:textStyle="bold"
tools:fontFamily="sans-serif-medium" />
<!-- Pinpad Sound Card -->
<androidx.cardview.widget.CardView
android:id="@+id/pinpadSoundCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
android:onClick="@{()->click.onClickPinpadSound()}"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="20dp">
<androidx.cardview.widget.CardView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="16dp"
app:cardBackgroundColor="@color/colorPrimary"
app:cardCornerRadius="24dp"
app:cardElevation="0dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:src="@drawable/ic_audio"
app:tint="@color/white" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="Enable Pinpad Sound"
android:textColor="@color/colorTextTitle"
android:textSize="18sp"
android:textStyle="bold"
tools:fontFamily="sans-serif-medium" />
<TextView
android:id="@+id/pinpadSoundSummary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:fontFamily="@font/rubik_regular"
android:text="Pinpad key press sound disabled"
android:textColor="@color/colorTextContent"
android:textSize="14sp"
tools:fontFamily="sans-serif" />
</LinearLayout>
<Switch
android:id="@+id/pinpadSoundSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:checked="@{click.pinpadSoundEnabled}"
android:clickable="false"
android:focusable="false" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Function Card -->
<androidx.cardview.widget.CardView

View File

@ -615,7 +615,7 @@
<string name="txt_total_qr_transactions">Total QR Transactions</string>
<string name="txt_no_qr_transactions_to_settle">No QR transactions to settle</string>
<string name="txt_settle_qr_transactions">Confirm</string>
<string name="txt_search_by_trace">Search By Trace No</string>
<string name="txt_search_by_trace">Search By Inv No</string>
<string name="txt_continue">Continue</string>
</resources>