diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 00000000..0c0c3383
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
index 8a6af995..1e5fcc52 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
@@ -104,6 +104,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
+import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
+import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
@@ -197,7 +199,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogAskUnknownBarcodeNotesModule.class,
ProdVersamentoMaterialeInBufferModule.class,
DialogInputQuantityToReturnModule.class,
- DialogInfoAggiuntiveLUModule.class
+ DialogInfoAggiuntiveLUModule.class,
+ DialogAskLineaProdModule.class
})
public interface MainApplicationComponent {
@@ -331,6 +334,8 @@ public interface MainApplicationComponent {
DialogInfoAggiuntiveLUComponent.Factory dialogInfoAggiuntiveLUComponent();
+ DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();
+
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
index 58e09611..70526fa5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoFragment;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
@@ -85,7 +86,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
- .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
@@ -121,7 +122,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
- .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
+ .setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false)))
.addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord)
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLineaProdBarcodeException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLineaProdBarcodeException.java
new file mode 100644
index 00000000..8cf33588
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidLineaProdBarcodeException.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public class InvalidLineaProdBarcodeException extends Exception {
+
+ public InvalidLineaProdBarcodeException() {
+ super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode));
+ }
+
+ public InvalidLineaProdBarcodeException(String barcode) {
+ super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode) + " (" + barcode + ")");
+ }
+}
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 d53a312e..f960809a 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
@@ -10,7 +10,11 @@ public class CreateUDSRequestDTO {
private Integer numCollo;
private String serCollo;
private int causaleCollo;
-
+ private String codJfas;
+ private String codAnag;
+ private String codVdes;
+ private String rifOrd;
+ private boolean orderRequired;
private List orders;
public String getCodMdep() {
@@ -67,6 +71,51 @@ public class CreateUDSRequestDTO {
return this;
}
+ public String getCodJfas() {
+ return codJfas;
+ }
+
+ public CreateUDSRequestDTO setCodJfas(String codJfas) {
+ this.codJfas = codJfas;
+ return this;
+ }
+
+ public String getCodAnag() {
+ return codAnag;
+ }
+
+ public CreateUDSRequestDTO setCodAnag(String codAnag) {
+ this.codAnag = codAnag;
+ return this;
+ }
+
+ public String getCodVdes() {
+ return codVdes;
+ }
+
+ public CreateUDSRequestDTO setCodVdes(String codVdes) {
+ this.codVdes = codVdes;
+ return this;
+ }
+
+ public String getRifOrd() {
+ return rifOrd;
+ }
+
+ public CreateUDSRequestDTO setRifOrd(String rifOrd) {
+ this.rifOrd = rifOrd;
+ return this;
+ }
+
+ public boolean isOrderRequired() {
+ return orderRequired;
+ }
+
+ public CreateUDSRequestDTO setOrderRequired(boolean orderRequired) {
+ this.orderRequired = orderRequired;
+ return this;
+ }
+
public List getOrders() {
return orders;
}
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 2f1e5ded..b9007129 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
@@ -42,7 +42,6 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
-import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding;
@@ -54,6 +53,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar;
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.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrList;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
@@ -86,16 +86,20 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
private int barcodeScannerIstanceID = -1;
private GestioneEnum mCurrentGestione;
+ private boolean mAskCliente;
+ private boolean mAskLineaProd;
public PickingLiberoFragment() {
// Required empty public constructor
}
- public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum) {
+ public static PickingLiberoFragment newInstance(GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) {
PickingLiberoFragment fragment = new PickingLiberoFragment();
Bundle args = new Bundle();
args.putString("gestione", gestioneEnum.getText());
+ args.putBoolean("askCliente", askCliente);
+ args.putBoolean("askLineaProd", askLineaProd);
fragment.setArguments(args);
return fragment;
@@ -113,6 +117,8 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
setRetainInstance(true);
mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione"));
+ mAskCliente = getArguments().getBoolean("askCliente");
+ mAskLineaProd = getArguments().getBoolean("askLineaProd");
}
@@ -139,8 +145,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
this.initRecyclerView();
- boolean flagAskCliente = SettingsManager.iDB().isFlagAskClienteInPickingLibero();
- mViewModel.init(flagAskCliente, mCurrentGestione);
+ mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione);
return mBindings.getRoot();
}
@@ -263,7 +268,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
null,
() -> onComplete.run(true),
() -> onComplete.run(false)
- ).show(requireActivity().getSupportFragmentManager(), "tag");
+ ).show(requireActivity().getSupportFragmentManager(), DialogSimpleMessageView.class.getName());
}
@Override
@@ -284,7 +289,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
@Override
public void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort) {
DialogAskClienteView.newInstance(onComplete, onAbort)
- .show(requireActivity().getSupportFragmentManager(), "tag");
+ .show(requireActivity().getSupportFragmentManager(), DialogAskClienteView.class.getName());
+ }
+
+ @Override
+ public void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) {
+ DialogAskLineaProdView.newInstance(onComplete, onAbort)
+ .show(getParentFragmentManager(), DialogAskLineaProdView.class.getName());
}
@Override
@@ -294,7 +305,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
onAbort.run();
BarcodeManager.enable();
})
- .show(requireActivity().getSupportFragmentManager(), "tag");
+ .show(requireActivity().getSupportFragmentManager(), DialogChooseArtsFromMtbColrList.class.getName());
}
@Override
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
index 16da74c6..ebcd498d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoModule.java
@@ -6,7 +6,9 @@ import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@@ -21,8 +23,17 @@ public class PickingLiberoModule {
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer,
- MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer
+ MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer,
+ ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
+ ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer
) {
- return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer, giacenzaRESTConsumer, magazzinoAutomaticoRESTConsumer);
+ return new PickingLiberoViewModel(articoloRESTConsumer,
+ colliMagazzinoRESTConsumer,
+ barcodeRESTConsumer,
+ posizioniRESTConsumer,
+ giacenzaRESTConsumer,
+ magazzinoAutomaticoRESTConsumer,
+ colliLavorazioneRESTConsumer,
+ colliSpedizioneRESTConsumer);
}
}
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 56132e10..6d727dbb 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
@@ -32,14 +32,18 @@ import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO;
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO;
+import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO;
import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
@@ -63,8 +67,12 @@ public class PickingLiberoViewModel {
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
private final MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer;
+ private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer;
+ private final ColliLavorazioneRESTConsumer mColliLavorazioneRESTConsumer;
+ private final ColliSpedizioneRESTConsumer mColliSpedizioneRESTConsumer;
private boolean mFlagAskCliente;
+ private boolean mFlagAskLineaProd;
private GestioneEnum mDefaultGestione;
@@ -77,19 +85,30 @@ public class PickingLiberoViewModel {
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer,
GiacenzaRESTConsumer giacenzaRESTConsumer,
- MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer) {
+ MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer,
+ ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer,
+ ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer;
+ this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer;
+ this.mColliSpedizioneRESTConsumer = colliSpedizioneRESTConsumer;
}
- public void init(boolean flagAskCliente, GestioneEnum defaultGestione) {
+ public void init(boolean flagAskCliente, boolean flagAskLineaProd, GestioneEnum defaultGestione) {
this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente;
+ this.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd;
this.mDefaultGestione = defaultGestione;
+
+
+ switch (mDefaultGestione) {
+ case LAVORAZIONE -> this.mColliScaricoRESTConsumer = mColliLavorazioneRESTConsumer;
+ case VENDITA -> this.mColliScaricoRESTConsumer = mColliSpedizioneRESTConsumer;
+ }
}
@@ -279,46 +298,57 @@ public class PickingLiberoViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
if (this.mFlagAskCliente) {
this.sendLUClienteRequired((vtbDest, codJcom) -> {
- createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, codJcom, onComplete);
+ createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete);
}, () -> {
});
} else {
- createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, null, onComplete);
+ createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete);
}
}
- private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJcom, Runnable onComplete) {
+ 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);
+ }, () -> {
+
+ });
+ } else {
+ createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, onComplete);
+ }
+ }
+
+ private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Runnable onComplete) {
+
this.sendOnLoadingStarted();
- MtbColt mtbColt = new MtbColt();
- mtbColt.initDefaultFields(mDefaultGestione)
+ var createUDSRequest = new CreateUDSRequestDTO()
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
-// .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag())
- .setSegno(-1)
- .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+ .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
+ .setCausaleCollo(CreateUDSRequestDTO.Causale.SCARICO)
+ .setOrderRequired(mFlagAskLineaProd);
if (customNumCollo != null) {
- mtbColt.setNumCollo(customNumCollo);
+ createUDSRequest.setNumCollo(customNumCollo);
}
if (!UtilityString.isNullOrEmpty(customSerCollo)) {
- mtbColt.setSerCollo(customSerCollo);
+ createUDSRequest.setSerCollo(customSerCollo);
+ }
+
+ if (!UtilityString.isNullOrEmpty(codJfas)) {
+ createUDSRequest.setCodJfas(codJfas);
}
if (vtbDest != null) {
- mtbColt.setCodAnag(vtbDest.getCodAnag());
- mtbColt.setCodVdes(vtbDest.getCodVdes());
+ createUDSRequest.setCodAnag(vtbDest.getCodAnag());
+ createUDSRequest.setCodVdes(vtbDest.getCodVdes());
}
- if (!UtilityString.isNullOrEmpty(codJcom)) {
- mtbColt.setCodJcom(codJcom);
- }
- mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
+ mColliScaricoRESTConsumer.createUDS(createUDSRequest, mtbColt -> {
mtbColt
- .setNumCollo(value.getNumCollo())
- .setDataCollo(value.getDataColloS())
.setMtbColr(new ObservableArrayList<>());
this.mCurrentMtbColt = mtbColt;
@@ -328,6 +358,43 @@ public class PickingLiberoViewModel {
if (onComplete != null) onComplete.run();
this.sendLUOpened(mtbColt);
}, this::sendError);
+
+// MtbColt mtbColt = new MtbColt();
+// mtbColt.initDefaultFields(mDefaultGestione)
+// .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
+// .setSegno(-1)
+// .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
+//
+// if (customNumCollo != null) {
+// mtbColt.setNumCollo(customNumCollo);
+// }
+//
+// if (!UtilityString.isNullOrEmpty(customSerCollo)) {
+// mtbColt.setSerCollo(customSerCollo);
+// }
+//
+// if (vtbDest != null) {
+// mtbColt.setCodAnag(vtbDest.getCodAnag());
+// mtbColt.setCodVdes(vtbDest.getCodVdes());
+// }
+//
+// if (!UtilityString.isNullOrEmpty(codJcom)) {
+// mtbColt.setCodJcom(codJcom);
+// }
+
+// mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> {
+// mtbColt
+// .setNumCollo(value.getNumCollo())
+// .setDataCollo(value.getDataColloS())
+// .setMtbColr(new ObservableArrayList<>());
+//
+// this.mCurrentMtbColt = mtbColt;
+//
+// this.sendOnLoadingEnded();
+//
+// if (onComplete != null) onComplete.run();
+// this.sendLUOpened(mtbColt);
+// }, this::sendError);
}
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model) {
@@ -868,6 +935,10 @@ public class PickingLiberoViewModel {
if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort);
}
+ private void sendLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort) {
+ if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort);
+ }
+
private void sendArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) {
if (this.mListener != null)
mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort);
@@ -924,6 +995,8 @@ public class PickingLiberoViewModel {
void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort);
+ void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort);
+
void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort);
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdComponent.java
new file mode 100644
index 00000000..7eae3554
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface DialogAskLineaProdComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ DialogAskLineaProdComponent create();
+ }
+
+ void inject(DialogAskLineaProdView dialogAskLineaProdView);
+}
\ No newline at end of file
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
new file mode 100644
index 00000000..2abc462d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdModule.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = DialogAskLineaProdComponent.class)
+public class DialogAskLineaProdModule {
+
+ @Provides
+ DialogAskLineaProdViewModel providesDialogAskLineaProdViewModel() {
+ return new DialogAskLineaProdViewModel();
+ }
+
+}
\ 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
new file mode 100644
index 00000000..fba4bf1a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdView.java
@@ -0,0 +1,107 @@
+package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
+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.BaseDialogFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.databinding.DialogAskLineaProdBinding;
+
+public class DialogAskLineaProdView extends BaseDialogFragment implements DialogAskLineaProdViewModel.Listener {
+
+ @Inject
+ DialogAskLineaProdViewModel mViewModel;
+
+ private final RunnableArgs onComplete;
+ private final Runnable onAbort;
+
+ private DialogAskLineaProdBinding mBindings;
+ private Context mContext;
+
+
+ private int mBarcodeScannerIstanceID;
+
+ //Pass here all external parameters
+ public static DialogAskLineaProdView newInstance(RunnableArgs onComplete, Runnable onAbort) {
+ return new DialogAskLineaProdView(onComplete, onAbort);
+ }
+
+ private DialogAskLineaProdView(RunnableArgs onComplete, Runnable onAbort) {
+ super();
+ this.onComplete = onComplete;
+ this.onAbort = onAbort;
+ }
+
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ this.mContext = requireContext();
+
+ mBindings = DialogAskLineaProdBinding.inflate(LayoutInflater.from(this.mContext), null, false);
+ mBindings.setLifecycleOwner(this);
+
+ MainApplication.appComponent
+ .dialogAskLineaProdComponent()
+ .create()
+ .inject(this);
+
+ mViewModel.setListener(this);
+
+ setCancelable(true);
+
+ var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
+ .setView(mBindings.getRoot())
+ .setCancelable(isCancelable())
+ .setNegativeButton(R.string.abort, (dialogInterface, i) -> {
+ if(this.onAbort != null) this.onAbort.run();
+ })
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(isCancelable());
+ alertDialog.setOnShowListener(this);
+ return alertDialog;
+ }
+
+
+ @Override
+ public void onShow(DialogInterface dialogInterface) {
+ super.onShow(dialogInterface);
+
+ this.initBarcode();
+ }
+
+ private void initBarcode() {
+ mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessful(onScanSuccessful)
+ .setOnScanFailed(this::onError));
+
+ BarcodeManager.enable();
+ }
+
+ private final RunnableArgs onScanSuccessful = data -> {
+ BarcodeManager.disable();
+ this.mViewModel.processBarcodeDTO(data, BarcodeManager::enable);
+ };
+
+ @Override
+ public void onProductionLineSelected(String codJfas) {
+ this.onComplete.run(codJfas);
+ dismiss();
+ }
+}
\ No newline at end of file
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
new file mode 100644
index 00000000..d19bf5b0
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_linea_prod/DialogAskLineaProdViewModel.java
@@ -0,0 +1,60 @@
+package it.integry.integrywmsnative.view.dialogs.ask_linea_prod;
+
+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.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityPosizione;
+
+public class DialogAskLineaProdViewModel {
+
+ private Listener mListener;
+
+ public void processBarcodeDTO(BarcodeScanDTO data, Runnable onComplete) {
+ if (UtilityBarcode.isEtichettaPosizione(data)) {
+
+ MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(data.getStringValue());
+
+ if (!foundPosizione.isFlagLineaProduzione()) {
+ this.sendError(new InvalidLineaProdBarcodeException(data.getStringValue()));
+ onComplete.run();
+ return;
+ }
+
+ onComplete.run();
+ this.sendOnProductionLineSelected(foundPosizione.getPosizione());
+
+ } else {
+ this.sendError(new NoResultFromBarcodeException());
+ onComplete.run();
+ }
+ }
+
+ public DialogAskLineaProdViewModel setListener(Listener listener) {
+ this.mListener = listener;
+ return this;
+ }
+
+ private void sendOnLoadingStarted() {
+ if (this.mListener != null) mListener.onLoadingStarted();
+ }
+
+ private void sendOnLoadingEnded() {
+ if (this.mListener != null) mListener.onLoadingEnded();
+ }
+
+ private void sendOnProductionLineSelected(String codJfas) {
+ if (this.mListener != null) mListener.onProductionLineSelected(codJfas);
+ }
+
+ private void sendError(Exception ex) {
+ if (this.mListener != null) mListener.onError(ex);
+ }
+
+ public interface Listener extends ILoadingListener {
+ void onError(Exception ex);
+ void onProductionLineSelected(String codJfas);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_ask_linea_prod.xml b/app/src/main/res/layout/dialog_ask_linea_prod.xml
new file mode 100644
index 00000000..395ddf90
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_linea_prod.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 69115f1e..e0c560e7 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -222,6 +222,7 @@
Il barcode scansionato non ha fornito alcun risultato
+ Il barcode scansionato non riguarda una linea di produzione
Il codice articolo non ha fornito alcun risultato
Il barcode scansionato ha fornito molteplici risultati
Nessun tipo documento selezionato
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9a964e09..4b8288d3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -227,7 +227,8 @@
No document type selected
The scanned label has already been used
- The scanned barcode did not produce any results
+ The scanned barcode does not produce any results
+ The scanned barcode does not represent any production line
The item code did not produce any results
Before continuing open new LU
The scanned barcode produced multiple results