From 392dd183389f5b1b8298f14285c1452fdb0f13a2 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 24 Apr 2024 19:46:11 +0200 Subject: [PATCH] Cambiata lettura barcode in Versamento su Ordine --- .../core/rest/model/Ean128Model.java | 6 +- .../rest/model/uds/CreateUDSRequestDTO.java | 9 ++ .../picking_libero/PickingLiberoFragment.java | 3 +- .../PickingLiberoViewModel.java | 17 ++-- .../DialogAskLineaProdModule.java | 5 +- .../DialogAskLineaProdView.java | 11 +-- .../DialogAskLineaProdViewModel.java | 82 +++++++++++++++---- .../dto/DialogAskLineaProdResponse.java | 23 ++++++ .../main/res/layout/dialog_ask_linea_prod.xml | 7 +- 9 files changed, 126 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/dto/DialogAskLineaProdResponse.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java index 98bcacec..daadfc14 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java @@ -328,13 +328,13 @@ public class Ean128Model { public String InternalPart; ///Informazioni interne - public String Internal1; + public String Internal1; //Cod-Mart ///Informazioni interne - public String Internal2; + public String Internal2; //IDLotto ///Informazioni interne - public String Internal3; + public String Internal3; //Cod-Jfas ///Informazioni interne public String Internal4; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CreateUDSRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CreateUDSRequestDTO.java index f960809a..2e196794 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CreateUDSRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CreateUDSRequestDTO.java @@ -14,6 +14,7 @@ public class CreateUDSRequestDTO { private String codAnag; private String codVdes; private String rifOrd; + private Integer idLotto; private boolean orderRequired; private List orders; @@ -125,6 +126,14 @@ public class CreateUDSRequestDTO { return this; } + public Integer getIdLotto() { + return idLotto; + } + + public CreateUDSRequestDTO setIdLotto(Integer idLotto) { + this.idLotto = idLotto; + return this; + } public static class Causale { 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 4d3c07f1..2b10d80b 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 @@ -55,6 +55,7 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdView; +import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; @@ -297,7 +298,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme } @Override - public void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) { + public void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) { DialogAskLineaProdView.newInstance(onComplete, onAbort) .show(getParentFragmentManager(), DialogAskLineaProdView.class.getName()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index e7692971..b4a5cbf9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -55,6 +55,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString; 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.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; public class PickingLiberoViewModel { @@ -324,17 +325,18 @@ public class PickingLiberoViewModel { private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) { if (this.mFlagAskLineaProd) { - this.sendLULineaProdRequired(codJfas -> { - createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, codJfas, onComplete); - }, () -> { + this.sendLULineaProdRequired(response -> { + createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete); + }, () -> { + this.sendOnLoadingEnded(); }); } else { - createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, onComplete); + createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, null, onComplete); } } - private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Runnable onComplete) { + private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, Runnable onComplete) { this.sendOnLoadingStarted(); @@ -342,6 +344,7 @@ public class PickingLiberoViewModel { .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) .setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO) + .setIdLotto(idLotto) .setOrderRequired(mFlagAskLineaProd); if (customNumCollo != null) { @@ -948,7 +951,7 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort); } - private void sendLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) { + private void sendLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) { if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort); } @@ -1008,7 +1011,7 @@ public class PickingLiberoViewModel { void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort); - void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort); + void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort); void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdModule.java index 2abc462d..2458266c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdModule.java @@ -2,13 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.ask_linea_prod; import dagger.Module; import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; @Module(subcomponents = DialogAskLineaProdComponent.class) public class DialogAskLineaProdModule { @Provides - DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel() { - return new DialogAskLineaProdViewModel(); + DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + return new DialogAskLineaProdViewModel(barcodeRESTConsumer); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdView.java index 91d2885b..2b0709b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdView.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdView.java @@ -21,13 +21,14 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.databinding.DialogAskLineaProdBinding; +import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; public class DialogAskLineaProdView extends BaseDialogFragment implements DialogAskLineaProdViewModel.Listener { @Inject DialogAskLineaProdViewModel mViewModel; - private final RunnableArgs onComplete; + private final RunnableArgs onComplete; private final Runnable onAbort; private DialogAskLineaProdBinding mBindings; @@ -37,11 +38,11 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog private int mBarcodeScannerIstanceID; //Pass here all external parameters - public static DialogAskLineaProdView newInstance(RunnableArgs onComplete, Runnable onAbort) { + public static DialogAskLineaProdView newInstance(RunnableArgs onComplete, Runnable onAbort) { return new DialogAskLineaProdView(onComplete, onAbort); } - private DialogAskLineaProdView(RunnableArgs onComplete, Runnable onAbort) { + private DialogAskLineaProdView(RunnableArgs onComplete, Runnable onAbort) { super(); this.onComplete = onComplete; this.onAbort = onAbort; @@ -101,8 +102,8 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog }; @Override - public void onProductionLineSelected(String codJfas) { - this.onComplete.run(codJfas); + public void onProductionLineSelected(DialogAskLineaProdResponse response) { + this.onComplete.run(response); requireActivity().runOnUiThread(this::dismiss); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdViewModel.java index c7510621..2c518cd1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdViewModel.java @@ -1,37 +1,86 @@ package it.integry.integrywmsnative.view.dialogs.ask_linea_prod; +import javax.inject.Inject; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.InvalidLineaProdBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityPosizione; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; public class DialogAskLineaProdViewModel { private Listener mListener; + private final BarcodeRESTConsumer barcodeRESTConsumer; + + @Inject + public DialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + this.barcodeRESTConsumer = barcodeRESTConsumer; + } + + public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) { - if (UtilityBarcode.isEtichettaPosizione(data)) { - - MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue()); - - if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) { - this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue())); - onComplete.run(); - return; - } - - onComplete.run(); - this.sendOnProductionLineSelected(foundPosizione.getPosizione()); - + if (UtilityBarcode.isEtichetta128(data)) { + this.executeEtichettaEan128(data, onComplete); + } else if (UtilityBarcode.isEtichettaPosizione(data)) { + executeEtichettaPosizione(data, onComplete); } else { this.sendError(new NoResultFromBarcodeException()); onComplete.run(); } } + private void executeEtichettaEan128(BarcodeScanDTO data, Runnable onComplete) { + this.barcodeRESTConsumer.decodeEan128(data, ean128Model -> { + + if (UtilityString.isNullOrEmpty(ean128Model.Internal2)) { + this.sendError(new InvalidLineaProdBarcodeException("Id lotto non presente")); + onComplete.run(); + return; + } + + if (UtilityString.isNullOrEmpty(ean128Model.Internal3)) { + this.sendError(new InvalidLineaProdBarcodeException("Fase non presente")); + onComplete.run(); + return; + } + + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(ean128Model.Internal3); + + if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) { + this.sendError(new InvalidLineaProdBarcodeException(ean128Model.Internal3)); + onComplete.run(); + return; + } + + onComplete.run(); + this.sendOnProductionLineSelected( + new DialogAskLineaProdResponse(foundPosizione.getPosizione(), Integer.parseInt(ean128Model.Internal2))); + + + }, this::sendError); + } + + private void executeEtichettaPosizione(BarcodeScanDTO data, Runnable onComplete) { + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue()); + + if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) { + this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue())); + onComplete.run(); + return; + } + + onComplete.run(); + this.sendOnProductionLineSelected(new DialogAskLineaProdResponse(foundPosizione.getPosizione(), null)); + } + + public DialogAskLineaProdViewModel setListener(Listener listener) { this.mListener = listener; return this; @@ -45,8 +94,8 @@ public class DialogAskLineaProdViewModel { if (this.mListener != null) mListener.onLoadingEnded(); } - private void sendOnProductionLineSelected(String codJfas) { - if (this.mListener != null) mListener.onProductionLineSelected(codJfas); + private void sendOnProductionLineSelected(DialogAskLineaProdResponse response) { + if (this.mListener != null) mListener.onProductionLineSelected(response); } private void sendError(Exception ex) { @@ -55,6 +104,7 @@ public class DialogAskLineaProdViewModel { public interface Listener extends ILoadingListener { void onError(Exception ex); - void onProductionLineSelected(String codJfas); + + void onProductionLineSelected(DialogAskLineaProdResponse response); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/dto/DialogAskLineaProdResponse.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/dto/DialogAskLineaProdResponse.java new file mode 100644 index 00000000..4bb3585d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/dto/DialogAskLineaProdResponse.java @@ -0,0 +1,23 @@ +package it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto; + +public class DialogAskLineaProdResponse { + + + private String posizione; + private final Integer idLotto; + + + public DialogAskLineaProdResponse(String posizione, Integer idLotto) { + this.posizione = posizione; + this.idLotto = idLotto; + } + + public String getPosizione() { + return posizione; + } + + public Integer getIdLotto() { + return idLotto; + } + +} diff --git a/app/src/main/res/layout/dialog_ask_linea_prod.xml b/app/src/main/res/layout/dialog_ask_linea_prod.xml index 395ddf90..cdb4f090 100644 --- a/app/src/main/res/layout/dialog_ask_linea_prod.xml +++ b/app/src/main/res/layout/dialog_ask_linea_prod.xml @@ -42,11 +42,12 @@ - + android:layout_height="wrap_content" + android:indeterminate="true"/>