diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index e1111263..0aa33da3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -256,14 +256,19 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia }; public void save() { + this.onLoadingStarted(); + this.mViewModel.validate(validated -> { - if (validated) { - this.mAbort = false; - dismiss(); - this.mOnComplete.run(this.mViewModel.getResult(), false); - }else { + + requireActivity().runOnUiThread(() -> { this.onLoadingEnded(); - } + + if (validated) { + this.mAbort = false; + dismiss(); + this.mOnComplete.run(this.mViewModel.getResult(), false); + } + }); }); } @@ -273,7 +278,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mAbort = false; dismiss(); this.mOnComplete.run(this.mViewModel.getResult(), true); - }else { + } else { this.onLoadingEnded(); } }); @@ -527,13 +532,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mEnableDataCallback = true; } - @Override - public void onError(Exception ex) { - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) - .show(requireActivity().getSupportFragmentManager(), "tag"); - } - @Override public void onWarning(String text, RunnableArgs result) { DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 95bfd39e..39f78cb1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -99,7 +99,6 @@ public class DialogInputQuantityV2ViewModel { private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; private StatoPartitaMag statoArt; - private MtbPartitaMag mtbPartitaMag; @Inject public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { @@ -488,7 +487,7 @@ public class DialogInputQuantityV2ViewModel { new Thread(() -> { if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { - this.mListener.onError(new InvalidQtaCnfQuantityException()); + this.sendError(new InvalidQtaCnfQuantityException()); onValidated.run(false); return; } @@ -497,33 +496,33 @@ public class DialogInputQuantityV2ViewModel { if (suggestPartitaMagRunnable != null) { internalPartitaMag = suggestPartitaMagRunnable.run(this); if (internalPartitaMag == null) { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } } else { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } } if (this.statoArt == StatoPartitaMag.DISATTIVO) { - this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); + this.sendError(new InactiveBatchLotException(internalPartitaMag)); onValidated.run(false); return; } if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { - this.mListener.onError(new InvalidBatchLotException()); + this.sendError(new InvalidBatchLotException()); onValidated.run(false); return; } if (this.shouldAskDataScad && this.internalDataScad == null) { - this.mListener.onError(new InvalidExpireDateException()); + this.sendError(new InvalidExpireDateException()); onValidated.run(false); return; } @@ -531,7 +530,7 @@ public class DialogInputQuantityV2ViewModel { if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); + this.sendError(new OverflowQtaTotOrderedQuantityException()); onValidated.run(false); return; } @@ -539,14 +538,14 @@ public class DialogInputQuantityV2ViewModel { if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); + this.sendError(new OverflowNumCnfOrderedQuantityException()); onValidated.run(false); return; } if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { - this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); + this.sendError(new OverflowQtaTotAvailableQuantityException()); onValidated.run(false); return; } @@ -554,7 +553,7 @@ public class DialogInputQuantityV2ViewModel { if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); + this.sendError(new OverflowNumCnfAvailableQuantityException()); onValidated.run(false); return; } @@ -564,13 +563,13 @@ public class DialogInputQuantityV2ViewModel { UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { - this.mListener.onError(new InvalidQuantityException()); + this.sendError(new InvalidQuantityException()); onValidated.run(false); return; } if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { - this.mListener.onError(new InvalidNotesException()); + this.sendError(new InvalidNotesException()); onValidated.run(false); return; } @@ -579,10 +578,17 @@ public class DialogInputQuantityV2ViewModel { this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) { - asyncMagazzinoRESTConsumer(internalPartitaMag, this.getMtbAart().getCodMart()); + MtbPartitaMag mtbPartitaMag = null; + try { + mtbPartitaMag = retrievePartitaMag(internalPartitaMag, this.getMtbAart().getCodMart()); + } catch (Exception e) { + this.sendError(e); + onValidated.run(false); + return; + } if (mtbPartitaMag == null) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); if (!result) { onValidated.run(false); return; @@ -593,7 +599,7 @@ public class DialogInputQuantityV2ViewModel { if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_quantity_overflow_error_message)); if (!result) { onValidated.run(false); return; @@ -603,7 +609,7 @@ public class DialogInputQuantityV2ViewModel { if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message)); + boolean result = runWarningDialogSyncronized(UtilityResources.getString(R.string.confirm_ordered_num_cnf_overflow_error_message)); if (!result) { onValidated.run(false); return; @@ -614,7 +620,7 @@ public class DialogInputQuantityV2ViewModel { }).start(); } - private boolean runAsyncWarningDialog(String text) { + private boolean runWarningDialogSyncronized(String text) { try { final FutureTask ft = new FutureTask<>(() -> { }, new Object()); @@ -632,26 +638,9 @@ public class DialogInputQuantityV2ViewModel { } } - private void asyncMagazzinoRESTConsumer(String partitaMag, String codMart) { - try { - final FutureTask ft = new FutureTask<>(() -> { - }, new Object()); - mMagazzinoRESTConsumer.retrievePartitaMag( - partitaMag, - codMart, - returnPartitaMag -> { - mtbPartitaMag = returnPartitaMag; - ft.run(); - }, - e -> { - this.sendError(e); - ft.run(); - }); + private MtbPartitaMag retrievePartitaMag(String partitaMag, String codMart) throws Exception { + return mMagazzinoRESTConsumer.retrievePartitaMagSyncronized(partitaMag, codMart, this::sendError); - ft.get(); - } catch (Exception e) { - this.sendError(e); - } } public DialogInputQuantityV2ResultDTO getResult() {