diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index e203ab45..5bb52ad8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -16,6 +16,8 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComp import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; // Definition of the Application graph @Singleton @@ -28,7 +30,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; PickingLiberoModule.class, RettificaGiacenzeModule.class, SpedizioneModule.class, - AccettazionePickingModule.class}) + AccettazionePickingModule.class, + DialogInputQuantityV2Module.class}) public interface MainApplicationComponent { MainActivityComponent.Factory mainActivityComponent(); @@ -38,5 +41,6 @@ public interface MainApplicationComponent { RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); + DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java index 3263a3d7..2677d166 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean13PesoModel.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.model; public class Ean13PesoModel { private String precode; + //TODO: Change to bigdecimal private Float peso; public String getPrecode() { 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 b5236740..784fabd7 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 @@ -411,7 +411,7 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta .anyMatch(x -> !x.isHidden()); } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index a00205cb..ed26ed57 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -191,7 +191,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, mAdapter = null; } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index 77d1d350..7c78b0d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -98,7 +98,7 @@ public class ProdRecuperoMaterialeViewModel { - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index e10d66bf..2f3872e1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -75,7 +75,7 @@ public class DialogScanLisA { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); 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 5ea09f6a..c38d50c1 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 @@ -528,7 +528,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } - private RunnableArgs onScanSuccessful = data -> { + private final RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); this.openProgress(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java index 44f2f38e..9438d19e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java @@ -146,7 +146,7 @@ public class DialogAskPositionOfLU { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index de1e8a77..6d09ccba 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -138,7 +138,7 @@ public class DialogChooseArtsFromListaArts { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index 9936b842..88560468 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -409,7 +409,7 @@ public class DialogInputQuantity { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); if(UtilityBarcode.isEanPeso(data)){ diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java index 9035a88b..50776e4b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; +import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.ColorStateList; @@ -27,16 +28,26 @@ import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; import java.util.Date; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbUntMis; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityObservable; +import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; public class DialogInputQuantityV2 extends DialogFragment implements DialogInputQuantityV2ViewModel.Listener { - private DialogInputQuantityV2ViewModel mViewModel; + @Inject + DialogInputQuantityV2ViewModel mViewModel; private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; private RunnableArgss mOnComplete; private Runnable mOnAbort; @@ -60,6 +71,9 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput private DialogInputQuantityV2Binding mBindings; private boolean mEnableDataCallback = true; + private int mBarcodeScannerIstanceID; + private Dialog mCurrentProgress; + public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, @NotNull RunnableArgss onComplete, @NotNull Runnable onAbort) { return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete, onAbort); } @@ -74,6 +88,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); + + this.initBarcode(); } @Nullable @@ -85,7 +101,12 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput mBindings.toolbar.setTitle("Inserimento articolo"); - this.mViewModel = new DialogInputQuantityV2ViewModel() + MainApplication.appComponent + .dialogInputQuantityV2Component() + .create() + .inject(this); + + this.mViewModel .setMtbAart(mDialogInputQuantityV2DTO.getMtbAart()) .setInitialNumCnf(mDialogInputQuantityV2DTO.getInitialNumCnf()) .setInitialQtaCnf(mDialogInputQuantityV2DTO.getInitialQtaCnf()) @@ -114,6 +135,35 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput return mBindings.getRoot(); } + private void initBarcode() { + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(this.context, ex, false))); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.openProgress(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + this.closeProgress(); + }); + }; + + private void openProgress() { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + } + + private void closeProgress() { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + } public void save() { if (this.mViewModel.validate()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java new file mode 100644 index 00000000..79e617d0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Component.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogInputQuantityV2Component { + + @Subcomponent.Factory + interface Factory { + DialogInputQuantityV2Component create(); + } + + void inject(DialogInputQuantityV2 dialogInputQuantityV2); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java new file mode 100644 index 00000000..2c3133d3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; + +@Module(subcomponents = DialogInputQuantityV2Component.class) +public class DialogInputQuantityV2Module { + + @Provides + DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index d544eb4c..5c18c0d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -5,8 +5,15 @@ import androidx.databinding.ObservableField; import java.math.BigDecimal; import java.util.Date; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.InvalidExpireDateException; @@ -55,6 +62,13 @@ public class DialogInputQuantityV2ViewModel { private Listener mListener; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + + @Inject + public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + } + public void init() { if(this.initialNumCnf != null && this.initialQtaTot != null && this.initialQtaCnf != null) { this.internalNumCnf = this.initialNumCnf; @@ -87,6 +101,61 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onDataChanged(); } + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + if(UtilityBarcode.isEanPeso(barcodeScanDTO)) { + Ean13PesoModel ean13PesoModel; + + try { + ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); + } catch (Exception ex) { + this.mListener.onError(ex); + onComplete.run(); + return; + } + + if(this.mtbAart.get() != null && this.mtbAart.get().getBarCode() != null && ean13PesoModel.getPrecode().contains(this.mtbAart.get().getBarCode())) { + this.setQtaTot(BigDecimal.valueOf(ean13PesoModel.getPeso())); + } + + onComplete.run(); + } else if(UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + if(ean128Model == null) { + onComplete.run(); + return; + } + + if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) { + this.setPartitaMag(ean128Model.BatchLot); + } + + try { + if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){ + this.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore)); + } else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) { + this.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry)); + } + } catch (Exception ex) { + this.mListener.onError(ex); + } + + if(ean128Model.Count != null && ean128Model.Count > 0) { + this.setNumCnf(BigDecimal.valueOf(ean128Model.Count)); + } else if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) { + this.setQtaTot(BigDecimal.valueOf(ean128Model.NetWeightKg)); + } + + this.mListener.onDataChanged(); + onComplete.run(); + + }, ex -> { + this.mListener.onError(ex); + onComplete.run(); + }); + } + } + public String getPartitaMag() { return internalPartitaMag; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java index 6cefad70..2e20c562 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArt.java @@ -82,7 +82,7 @@ public class DialogScanArt { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java index 23e8b32f..192f2bf2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java @@ -126,7 +126,7 @@ public class DialogScanOrCreateLU { } - private RunnableArgs onScanSuccessfull = data -> { + private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);