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"/>