From 852edf1b130d863e9a4592c4627303817f140f06 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 11 Apr 2022 12:08:58 +0200 Subject: [PATCH] Implementata comunicazione con dispositivo bluetooth in fase di rientro merce da lav. Rimosso printerName e quantity dalla stampa delle SSCC. --- app/build.gradle | 15 ++- app/src/main/AndroidManifest.xml | 1 + .../BluetoothConnectionException.java | 10 ++ .../rest/consumers/OrdiniRESTConsumer.java | 12 ++- .../rest/consumers/PrinterRESTConsumer.java | 6 +- .../consumers/PrinterRESTConsumerService.java | 7 -- .../core/utility/PermissionsHelper.java | 12 ++- .../AccettazionePickingActivity.java | 2 - .../AccettazionePickingViewModel.java | 1 - .../ContenutoBancaleActivity.java | 12 +-- .../ContenutoBancaleViewModel.java | 3 +- .../lista_bancali/ListaBancaliActivity.java | 23 ++--- .../picking_resi/PickingResiViewModel.java | 1 - .../ProdRecuperoMaterialeViewModel.java | 1 - .../ProdRientroMerceFragment.java | 6 +- .../ProdRientroMerceViewModel.java | 4 +- .../ProdRientroMerceOrderDetailFragment.java | 77 ++++++++++++--- .../RettificaGiacenzeViewModel.java | 2 +- .../gest/settings/MainSettingsFragment.java | 89 +++++++++++++++++- .../gest/spedizione/SpedizioneActivity.java | 7 +- .../gest/spedizione/SpedizioneViewModel.java | 11 +-- .../input_lu_prod/DialogInputLUProdView.java | 46 ++++++++- .../DialogInputLUProdViewModel.java | 4 +- app/src/main/res/drawable/ic_scale.png | Bin 0 -> 889 bytes .../layout-land-hdpi/dialog_input_lu_prod.xml | 12 +++ .../main/res/layout/dialog_input_lu_prod.xml | 12 +++ app/src/main/res/values-it/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/xml/app_preferences.xml | 60 ++++++------ barcode_base_android_library/build.gradle | 4 +- build.gradle | 2 +- dynamic__base/build.gradle | 4 +- ext_sources/ICONS/icons8-bilancia-96.png | Bin 0 -> 889 bytes honeywellscannerlibrary/build.gradle | 4 +- keyobardemulatorscannerlibrary/build.gradle | 4 +- pointmobilescannerlibrary/build.gradle | 4 +- zebrascannerlibrary/build.gradle | 4 +- 37 files changed, 337 insertions(+), 131 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/exception/BluetoothConnectionException.java create mode 100644 app/src/main/res/drawable/ic_scale.png create mode 100644 ext_sources/ICONS/icons8-bilancia-96.png diff --git a/app/build.gradle b/app/build.gradle index aecdf670..90da6b67 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,11 +78,11 @@ android { } } - lintOptions { - abortOnError false - } dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"] + lint { + abortOnError false + } } @@ -113,6 +113,7 @@ dependencies { implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.preference:preference-ktx:1.2.0' + implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' @@ -164,6 +165,14 @@ dependencies { // testImplementation "org.junit.jupiter:junit-jupiter-api:5.8.1" // androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' // androidTestImplementation 'org.testng:testng:7.4.0' + + + //Bluetooth device manager + implementation 'com.github.harry1453:android-bluetooth-serial:v1.1' + + // RxJava is also required. + implementation 'io.reactivex.rxjava2:rxjava:2.1.12' + implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' } repositories { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b8226a96..b0409f1f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + () { @Override public void onResponse(Call>> call, Response>> response) { - analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", onComplete, onFailed); + analyzeAnswer(response, "retrieveListaArticoliFromOrdiniUscita", sitArtOrds -> { + if (sitArtOrds != null) { + for (SitArtOrdDTO sitArtOrd : sitArtOrds) { + sitArtOrd.setCodMart(sitArtOrd.getCodMart().trim()); + } + } + + onComplete.run(sitArtOrds); + }, onFailed); } @Override @@ -189,7 +197,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { " AND mtb_colt.ser_collo = mtb_colr.ser_collo " + " AND mtb_colt.data_collo = mtb_colr.data_collo " + " AND mtb_colt.num_collo = mtb_colr.num_collo " + - " WHERE " + whereCondGestione + + " WHERE " + whereCondGestione + " AND mtb_colt.segno = " + UtilityDB.valueToString(segno) + " " + " AND mtb_colt.data_doc IS NULL AND "; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index 56f4a086..85bda60e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -9,7 +9,6 @@ import java.util.List; import javax.inject.Singleton; -import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.exception.NoPrintersFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; @@ -55,7 +54,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { }); } - public void printCollo(Type printerType, MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs onFailed) { + public void printCollo(MtbColt testataColloToPrint, Runnable onComplete, RunnableArgs onFailed) { // if (BuildConfig.DEBUG) { // onComplete.run(); @@ -64,9 +63,6 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); Call> callable = null; - if (printerType != null) - callable = printerService.printCollo(printerType.toString(), testataColloToPrint); - else callable = printerService.printCollo(testataColloToPrint); callable.enqueue(new Callback<>() { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java index f74f94e9..ebde3247 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumerService.java @@ -26,13 +26,6 @@ public interface PrinterRESTConsumerService { @Body JasperDTO jasperDTO ); - - @POST("wms/printEtichettaSSCC") - Call> printCollo( - @Query("printerType") String printerType, - @Body MtbColt mtbColtToPrint - ); - @POST("wms/printEtichettaSSCC") Call> printCollo( @Body MtbColt mtbColtToPrint diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java index af9ff373..c68e7828 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java @@ -3,16 +3,15 @@ package it.integry.integrywmsnative.core.utility; import android.Manifest; import android.content.pm.PackageManager; import android.os.Build; -import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; import com.annimon.stream.Stream; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.app.ActivityCompat; import it.integry.integrywmsnative.SplashActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -31,6 +30,11 @@ public class PermissionsHelper { if(Build.VERSION.SDK_INT >= 23) { //permissionsToAsk.add(Manifest.permission.REQUEST_INSTALL_PACKAGES); } + if(Build.VERSION.SDK_INT >= 31) { + permissionsToAsk.add(Manifest.permission.BLUETOOTH_CONNECT); + } + + String[] permissionArray = new String[permissionsToAsk.size()]; permissionsToAsk.toArray(permissionArray); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java index 6bf1e31b..8ce4f321 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingActivity.java @@ -44,7 +44,6 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -732,7 +731,6 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta Intent myIntent = ListaBancaliActivity.createIntent(this, Stream.of(mtbColts).map(x -> (MtbColt) x).toList(), input -> ((RecoverMtbColt) input).isFlagCanBeRecovered(), - PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO)); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 8f5d4457..8500f479 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -837,7 +837,6 @@ public class AccettazionePickingViewModel { cloneMtbColt.setGestione(cloneMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE ? GestioneEnum.PRODUZIONE : cloneMtbColt.getGestioneEnum()); this.mPrinterRESTConsumer.printCollo( - PrinterRESTConsumer.Type.SECONDARIA, cloneMtbColt, () -> { this.sendLUSuccessfullyPrinted(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java index 2304a33c..20086b1d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleActivity.java @@ -45,16 +45,14 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB public ObservableField recoverFabMenuVisible = new ObservableField<>(false); private String mReportName; - private PrinterRESTConsumer.Type mPrinterType; private static class Key { private static final String MtbColtKey = "mtbColtKey"; private static final String CanRecoverUL = "canRecoverUL"; - private static final String PrinterType = "printerType"; private static final String ReportName = "reportName"; } - public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) { + public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, String reportName) { Intent myIntent = new Intent(context, ContenutoBancaleActivity.class); String keyMtbColt = DataCache.addItem(item); @@ -63,9 +61,6 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB String keyCanRecoverUL = DataCache.addItem(canRecoverUl); myIntent.putExtra(Key.CanRecoverUL, keyCanRecoverUL); - String keyPrinterType = DataCache.addItem(printerType); - myIntent.putExtra(Key.PrinterType, keyPrinterType); - String keyReportName = DataCache.addItem(reportName); myIntent.putExtra(Key.ReportName, keyReportName); @@ -79,7 +74,6 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); mtbColt.set(DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey))); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); - mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); bindings = DataBindingUtil.setContentView(this, R.layout.activity_contenuto_bancale); @@ -97,7 +91,7 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB getSupportActionBar().setDisplayHomeAsUpEnabled(true); mViewModel.setListener(this); - mViewModel.init(mtbColt.get(), mPrinterType, mReportName); + mViewModel.init(mtbColt.get(), mReportName); recoverFabMenuVisible.set(canRecoverUL); @@ -143,7 +137,7 @@ public class ContenutoBancaleActivity extends BaseActivity implements ContenutoB this.bindings.contenutoBancaleFab.close(true); this.onLoadingStarted(); try { - this.mPrinterRESTConsumer.printCollo(mPrinterType, mtbColt.get(), + this.mPrinterRESTConsumer.printCollo(mtbColt.get(), () -> { this.onLoadingEnded(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java index ef70a79d..b1e242bd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ContenutoBancaleViewModel.java @@ -5,7 +5,6 @@ import javax.inject.Inject; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; public class ContenutoBancaleViewModel { @@ -19,7 +18,7 @@ public class ContenutoBancaleViewModel { this.mDepositoRESTConsumer = depositoRESTConsumer; } - public void init(MtbColt mtbColt, PrinterRESTConsumer.Type printerType, String defaultReportName) { + public void init(MtbColt mtbColt, String defaultReportName) { } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java index 6d9afe15..17c27e32 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/ListaBancaliActivity.java @@ -19,7 +19,6 @@ import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.databinding.ActivityListaBancaliBinding; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity; import it.integry.integrywmsnative.gest.lista_bancali.ui.ListaColliMainListAdapter; @@ -30,7 +29,6 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi private static class Key { private static final String MtbColtsKey = "mtbColtsKey"; private static final String CanRecoverUL = "canRecoverUL"; - private static final String PrinterType = "printerType"; private static final String ReportName = "reportName"; private static final String FlagOnlyResiduo = "flagOnlyResiduo"; } @@ -43,7 +41,6 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi private final ObservableArrayList mtbColts = new ObservableArrayList<>(); private RunnableArgsWithReturn mCanRecoverUl; - private PrinterRESTConsumer.Type mPrinterType; private String mReportName; private boolean mFlagOnlyResiduo; @@ -51,19 +48,19 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi - public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, String reportName) { - return createIntent(context, items, canRecoverUlAction, printerType, true, reportName); + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, String reportName) { + return createIntent(context, items, canRecoverUlAction, true, reportName); } - public static Intent createIntent(Context context, List items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { - return createIntent(context, items, input -> canRecoverUl, printerType, onlyResiduo); + public static Intent createIntent(Context context, List items, boolean canRecoverUl, boolean onlyResiduo) { + return createIntent(context, items, input -> canRecoverUl, onlyResiduo); } - public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo) { - return createIntent(context, items, canRecoverUlAction, printerType, onlyResiduo, null); + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, boolean onlyResiduo) { + return createIntent(context, items, canRecoverUlAction, onlyResiduo, null); } - public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, PrinterRESTConsumer.Type printerType, boolean onlyResiduo, String reportName) { + public static Intent createIntent(Context context, List items, RunnableArgsWithReturn canRecoverUlAction, boolean onlyResiduo, String reportName) { Intent myIntent = new Intent(context, ListaBancaliActivity.class); String mtbColtsKey = DataCache.addItem(items); @@ -72,9 +69,6 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi String canRecoverULKey = DataCache.addItem(canRecoverUlAction); myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey); - String printerTypeKey = DataCache.addItem(printerType); - myIntent.putExtra(Key.PrinterType, printerTypeKey); - String flagOnlyResiduoKey = DataCache.addItem(onlyResiduo); myIntent.putExtra(Key.FlagOnlyResiduo, flagOnlyResiduoKey); @@ -97,7 +91,6 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL)); - mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType)); mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName)); mFlagOnlyResiduo = DataCache.retrieveItem(getIntent().getStringExtra(Key.FlagOnlyResiduo)); @@ -138,7 +131,7 @@ public class ListaBancaliActivity extends BaseActivity implements ListaBancaliVi } public void startContenutoBancaleActivity(MtbColt item){ - Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mPrinterType, mReportName); + Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl.run(item), mReportName); startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index b2ad2ada..d73cde89 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -218,7 +218,6 @@ public class PickingResiViewModel { private void singlePrint(MtbColt mtbColtToPrint, Runnable onComplete, RunnableArgs onFailed) { this.mPrinterRESTConsumer.printCollo( - PrinterRESTConsumer.Type.PRIMARIA, mtbColtToPrint, onComplete, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java index 7c8ef39d..5ea748b6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java @@ -291,7 +291,6 @@ public class ProdRecuperoMaterialeViewModel { private void singlePrint(MtbColt mtbColtToPrint, Runnable onComplete, RunnableArgs onAbort) { this.mPrinterRESTConsumer.printCollo( - PrinterRESTConsumer.Type.PRIMARIA, mtbColtToPrint, onComplete, onAbort); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java index fd35f254..735dd909 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceFragment.java @@ -117,10 +117,12 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra public void onDestroyView() { super.onDestroyView(); - for (Runnable onPreDestroy : - mOnPreDestroyList) { + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } + + mProdRientroMerceOrderDetailFragment.onDetach(); + mProdRientroMerceOrderListFragment.onDetach(); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java index df1bbf7e..8d8a13a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/ProdRientroMerceViewModel.java @@ -8,8 +8,8 @@ import javax.inject.Inject; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; -import it.integry.integrywmsnative.gest.picking_resi.exceptions.DocumentsLoadException; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; +import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException; public class ProdRientroMerceViewModel { @@ -31,7 +31,7 @@ public class ProdRientroMerceViewModel { this.mMesRESTConsumer.getOrdiniLavorazione("I", null, ordiniLavorazioneList -> { this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList); this.sendOnLoadingEnded(); - }, ex -> this.sendError(new DocumentsLoadException(ex))); + }, ex -> this.sendError(new OrdersLoadException(ex))); } public MutableLiveData> getOrdiniLavorazioneAperti() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java index 80329f6d..b3d0c409 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java @@ -1,10 +1,13 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail; +import android.bluetooth.BluetoothDevice; +import android.content.SharedPreferences; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; @@ -12,10 +15,13 @@ import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; import androidx.fragment.app.Fragment; import androidx.lifecycle.MutableLiveData; +import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Stream; import com.google.gson.reflect.TypeToken; +import com.harrysoft.androidbluetoothserial.BluetoothManager; +import com.harrysoft.androidbluetoothserial.BluetoothSerialDevice; import java.math.BigDecimal; import java.util.ArrayList; @@ -23,8 +29,11 @@ import java.util.List; import javax.inject.Inject; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.exception.BluetoothConnectionException; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -36,6 +45,7 @@ import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderDetailBinding; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; +import it.integry.integrywmsnative.gest.settings.MainSettingsFragment; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdDTO; import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdView; @@ -64,6 +74,9 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements private RunnableArgs onMtbColtClicked; + private BluetoothManager bluetoothManager; + private BluetoothSerialDevice mConnectedBluetoothDevice; + public ObservableField sumLUNumber = new ObservableField<>(BigDecimal.ZERO); public ObservableField sumColliNumber = new ObservableField<>(BigDecimal.ZERO); @@ -103,6 +116,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList); this.initRecyclerView(); + this.initULScaleBluetoothConnection(); return mBindings.getRoot(); } @@ -121,10 +135,52 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements mBindings.mainList.setAdapter(mAdapter); mAdapter.setOnItemClickListener(item -> { - if(this.onMtbColtClicked != null) this.onMtbColtClicked.run(item); + if (this.onMtbColtClicked != null) this.onMtbColtClicked.run(item); }); } + private void initULScaleBluetoothConnection() { + bluetoothManager = BluetoothManager.getInstance(); + if (bluetoothManager == null) { + // Bluetooth unavailable on this device :( tell the user + Toast.makeText(requireActivity(), "Bluetooth not available.", Toast.LENGTH_LONG).show(); // Replace context with your context instance. + + return; + } + + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()); + var btMacAddress = sharedPreferences.getString(MainSettingsFragment.KEY_PALLET_BT_DEVICE, null); + + if (btMacAddress == null) { + Toast.makeText(requireActivity(), "Nessun dispositivo BLUETOOTH configurato nelle impostazioni.", Toast.LENGTH_LONG).show(); // Replace context with your context instance. + return; + } + + var btName = Stream.of(bluetoothManager.getPairedDevicesList()) + .filter(x -> x.getAddress().equalsIgnoreCase(btMacAddress)) + .map(BluetoothDevice::getName) + .findFirstOrElse(null); + + var disposableBluetooth = bluetoothManager.openSerialDevice(btMacAddress) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::onConnected, x -> this.onError(new BluetoothConnectionException(btName, btMacAddress, x))); + + } + + private void onConnected(BluetoothSerialDevice connectedDevice) { + Toast.makeText(requireActivity(), "Connesso a: " + connectedDevice.getMac(), Toast.LENGTH_LONG).show(); + mConnectedBluetoothDevice = connectedDevice; + } + + @Override + public void onDetach() { + if (mConnectedBluetoothDevice != null) + bluetoothManager.close(); + + super.onDetach(); + } + public void setOrder(OrdineLavorazioneDTO order) { currentOrder.postValue(order); mBindings.invalidateAll(); @@ -134,7 +190,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements } private void refreshList(List mtbColts) { - if(mtbColts != null) { + if (mtbColts != null) { sumLUNumber.set(new BigDecimal(mtbColts.size())); AtomicBigDecimal sumColli = new AtomicBigDecimal(BigDecimal.ZERO); @@ -186,7 +242,8 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements " AND (data_fine IS NULL OR last_step = id_step) " + "ORDER BY id_step DESC"; - mSystemRESTConsumer.>processSql(sql, new TypeToken>() {}.getType(), dtbOrdStep -> { + mSystemRESTConsumer.>processSql(sql, new TypeToken>() { + }.getType(), dtbOrdStep -> { this.onLoadingEnded(); @@ -203,7 +260,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements DialogInputLUProdView - .newInstance(dialogInputLUProdDTO, resultDTO -> { + .newInstance(mConnectedBluetoothDevice.toSimpleDeviceInterface(), dialogInputLUProdDTO, resultDTO -> { ProdRientroMerceOrderDetailPickedQuantityDTO pickedQuantityDTO = new ProdRientroMerceOrderDetailPickedQuantityDTO() .setNumCnf(resultDTO.getNumCnf()) .setPesoCollo(resultDTO.getPesoCollo()) @@ -255,8 +312,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements default: return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_clock_circle_outline_24dp); } - } - else + } else return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_clock_circle_outline_24dp); } @@ -271,8 +327,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements default: return ContextCompat.getColor(requireActivity(), R.color.blue_800); } - } - else + } else return ContextCompat.getColor(requireActivity(), R.color.blue_800); } @@ -287,8 +342,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements default: return ContextCompat.getDrawable(requireActivity(), R.drawable.label_primary_text); } - } - else + } else return ContextCompat.getDrawable(requireActivity(), R.drawable.label_primary_text); } @@ -303,8 +357,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements default: return ContextCompat.getColor(requireActivity(), R.color.blue_800); } - } - else + } else return ContextCompat.getColor(requireActivity(), R.color.blue_800); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index aa1fabf9..6874e361 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -494,7 +494,7 @@ public class RettificaGiacenzeViewModel { onComplete.run(); } else { - this.mPrinterRESTConsumer.printCollo(null, mCurrentMtbColt, () -> { + this.mPrinterRESTConsumer.printCollo(mCurrentMtbColt, () -> { this.sendLUSuccessfullyPrinted(); onComplete.run(); }, ex -> this.sendLUPrintError(ex, onComplete)); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index aded4d53..cf454c0b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -1,20 +1,34 @@ package it.integry.integrywmsnative.gest.settings; +import android.bluetooth.BluetoothDevice; import android.content.Context; import android.os.Bundle; +import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; +import androidx.preference.ListPreference; +import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; +import com.annimon.stream.Stream; +import com.harrysoft.androidbluetoothserial.BluetoothManager; + import java.util.ArrayList; +import java.util.Collection; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.utility.UtilityResources; -public class MainSettingsFragment extends PreferenceFragmentCompat implements ITitledFragment { +public class MainSettingsFragment extends PreferenceFragmentCompat implements ITitledFragment, Preference.OnPreferenceChangeListener { private final ArrayList onPreDestroyList = new ArrayList<>(); + public static final String KEY_PALLET_BT_DEVICE = "pallet_scale_bt_device"; + + private Collection btPairedDevices; + @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { titleText.setText(context.getText(R.string.settings_category).toString()); @@ -23,8 +37,52 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.app_preferences, rootKey); + + var palletScaleBtDeviceListPref = (ListPreference) findPreference(KEY_PALLET_BT_DEVICE); + setListPreferenceData(palletScaleBtDeviceListPref); + palletScaleBtDeviceListPref.setOnPreferenceChangeListener(this); } + + protected void setListPreferenceData(ListPreference lp) { + BluetoothManager bluetoothManager = BluetoothManager.getInstance(); + if (bluetoothManager == null) { + // Bluetooth unavailable on this device :( tell the user + Toast.makeText(requireActivity(), "Bluetooth not available", Toast.LENGTH_LONG).show(); // Replace context with your context instance. + return; + } + + btPairedDevices = bluetoothManager.getPairedDevicesList(); + + if(!Stream.of(btPairedDevices).anyMatch(x -> x.getAddress().equalsIgnoreCase(lp.getValue()))) { + lp.setValue(null); + } + + updatePalletBtDeviceSummary(lp, lp.getValue()); + + if (!btPairedDevices.isEmpty()) { + CharSequence[] entries = new CharSequence[btPairedDevices.size()]; + Stream.of(btPairedDevices) + .map(BluetoothDevice::getName) + .toList() + .toArray(entries); + + CharSequence[] entryValues = new CharSequence[btPairedDevices.size()]; + Stream.of(btPairedDevices) + .map(BluetoothDevice::getAddress) + .toList() + .toArray(entryValues); + + lp.setEntries(entries); + lp.setEntryValues(entryValues); + } else { + lp.setEntries(new CharSequence[0]); + lp.setEntryValues(new CharSequence[0]); + lp.setDialogMessage("Nessun dispositivo bluetooth associato. Associane uno dalle impostazioni bluetooth prima di procedere."); + } + } + + @Override public void addOnPreDestroy(Runnable onPreDestroy) { onPreDestroyList.add(onPreDestroy); @@ -34,9 +92,34 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT public void onDestroyView() { super.onDestroyView(); - for (Runnable onPreDestroy : - onPreDestroyList) { + for (Runnable onPreDestroy : onPreDestroyList) { onPreDestroy.run(); } } + + @Override + public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { + + final int idx; + switch (preference.getKey()) { + case KEY_PALLET_BT_DEVICE: + final var palletScaleBtDeviceListPref = (ListPreference) preference; + updatePalletBtDeviceSummary(palletScaleBtDeviceListPref, (String) newValue); + break; + + } + // Set result so knows to refresh itself +// getActivity().setResult(RESULT_OK); + return true; + } + + + private void updatePalletBtDeviceSummary(ListPreference listPref, String btDeviceAddress) { + String btDeviceName = Stream.of(btPairedDevices) + .filter(x -> x.getAddress().equalsIgnoreCase(btDeviceAddress)) + .map(BluetoothDevice::getName) + .findFirstOrElse(UtilityResources.getString(R.string.pallet_scale_bt_device_selection_info)); + listPref.setSummary(btDeviceName); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index 38cf6c30..e8e8da53 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -44,7 +44,6 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -56,12 +55,12 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; -import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListAdapter; -import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListAdapter; +import it.integry.integrywmsnative.gest.spedizione.ui.SpedizioneListModel; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.DialogConsts; @@ -669,7 +668,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo ArrayList createdMtbColts = this.mViewmodel.getCreatedMtbColts(); - Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, PrinterRESTConsumer.Type.PRIMARIA, false); + Intent myIntent = ListaBancaliActivity.createIntent(this, createdMtbColts, true, false); this.startActivityForResult(myIntent, PICK_UL_REQUEST); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index c291a184..f63c79af 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1722,26 +1722,25 @@ public class SpedizioneViewModel { if (!shouldPrint) { onComplete.run(); } else { - cyclicPrint(PrinterRESTConsumer.Type.PRIMARIA, mtbColtsToPrint.iterator(), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); + cyclicPrint(mtbColtsToPrint.iterator(), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); } }); } - private void cyclicPrint(PrinterRESTConsumer.Type printerType, @NotNull Iterator sourceMtbColts, Runnable onComplete, RunnableArgs onAbort) { + private void cyclicPrint(@NotNull Iterator sourceMtbColts, Runnable onComplete, RunnableArgs onAbort) { if (sourceMtbColts.hasNext()) { - singlePrint(printerType, sourceMtbColts.next(), () -> { - cyclicPrint(printerType, sourceMtbColts, onComplete, onAbort); + singlePrint(sourceMtbColts.next(), () -> { + cyclicPrint(sourceMtbColts, onComplete, onAbort); }, onAbort); } else { onComplete.run(); } } - private void singlePrint(PrinterRESTConsumer.Type printerType, MtbColt mtbColtToPrint, Runnable onComplete, RunnableArgs onFailed) { + private void singlePrint(MtbColt mtbColtToPrint, Runnable onComplete, RunnableArgs onFailed) { this.mPrinterRESTConsumer.printCollo( - printerType, mtbColtToPrint, onComplete, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java index 1c72ce25..50707e25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdView.java @@ -22,6 +22,7 @@ import androidx.fragment.app.DialogFragment; import com.annimon.stream.Optional; import com.annimon.stream.Stream; import com.google.android.material.textfield.TextInputLayout; +import com.harrysoft.androidbluetoothserial.SimpleBluetoothDeviceInterface; import com.pedromassango.doubleclick.DoubleClick; import com.pedromassango.doubleclick.DoubleClickListener; @@ -52,10 +53,13 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI @Inject DialogInputLUProdViewModel mViewModel; + private final SimpleBluetoothDeviceInterface mBluetoothDeviceInterface; private final DialogInputLUProdDTO mDialogInputLUProdDTO; private final RunnableArgs mOnComplete; private final Runnable mOnAbort; + public ObservableField enabledBluetoothDevice = new ObservableField<>(); + public ObservableField selectedMtbTcol = new ObservableField<>(); public ObservableField currentMtbTCol = new ObservableField<>(); @@ -87,13 +91,14 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null; private DialogInputLULineeProdAdapter lineeProdArrayAdapter = null; - public static DialogInputLUProdView newInstance(@NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) { - return new DialogInputLUProdView(dialogInputLUProdDTO, onComplete, onAbort); + public static DialogInputLUProdView newInstance(SimpleBluetoothDeviceInterface bluetoothDeviceInterface, @NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) { + return new DialogInputLUProdView(bluetoothDeviceInterface, dialogInputLUProdDTO, onComplete, onAbort); } - private DialogInputLUProdView(@NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) { + private DialogInputLUProdView(SimpleBluetoothDeviceInterface bluetoothDeviceInterface, @NotNull DialogInputLUProdDTO dialogInputLUProdDTO, @NotNull RunnableArgs onComplete, @NotNull Runnable onAbort) { super(); + this.mBluetoothDeviceInterface = bluetoothDeviceInterface; this.mDialogInputLUProdDTO = dialogInputLUProdDTO; this.mOnComplete = onComplete; this.mOnAbort = onAbort; @@ -104,7 +109,6 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); - } @@ -142,6 +146,13 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI super.onStart(); this.init(); + + if(mBluetoothDeviceInterface != null) { + // Listen to bluetooth events + mBluetoothDeviceInterface.setListeners(this::onMessageReceived, this::onMessageSent, x -> this.onError(new Exception(x))); + enabledBluetoothDevice.set(true); + } + this.mViewModel.setListener(this); this.mViewModel.init(mDialogInputLUProdDTO.getCodJfasParent()); } @@ -385,10 +396,37 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI this.onDataChanged(); } + public void readWeightFromDevice() { +// Toast.makeText(requireActivity(), "Leggo peso uaglio", Toast.LENGTH_SHORT).show(); + + // Let's send a message: + mBluetoothDeviceInterface.sendMessage("GW\r"); + } + + private void onMessageSent(String request) { +// Toast.makeText(requireActivity(), "Aspitt nu mument", Toast.LENGTH_SHORT).show(); + } + + private void onMessageReceived(String response) { +// Toast.makeText(requireActivity(), "Ne awa: " + response, Toast.LENGTH_SHORT).show(); + + String tmpResp = response.replace(".", ""); + + BigDecimal grossWeight = new BigDecimal(tmpResp.substring(2,7)); + BigDecimal netWeight = new BigDecimal(tmpResp.substring(8,13)); + + mViewModel.setPesoNetto(netWeight); + mViewModel.setPesoLordo(grossWeight); + } + public void save() { if (this.mViewModel.validate()) { this.mOnComplete.run(this.mViewModel.getResult()); + + if(mBluetoothDeviceInterface != null) + mBluetoothDeviceInterface.setListeners(null, null, null); + dismiss(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java index 92c6a88a..f87b2999 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/DialogInputLUProdViewModel.java @@ -158,8 +158,8 @@ public class DialogInputLUProdViewModel { this.mListener.onDataChanged(); } - public void setPesoNetto(BigDecimal qtaTot) { - this.internalPesoNetto = qtaTot; + public void setPesoNetto(BigDecimal pesoNetto) { + this.internalPesoNetto = pesoNetto; } public void setTaraPed(BigDecimal taraPed) { diff --git a/app/src/main/res/drawable/ic_scale.png b/app/src/main/res/drawable/ic_scale.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c5ca11dd537db6cc7bc17d0b1029a880ef63bf GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlJ8^*mi1 zLn`LHonxIX>L}4Re+_%!M#HjWr?~$y{AD~C<}Fx1L1MkHz+dKDQ7aT8RJI=bk|i#9 zgxieG#I@(>JVm8>o2MIFe?IrHHepuE&A;^4qT)&55=0~QKW84!Y^&Qf{9FcQIXX87jDaWKQJzCoKLuuNn_2#dI zyM9%#ao=&SqpDi*YnY4H{DPYze_#czg4I5FZugx$>Jq?6TZKm+&5{L!>#q2vg?m4 zS9?_{y}v%C&-=jBw&W?h!NU1B>VJJ+^)TWnP;vI;K8Ma&g}2vLWgCII?ydK>Vp1(_ z+!8;(gvILxQ{{fUmmE_ruwJU$yhM4y9oA1!`cj?YCBc9`4D@bxl84Y+?lWy*mXX=e5qX1=&()%RO+0JP^L0sF_DXY{Z>?vtdkSP5W=;OKx}kjM z>KTV_b3C8$ZS{)#TNiuv+*x1;f zXOjbW2K;59>QZQ2d{9l4r^@&$MJ|7A_OcBn3B`J;$6kCXy>?h6$(*Hvpr zA1HlrM4;7GX=nWX_KTtgj5|2yu%GMgwzvBC*X)B}h5z3R)xA~G7RT=SaXq_x9yt;B d7;^q(J{S8^VDZP6SYTda@O1TaS?83{1OTNBnsxvH literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml index c02e5843..48d60ac4 100644 --- a/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml +++ b/app/src/main/res/layout-land-hdpi/dialog_input_lu_prod.xml @@ -65,6 +65,18 @@ android:src="@drawable/ic_erase_96" android:tint="@android:color/white" /> + + diff --git a/app/src/main/res/layout/dialog_input_lu_prod.xml b/app/src/main/res/layout/dialog_input_lu_prod.xml index a3cdb519..c4d51048 100644 --- a/app/src/main/res/layout/dialog_input_lu_prod.xml +++ b/app/src/main/res/layout/dialog_input_lu_prod.xml @@ -52,6 +52,18 @@ android:onClick="@{() -> view.resetValues()}" android:tint="@android:color/white"/> + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c801f0ae..1ed3a1d1 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -30,6 +30,9 @@ Resetta Evasi UL + Bilancia UL + Dispositivo bluetooth + Seleziona un dispositivo bluetooth già associato Questi permessi sono necessari al funzionamento dell\'app Picking non disponibile diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1a3ecbc5..1d061efb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -81,6 +81,9 @@ Insert info about LU TYPE and NET / GROSS weight Info LU\'s info + Pallet scale + Bluetooth device + Please select a paired bluetooth device Continue diff --git a/app/src/main/res/xml/app_preferences.xml b/app/src/main/res/xml/app_preferences.xml index 6106853a..3e312aac 100644 --- a/app/src/main/res/xml/app_preferences.xml +++ b/app/src/main/res/xml/app_preferences.xml @@ -1,42 +1,42 @@ - + + app:title="@string/accettazione_title_fragment" + app:iconSpaceReserved="false"> - + + + + app:title="@string/vendita_title_fragment" + app:iconSpaceReserved="false"> - + - - - - + + - - - - - - - + - - - - - - - + \ No newline at end of file diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 82f65226..b13e7245 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -22,11 +22,11 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies { diff --git a/build.gradle b/build.gradle index dfb93232..c6257b55 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.10' diff --git a/dynamic__base/build.gradle b/dynamic__base/build.gradle index e3f751bf..ae988304 100644 --- a/dynamic__base/build.gradle +++ b/dynamic__base/build.gradle @@ -13,10 +13,10 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies { diff --git a/ext_sources/ICONS/icons8-bilancia-96.png b/ext_sources/ICONS/icons8-bilancia-96.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c5ca11dd537db6cc7bc17d0b1029a880ef63bf GIT binary patch literal 889 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlJ8^*mi1 zLn`LHonxIX>L}4Re+_%!M#HjWr?~$y{AD~C<}Fx1L1MkHz+dKDQ7aT8RJI=bk|i#9 zgxieG#I@(>JVm8>o2MIFe?IrHHepuE&A;^4qT)&55=0~QKW84!Y^&Qf{9FcQIXX87jDaWKQJzCoKLuuNn_2#dI zyM9%#ao=&SqpDi*YnY4H{DPYze_#czg4I5FZugx$>Jq?6TZKm+&5{L!>#q2vg?m4 zS9?_{y}v%C&-=jBw&W?h!NU1B>VJJ+^)TWnP;vI;K8Ma&g}2vLWgCII?ydK>Vp1(_ z+!8;(gvILxQ{{fUmmE_ruwJU$yhM4y9oA1!`cj?YCBc9`4D@bxl84Y+?lWy*mXX=e5qX1=&()%RO+0JP^L0sF_DXY{Z>?vtdkSP5W=;OKx}kjM z>KTV_b3C8$ZS{)#TNiuv+*x1;f zXOjbW2K;59>QZQ2d{9l4r^@&$MJ|7A_OcBn3B`J;$6kCXy>?h6$(*Hvpr zA1HlrM4;7GX=nWX_KTtgj5|2yu%GMgwzvBC*X)B}h5z3R)xA~G7RT=SaXq_x9yt;B d7;^q(J{S8^VDZP6SYTda@O1TaS?83{1OTNBnsxvH literal 0 HcmV?d00001 diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 48543a16..43494729 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -22,10 +22,10 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies { diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 57f18f1d..2b890c40 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -22,10 +22,10 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies { diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index 51b0f771..bc2847d7 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -21,10 +21,10 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies { diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index c77b13fc..961758a6 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -21,10 +21,10 @@ android { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } - - lintOptions { + lint { abortOnError false } + } dependencies {