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 c8e1d912..e262a91a 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 @@ -289,9 +289,9 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme } @Override - public void onArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort) { + public void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { DialogChooseArtsFromListaArts - .newInstance(mtbColrsToPick, onComplete, () -> { + .newInstance(mtbColrsToPick, mtbAart, onComplete, () -> { onAbort.run(); BarcodeManager.enable(); }) 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 2f6c94ec..0c5a4e7b 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 @@ -134,7 +134,7 @@ public class PickingLiberoViewModel { } } else if (mtbColtList.size() == 1) { this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { - pickMerceULtoUL(mtbColt, onComplete); + pickMerceULtoUL(mtbColt, articolo, onComplete); }, this::sendError); } else { this.sendError(new TooManyLUFoundInMonoLUPositionException()); @@ -382,13 +382,16 @@ public class PickingLiberoViewModel { }); } - private void pickMerceULtoUL(MtbColt sourceMtbColt, Runnable onComplete) { + pickMerceULtoUL(sourceMtbColt, null, onComplete); + } + + private void pickMerceULtoUL(MtbColt sourceMtbColt, MtbAart mtbAart, Runnable onComplete) { List mtbColrsToPick = Stream.of(sourceMtbColt.getMtbColr()) .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaCol(), BigDecimal.ZERO)) .toList(); - this.sendArtSelectionRequest(mtbColrsToPick, pickedAarts -> { + this.sendArtSelectionRequest(mtbColrsToPick, mtbAart, pickedAarts -> { List destNewMtbColr = new ArrayList<>(); if (pickedAarts.size() > 0) { @@ -809,9 +812,9 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onLUClienteRequired(onComplete, onAbort); } - private void sendArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort) { + private void sendArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { if (this.mListener != null) - mListener.onArtSelectionRequest(mtbColrsToPick, onComplete, onAbort); + mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort); } private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, @@ -865,7 +868,7 @@ public class PickingLiberoViewModel { void onLUClienteRequired(RunnableArgss onComplete, Runnable onAbort); - void onArtSelectionRequest(List mtbColrsToPick, RunnableArgs> onComplete, Runnable onAbort); + void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort); void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, 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 16d00ccc..0c472d2f 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 @@ -62,11 +62,23 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final List mDataset; private int mBarcodeScannerIstanceID; + private Dialog mCurrentProgress; + private MtbAart selectedArt; public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { return new DialogChooseArtsFromListaArts(listaMtbColr, onItemsChoosed, onAbort); } + public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, MtbAart mtbAart, RunnableArgs> onItemsChoosed, Runnable onAbort) { + DialogChooseArtsFromListaArts dialog = newInstance(listaMtbColr, onItemsChoosed, onAbort); + dialog.setSelectedArt(mtbAart); + return dialog; + } + + public void setSelectedArt(MtbAart mtbAart) { + this.selectedArt = mtbAart; + } + private DialogChooseArtsFromListaArts(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { super(); @@ -125,6 +137,14 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { return mBindings.getRoot(); } + @Override + public void onStart() { + super.onStart(); + + if (selectedArt != null) { + this.loadArticolo(selectedArt.getBarCode(), null); + } + } private void initRecyclerView() { mBindings.listaArts.setNestedScrollingEnabled(false); @@ -229,8 +249,6 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { } - - @Override public void onDismiss(@NonNull DialogInterface dialog) { BarcodeManager.removeCallback(mBarcodeScannerIstanceID); @@ -242,14 +260,15 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(context); + openProgress(); + if (UtilityBarcode.isEan13(data)) { - this.loadArticolo(data.getStringValue(), null, progressDialog); + this.loadArticolo(data.getStringValue(), null); } else if (UtilityBarcode.isEtichetta128(data)) { - this.executeEtichettaEan128(data, progressDialog); + this.executeEtichettaEan128(data); } else { - progressDialog.dismiss(); + closeProgress(); BarcodeManager.enable(); } @@ -257,7 +276,7 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { }; - private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO) { this.barcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { String barcodeProd = null; @@ -271,11 +290,11 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { if (!UtilityString.isNullOrEmpty(barcodeProd)) { if (!UtilityString.isNullOrEmpty(ean128Model.Gtin) || !UtilityString.isNullOrEmpty(ean128Model.Content)) { - this.loadArticolo(barcodeProd, ean128Model, progressDialog); + this.loadArticolo(barcodeProd, ean128Model); } else { DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } @@ -285,18 +304,19 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { //EAN 128 non completo o comunque mancano i riferimenti al prodotto DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } }, ex -> { - UtilityExceptions.defaultException(context, ex, progressDialog); + closeProgress(); + UtilityExceptions.defaultException(context, ex); BarcodeManager.enable(); }); } - private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Dialog progressDialog) { + private void loadArticolo(String barcodeProd, Ean128Model ean128Model) { if (barcodeProd.length() == 14) { barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); } @@ -310,19 +330,20 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { this.searchArtInList(mtbAartList.get(0), ean128Model); BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); } else { DialogCommon.showNoArtFoundDialog(context, () -> { BarcodeManager.enable(); - progressDialog.dismiss(); + closeProgress(); }); } }, ex -> { + closeProgress(); BarcodeManager.enable(); - UtilityExceptions.defaultException(context, ex, progressDialog); + UtilityExceptions.defaultException(context, ex); }); } @@ -364,5 +385,20 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { this.dismiss(); } + protected void openProgress() { + requireActivity().runOnUiThread(() -> { + if (this.mCurrentProgress == null) { + this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); + } + }); + } + protected void closeProgress() { + requireActivity().runOnUiThread(() -> { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + }); + } }