Compare commits

...

5 Commits

Author SHA1 Message Date
MooN
fc8349ad2d re-unbind visible on hostConfig 2026-01-26 10:43:27 +06:30
MooN
0ddd5f269c Update BaseXPrint.java 2026-01-26 10:42:53 +06:30
MooN
d9b9c7cc80 Update network_security_config.xml 2026-01-26 10:42:52 +06:30
MooN
e6878a3d27 printer disable function 2026-01-26 10:42:49 +06:30
MooN
40c4ba2d25 Update NetworkModule.java 2026-01-26 10:42:48 +06:30
12 changed files with 165 additions and 159 deletions

View File

@ -28,6 +28,7 @@ import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
public class PrintReceiptFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback {
private SharedViewModel sharedViewModel;
private static final String TAG = PrintReceiptFragment.class.getSimpleName();
private boolean printerDisabled = SystemParamsOperation.getInstance().getPrinterDisabled();
@Override
protected int currentId() {
@ -48,7 +49,6 @@ public class PrintReceiptFragment extends DataBindingFragment implements DataBin
@Override
protected void initViewModel() {
sharedViewModel = getFragmentScopeViewModel(SharedViewModel.class);
}
@Override
@ -76,6 +76,7 @@ public class PrintReceiptFragment extends DataBindingFragment implements DataBin
setToolBarTitleWithoutBackIcon(getResourceString(R.string.title_print_receipt));
sharedViewModel.printReceiptButtons.setValue(0);
sharedViewModel.printerDisabled.setValue(printerDisabled);
PayDetail payDetail = sharedViewModel.payDetail.getValue();
@ -122,7 +123,12 @@ public class PrintReceiptFragment extends DataBindingFragment implements DataBin
super.onViewCreated(view, savedInstanceState);
sharedViewModel.setPrintStatus(PrintStatus.NOT_PRINT);
sharedViewModel.postPrintReceiptMsg("Print Receipt for Merchant?");
if(printerDisabled){
sharedViewModel.postPrintReceiptMsg("Receipt is saved as E-receipt!");
}else{
sharedViewModel.postPrintReceiptMsg("Print Receipt for Merchant?");
}
observePrintProcess();
@ -278,6 +284,10 @@ public class PrintReceiptFragment extends DataBindingFragment implements DataBin
}
}
public void onContinue(){
isCardInside();
}
}
private void alertPaperRoll(String title, String message) {

View File

@ -115,6 +115,7 @@ public class SharedViewModel extends ViewModel {
public SingleLiveEvent<HostType> hostType = new SingleLiveEvent<>();
public MutableLiveData<Integer> printReceiptButtons = new MutableLiveData<>(0);
public SingleLiveEvent<Boolean> printerDisabled = new SingleLiveEvent<>();
public SingleLiveEvent<String> printReceiptMsg = new SingleLiveEvent<>();

View File

@ -15,6 +15,7 @@ import com.utsmm.kbz.databinding.FragmentHostConfigBinding;
import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
import com.utsmyanmar.baselib.util.DataBindingConfig;
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
public class HostConfigFragment extends DataBindingFragment {

View File

@ -647,6 +647,9 @@ public class TMSSetupsImpl implements TMSSetups{
else if(TextUtils.equals(name,"bin_list")) {
SystemParamsOperation.getInstance().setBinValue(data);
}
else if(TextUtils.equals(name, "printer_disable")){
SystemParamsOperation.getInstance().setPrinterDisabled(parseBoolean(data));
}
}
SystemParamsOperation.getInstance().setCarouselUrls(convertToString(imgUrls));

View File

@ -10,6 +10,9 @@
<variable
name="viewModel"
type="com.utsmm.kbz.ui.settings.HostConfigViewModel" />
<variable
name="sharedViewModel"
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
<variable
name="click"
type="com.utsmm.kbz.ui.settings.HostConfigFragment.ClickHandler" />

View File

@ -5,6 +5,7 @@
<data>
<import type="com.utsmyanmar.paylibs.utils.POSUtil" />
<import type="android.view.View"/>
<variable
name="sharedViewModel"
type="com.utsmm.kbz.ui.core_viewmodel.SharedViewModel" />
@ -296,92 +297,136 @@
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="@{sharedViewModel.printReceiptButtons}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="12dp">
<LinearLayout
android:layout_width="match_parent"
<!-- Cancel Button -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="@{sharedViewModel.printReceiptButtons}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="12dp">
android:layout_weight="1"
android:layout_marginEnd="6dp"
app:cardCornerRadius="12dp"
app:cardElevation="2dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<!-- Cancel Button -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginEnd="6dp"
app:cardCornerRadius="12dp"
app:cardElevation="2dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
android:orientation="horizontal"
android:gravity="center"
android:background="@color/white"
android:padding="14dp"
android:onClick="@{()->click.onCancel()}">
<LinearLayout
android:layout_width="match_parent"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/white"
android:padding="14dp"
android:onClick="@{()->click.onCancel()}">
android:text="@string/layout_cancel"
android:textColor="@color/colorPrimary"
android:textSize="15sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Confirm Button -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="6dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/layout_cancel"
android:textColor="@color/colorPrimary"
android:textSize="15sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Confirm Button -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginStart="6dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
android:orientation="horizontal"
android:gravity="center"
android:background="@color/colorPrimary"
android:padding="14dp"
android:onClick="@{()->click.onConfirm()}">
<LinearLayout
android:layout_width="match_parent"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/colorPrimary"
android:padding="14dp"
android:onClick="@{()->click.onConfirm()}">
android:text="@string/layout_print"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="12dp"
android:visibility="@{sharedViewModel.printerDisabled ? View.VISIBLE : View.GONE}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/layout_print"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold"
android:fontFamily="@font/rubik_medium" />
<!-- Confirm Button -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="12dp"
app:cardElevation="4dp">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center"
android:onClick="@{()->click.onContinue()}"
android:orientation="horizontal"
android:padding="14dp">
</androidx.cardview.widget.CardView>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/rubik_medium"
android:text="@string/txt_continue"
android:textColor="@color/white"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -616,5 +616,6 @@
<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_continue">Continue</string>
</resources>

View File

@ -6,6 +6,7 @@
<domain includeSubdomains="true">128.199.170.203</domain>
<domain includeSubdomains="true">152.42.199.193</domain>
<domain includeSubdomains="true">api.kbzpay.com</domain>
<domain includeSubdomains="true">api-uat.kbzpay.com</domain>
<domain includeSubdomains="true">sirius-nest.utsmyanmar.com</domain>
</domain-config>

View File

@ -254,7 +254,7 @@ public class NetworkModule {
}
if (baseUrl.isEmpty()) {
baseUrl = "http://api.kbzpay.com/payment/gateway/uat/";
baseUrl = "http://api-uat.kbzpay.com/payment/gateway/uat/";
}
return new Retrofit.Builder()
.baseUrl(baseUrl)
@ -302,88 +302,6 @@ public class NetworkModule {
.create(SiriusApiService.class);
}
// @Provides
// @Singleton
// @KPayRefundRetrofit
// public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
// char[] password = "test123".toCharArray();
//
// try {
//
// if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
// Security.addProvider(new BouncyCastleProvider());
// }
// // Client keystore
// KeyStore clientKeyStore = KeyStore.getInstance("PKCS12",new BouncyCastleProvider());
// InputStream clientStream = context.getResources().openRawResource(R.raw.client);
// clientKeyStore.load(clientStream, password);
// clientStream.close();
//
// KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
// kmf.init(clientKeyStore, password);
// KeyManager[] keyManagers = kmf.getKeyManagers();
//
// InputStream caInput = context.getResources().openRawResource(R.raw.certi);
// CertificateFactory cf = CertificateFactory.getInstance("X.509");
// Certificate ca = cf.generateCertificate(caInput);
//
// KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
// keyStore.load(null, null);
// keyStore.setCertificateEntry("ca", ca);
//
// TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
// tmf.init(keyStore);
// TrustManager[] trustManagers = tmf.getTrustManagers();
//
// X509TrustManager x509TrustManager = null;
// for (TrustManager tm : trustManagers) {
// if (tm instanceof X509TrustManager) {
// x509TrustManager = (X509TrustManager) tm;
// break;
// }
// }
//
// SSLContext sslContext = SSLContext.getInstance("TLS");
// sslContext.init(kmf.getKeyManagers(), new TrustManager[]{x509TrustManager}, null);
//
// HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
// loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
//
// OkHttpClient okHttp = new OkHttpClient.Builder()
// .sslSocketFactory(sslContext.getSocketFactory(), x509TrustManager)
// .addInterceptor(loggingInterceptor)
// .hostnameVerifier(new HostnameVerifier() {
// @Override
// public boolean verify(String hostname, SSLSession session) {
// return true;
// }
// })
// .build();
//
// return new Retrofit.Builder()
// .baseUrl(Refund_Base_Url)
// .client(okHttp)
// .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
// .addConverterFactory(GsonConverterFactory.create())
// .build();
//
// } catch (Exception e) {
// e.printStackTrace();
//
// OkHttpClient okHttp = new OkHttpClient();
// return new Retrofit.Builder()
// .baseUrl(Refund_Base_Url)
// .client(okHttp)
// .addConverterFactory(GsonConverterFactory.create())
// .build();
//
//// throw new RuntimeException("Failed to create Retrofit instance", e);
// }
//
// }
//@Reusable
//@KPayRefundRetrofit
@Provides
@ -392,10 +310,8 @@ public Retrofit provideKPayRefundRetrofit(@ApplicationContext Context context) {
// char[] password = "test123".toCharArray();
// public static String Refund_Base_Url = "https://api.kbzpay.com:18008/payment/gateway/uat/";
String refundBaseUrl = "https://api.kbzpay.com:8008/payment/gateway/";
// String refundBaseUrl = "https://api.kbzpay.com:8008/payment/gateway/";
String refundBaseUrl = "https://api-uat.kbzpay.com:18008/payment/gateway/uat/";
// String IpAddress = SystemParamsOperation.getInstance().getSecHostIpAddress();

View File

@ -877,8 +877,9 @@ public abstract class BaseXPrint {
printString("Status :" + pay.getStatus());
printString("Date :" + pay.getDate());
printString("Time :" + pay.getTime());
printString("Amount :" + "MMK " + PrintUtils.getInstance().getSeparatorOnlyNumberFormat(pay.getAmount()));
printString("Amount : MMK "
+ (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value ? "-" : "")
+ PrintUtils.getInstance().getSeparatorOnlyNumberFormat(pay.getAmount()));
if (pay.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
refundTotal += pay.getAmount();
@ -892,7 +893,7 @@ public abstract class BaseXPrint {
dashBreak();
// print2ColumnsString("Refund Total:MMK", PrintUtils.getInstance().getSeparatorOnlyNumberFormat(refundTotal));
printer.appendPrnStr("Refund Total:MMK", PrintUtils.getInstance().getSeparatorOnlyNumberFormat(refundTotal) + " ", fontNormal, false);
printer.appendPrnStr("Refund Total:MMK", "- " + PrintUtils.getInstance().getSeparatorOnlyNumberFormat(refundTotal) + " ", fontNormal, false);
dashBreak();
// print2ColumnsString("Sale Total :MMK", PrintUtils.getInstance().getSeparatorOnlyNumberFormat(totalAmount));
printer.appendPrnStr("Sale Total :MMK", PrintUtils.getInstance().getSeparatorOnlyNumberFormat(totalAmount) + " ", fontNormal, false);

View File

@ -1750,4 +1750,15 @@ public class SystemParamsOperation {
paramsSettings.setCertificateClientUrl(url);
saveSystemParamsSettings(paramsSettings);
}
public void setPrinterDisabled(boolean printerDisabled) {
SystemParamsSettings paramsSettings = getSystemParamsSettings();
paramsSettings.setPrinterDisabled(printerDisabled);
saveSystemParamsSettings(paramsSettings);
}
public boolean getPrinterDisabled() {
SystemParamsSettings paramsSettings = getSystemParamsSettings();
return paramsSettings.getPrinterDisabled();
}
}

View File

@ -260,6 +260,7 @@ public class SystemParamsSettings implements Serializable {
private String terminalIdForEreceipt = "";
private String certificateUrl = "";
private String certificateClientUrl = "";
private boolean printerDisabled = false;
public boolean isQrPartialRefundEnable(){
return qrPartialRefundEnable;
@ -1067,6 +1068,18 @@ public class SystemParamsSettings implements Serializable {
this.certificateClientUrl = url;
}
public boolean isPrinterDisabled() {
return printerDisabled;
}
public void setPrinterDisabled(boolean printerDisabled) {
this.printerDisabled = printerDisabled;
}
public boolean getPrinterDisabled() {
return printerDisabled;
}
/* // 流水号起始
private String serialNum = Configs.getInstance().SERIAL_NUM();
// 批次号起始