Cambiata lettura barcode in Versamento su Ordine

This commit is contained in:
Giuseppe Scorrano 2024-04-24 19:46:11 +02:00
parent d4c7cdf400
commit 392dd18338
9 changed files with 126 additions and 37 deletions

View File

@ -328,13 +328,13 @@ public class Ean128Model {
public String InternalPart; public String InternalPart;
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal1; public String Internal1; //Cod-Mart
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal2; public String Internal2; //IDLotto
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal3; public String Internal3; //Cod-Jfas
///<summary>Informazioni interne</summary> ///<summary>Informazioni interne</summary>
public String Internal4; public String Internal4;

View File

@ -14,6 +14,7 @@ public class CreateUDSRequestDTO {
private String codAnag; private String codAnag;
private String codVdes; private String codVdes;
private String rifOrd; private String rifOrd;
private Integer idLotto;
private boolean orderRequired; private boolean orderRequired;
private List<CreateUDSRequestOrderDTO> orders; private List<CreateUDSRequestOrderDTO> orders;
@ -125,6 +126,14 @@ public class CreateUDSRequestDTO {
return this; return this;
} }
public Integer getIdLotto() {
return idLotto;
}
public CreateUDSRequestDTO setIdLotto(Integer idLotto) {
this.idLotto = idLotto;
return this;
}
public static class Causale { public static class Causale {

View File

@ -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.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; 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.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.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
@ -297,7 +298,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
} }
@Override @Override
public void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) { public void onLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
DialogAskLineaProdView.newInstance(onComplete, onAbort) DialogAskLineaProdView.newInstance(onComplete, onAbort)
.show(getParentFragmentManager(), DialogAskLineaProdView.class.getName()); .show(getParentFragmentManager(), DialogAskLineaProdView.class.getName());
} }

View File

@ -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.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse;
public class PickingLiberoViewModel { public class PickingLiberoViewModel {
@ -324,17 +325,18 @@ public class PickingLiberoViewModel {
private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) { private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) {
if (this.mFlagAskLineaProd) { if (this.mFlagAskLineaProd) {
this.sendLULineaProdRequired(codJfas -> { this.sendLULineaProdRequired(response -> {
createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, codJfas, onComplete); createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete);
}, () -> {
}, () -> {
this.sendOnLoadingEnded();
}); });
} else { } 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(); this.sendOnLoadingStarted();
@ -342,6 +344,7 @@ public class PickingLiberoViewModel {
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
.setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO) .setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
.setIdLotto(idLotto)
.setOrderRequired(mFlagAskLineaProd); .setOrderRequired(mFlagAskLineaProd);
if (customNumCollo != null) { if (customNumCollo != null) {
@ -948,7 +951,7 @@ public class PickingLiberoViewModel {
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort); if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
} }
private void sendLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort) { private void sendLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort); if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort);
} }
@ -1008,7 +1011,7 @@ public class PickingLiberoViewModel {
void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort); void onLUClienteRequired(RunnableArgss<VtbDest, String> onComplete, Runnable onAbort);
void onLULineaProdRequired(RunnableArgs<String> onComplete, Runnable onAbort); void onLULineaProdRequired(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort);
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort); void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, MtbAart mtbAart, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);

View File

@ -2,13 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@Module(subcomponents = DialogAskLineaProdComponent.class) @Module(subcomponents = DialogAskLineaProdComponent.class)
public class DialogAskLineaProdModule { public class DialogAskLineaProdModule {
@Provides @Provides
DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel() { DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
return new DialogAskLineaProdViewModel(); return new DialogAskLineaProdViewModel(barcodeRESTConsumer);
} }
} }

View File

@ -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.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.databinding.DialogAskLineaProdBinding; 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 { public class DialogAskLineaProdView extends BaseDialogFragment implements DialogAskLineaProdViewModel.Listener {
@Inject @Inject
DialogAskLineaProdViewModel mViewModel; DialogAskLineaProdViewModel mViewModel;
private final RunnableArgs<String> onComplete; private final RunnableArgs<DialogAskLineaProdResponse> onComplete;
private final Runnable onAbort; private final Runnable onAbort;
private DialogAskLineaProdBinding mBindings; private DialogAskLineaProdBinding mBindings;
@ -37,11 +38,11 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog
private int mBarcodeScannerIstanceID; private int mBarcodeScannerIstanceID;
//Pass here all external parameters //Pass here all external parameters
public static DialogAskLineaProdView newInstance(RunnableArgs<String> onComplete, Runnable onAbort) { public static DialogAskLineaProdView newInstance(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
return new DialogAskLineaProdView(onComplete, onAbort); return new DialogAskLineaProdView(onComplete, onAbort);
} }
private DialogAskLineaProdView(RunnableArgs<String> onComplete, Runnable onAbort) { private DialogAskLineaProdView(RunnableArgs<DialogAskLineaProdResponse> onComplete, Runnable onAbort) {
super(); super();
this.onComplete = onComplete; this.onComplete = onComplete;
this.onAbort = onAbort; this.onAbort = onAbort;
@ -101,8 +102,8 @@ public class DialogAskLineaProdView extends BaseDialogFragment implements Dialog
}; };
@Override @Override
public void onProductionLineSelected(String codJfas) { public void onProductionLineSelected(DialogAskLineaProdResponse response) {
this.onComplete.run(codJfas); this.onComplete.run(response);
requireActivity().runOnUiThread(this::dismiss); requireActivity().runOnUiThread(this::dismiss);
} }

View File

@ -1,37 +1,86 @@
package it.integry.integrywmsnative.view.dialogs.ask_linea_prod; 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.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLineaProdBarcodeException; import it.integry.integrywmsnative.core.exception.InvalidLineaProdBarcodeException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; 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.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityPosizione; 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 { public class DialogAskLineaProdViewModel {
private Listener mListener; private Listener mListener;
private final BarcodeRESTConsumer barcodeRESTConsumer;
@Inject
public DialogAskLineaProdViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.barcodeRESTConsumer = barcodeRESTConsumer;
}
public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) {
if (UtilityBarcode.isEtichettaPosizione(data)) { if (UtilityBarcode.isEtichetta128(data)) {
this.executeEtichettaEan128(data, onComplete);
MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue()); } else if (UtilityBarcode.isEtichettaPosizione(data)) {
executeEtichettaPosizione(data, onComplete);
if (foundPosizione == null || !foundPosizione.isFlagLineaProduzione()) {
this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue()));
onComplete.run();
return;
}
onComplete.run();
this.sendOnProductionLineSelected(foundPosizione.getPosizione());
} else { } else {
this.sendError(new NoResultFromBarcodeException()); this.sendError(new NoResultFromBarcodeException());
onComplete.run(); 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) { public DialogAskLineaProdViewModel setListener(Listener listener) {
this.mListener = listener; this.mListener = listener;
return this; return this;
@ -45,8 +94,8 @@ public class DialogAskLineaProdViewModel {
if (this.mListener != null) mListener.onLoadingEnded(); if (this.mListener != null) mListener.onLoadingEnded();
} }
private void sendOnProductionLineSelected(String codJfas) { private void sendOnProductionLineSelected(DialogAskLineaProdResponse response) {
if (this.mListener != null) mListener.onProductionLineSelected(codJfas); if (this.mListener != null) mListener.onProductionLineSelected(response);
} }
private void sendError(Exception ex) { private void sendError(Exception ex) {
@ -55,6 +104,7 @@ public class DialogAskLineaProdViewModel {
public interface Listener extends ILoadingListener { public interface Listener extends ILoadingListener {
void onError(Exception ex); void onError(Exception ex);
void onProductionLineSelected(String codJfas);
void onProductionLineSelected(DialogAskLineaProdResponse response);
} }
} }

View File

@ -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;
}
}

View File

@ -42,11 +42,12 @@
<ProgressBar <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progressBar" android:id="@+id/progressBar"
style="?android:attr/progressBarStyle" style="?attr/circularProgressIndicatorStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"
android:indeterminate="true"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"