From b86a1eb1bd3ff98e4e3f13c782899673a2d11916 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 12 Mar 2024 16:34:52 +0100 Subject: [PATCH] Nella sezione "rettifica giacenza" aggiunto avviso nell'inserimento di una nuova della partita per articolo --- .../rest/consumers/MagazzinoRESTConsumer.java | 19 ++ .../MagazzinoRESTConsumerService.java | 7 + .../core/settings/DBSettingsModel.java | 10 + .../core/settings/SettingsManager.java | 6 + .../RettificaGiacenzeFragment.java | 3 +- .../DialogInputQuantityV2Module.java | 5 +- .../DialogInputQuantityV2View.java | 21 +- .../DialogInputQuantityV2ViewModel.java | 281 ++++++++++++------ app/src/main/res/values-it/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + 10 files changed, 243 insertions(+), 115 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 4379a66c..687689be 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.rest.consumers; +import androidx.annotation.NonNull; + import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; @@ -10,6 +12,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.DtbOrdt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -86,4 +89,20 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { } }); } + + public void retrievePartitaMag(String partitaMag, String codMart, RunnableArgs onComplete, RunnableArgs onFailed){ + MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + service.retrievePartitaMag(codMart, partitaMag) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + analyzeAnswer(response, "retrievePartitaMag", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java index bd6b2386..f9075a85 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java @@ -3,11 +3,14 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; import it.integry.integrywmsnative.core.model.DtbOrdt; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; import retrofit2.http.Body; +import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.Query; public interface MagazzinoRESTConsumerService { @@ -17,4 +20,8 @@ public interface MagazzinoRESTConsumerService { @POST("SM2SaveTerminalino") Call>> saveOrdine(@Body SaveDTO saveDTO); + @GET("wms/partita-magazzino/retrievePartitaMag") + Call> retrievePartitaMag(@Query("codMart") String codMart, + @Query("partitaMag") String partitaMag); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 4c2eaaf7..eeabce2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -74,6 +74,7 @@ public class DBSettingsModel { private boolean flagAccettazioneAllowBarcodeFornitore = false; private boolean flagProduzioneShowInfo = false; private boolean flagAccettazioneBollaUseQtaOrd = true; + private boolean flagWarningNewPartitaMag = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -623,4 +624,13 @@ public class DBSettingsModel { public void setFlagAccettazioneBollaUseQtaOrd(boolean flagAccettazioneBollaUseQtaOrd) { this.flagAccettazioneBollaUseQtaOrd = flagAccettazioneBollaUseQtaOrd; } + + public boolean isFlagWarningNewPartitaMag() { + return flagWarningNewPartitaMag; + } + + public DBSettingsModel setFlagWarningNewPartitaMag(boolean flagWarningNewPartitaMag) { + this.flagWarningNewPartitaMag = flagWarningNewPartitaMag; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 671f69ae..edd9c725 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -511,6 +511,12 @@ public class SettingsManager { .setKeySection("FLAG_USE_QTA_ORD") .setSetter(dbSettingsModelIstance::setFlagAccettazioneBollaUseQtaOrd) .setDefaultValue(true)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SETUP") + .setKeySection("FLAG_WARNING_NEW_PARTITA_MAG") + .setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag) + .setDefaultValue(false)); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java index 0e9d29f9..9efe0e1d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java @@ -404,8 +404,7 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr String flagStato = dialogInputQuantityV2DTO.getMtbAart().getFlagStato(); if (flagStato.equalsIgnoreCase("I")) { - DialogSimpleMessageView.makeInfoDialog( - getActivity().getResources().getString(R.string.confirm), + DialogSimpleMessageView.makeWarningDialog( new SpannableString(Html.fromHtml(String.format(UtilityResources.getString(R.string.item_not_enabled), codMart))), null, () -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java index 2c3133d3..25b321db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2Module.java @@ -3,13 +3,14 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; @Module(subcomponents = DialogInputQuantityV2Component.class) public class DialogInputQuantityV2Module { @Provides - DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { - return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer); + DialogInputQuantityV2ViewModel providesDialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { + return new DialogInputQuantityV2ViewModel(barcodeRESTConsumer, magazzinoRESTConsumer); } } 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 2b4a7cc9..8fdcaecf 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 @@ -261,6 +261,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mAbort = false; dismiss(); this.mOnComplete.run(this.mViewModel.getResult(), false); + }else { + this.onLoadingEnded(); } }); } @@ -269,19 +271,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia this.mViewModel.validate(validated -> { if (validated) { this.mAbort = false; - dismiss(); + dismiss();this.onLoadingEnded(); this.mOnComplete.run(this.mViewModel.getResult(), true); + }else { + this.onLoadingEnded(); } }); } -// @Override -// public void onDismiss(@NonNull DialogInterface dialog) { -// BarcodeManager.removeCallback(mBarcodeScannerIstanceID); -// if (mAbort) this.mOnAbort.run(); -// super.onDismiss(dialog); -// } - @Override public void onStart() { super.onStart(); @@ -540,9 +537,9 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia @Override public void onWarning(String text, RunnableArgs result) { DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), - null, - () -> result.run(true), - () -> result.run(false) - ).show(requireActivity().getSupportFragmentManager(), "tag"); + null, + () -> result.run(true), + () -> result.run(false) + ).show(requireActivity().getSupportFragmentManager(), "tag"); } } 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 d5087e7f..e9916cd4 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 @@ -3,22 +3,29 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import androidx.databinding.ObservableField; import java.math.BigDecimal; -import java.math.RoundingMode; import java.time.LocalDate; +import java.util.concurrent.FutureTask; +import java.util.concurrent.atomic.AtomicBoolean; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException; @@ -89,12 +96,15 @@ public class DialogInputQuantityV2ViewModel { private Listener mListener; private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final MagazzinoRESTConsumer mMagazzinoRESTConsumer; private StatoPartitaMag statoArt; + private MtbPartitaMag mtbPartitaMag; @Inject - public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { + public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mMagazzinoRESTConsumer = magazzinoRESTConsumer; } public void init(int onNumCnfInputChanged, int onQtaTotInputChanged) { @@ -475,115 +485,175 @@ public class DialogInputQuantityV2ViewModel { } public void validate(RunnableArgs onValidated) { - if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { + this.sendOnLoadingStarted(); + new Thread(() -> { + if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) { - this.mListener.onError(new InvalidQtaCnfQuantityException()); - onValidated.run(false); - return; - } + this.mListener.onError(new InvalidQtaCnfQuantityException()); + onValidated.run(false); + return; + } - if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { - if (suggestPartitaMagRunnable != null) { - internalPartitaMag = suggestPartitaMagRunnable.run(this); - if (internalPartitaMag == null) { + if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) { + if (suggestPartitaMagRunnable != null) { + internalPartitaMag = suggestPartitaMagRunnable.run(this); + if (internalPartitaMag == null) { + this.mListener.onError(new InvalidBatchLotException()); + onValidated.run(false); + return; + } + } else { this.mListener.onError(new InvalidBatchLotException()); onValidated.run(false); return; } - } else { + } + + if (this.statoArt == StatoPartitaMag.DISATTIVO) { + this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); + onValidated.run(false); + return; + } + + if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { + this.mListener.onError(new InvalidBatchLotException()); onValidated.run(false); return; } + + if (this.shouldAskDataScad && this.internalDataScad == null) { + + this.mListener.onError(new InvalidExpireDateException()); + onValidated.run(false); + return; + } + + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && + this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); + onValidated.run(false); + return; + } + + if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && + !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); + onValidated.run(false); + return; + } + + if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { + + this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); + onValidated.run(false); + return; + } + + if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && + !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + + this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); + onValidated.run(false); + return; + } + + if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || + UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || + UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || + UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { + + this.mListener.onError(new InvalidQuantityException()); + onValidated.run(false); + return; + } + + if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { + this.mListener.onError(new InvalidNotesException()); + onValidated.run(false); + return; + } + + if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) + this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); + + if (SettingsManager.iDB().isFlagWarningNewPartitaMag()) { + asyncMagazzinoRESTConsumer(internalPartitaMag, this.getMtbAart().getCodMart()); + + if (mtbPartitaMag == null) { + boolean result = runAsyncWarningDialog(UtilityResources.getString(R.string.batch_lot_inexistent_error_message)); + if (!result) { + onValidated.run(false); + return; + } + } + } + + 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)); + if (!result) { + onValidated.run(false); + return; + } + } + + 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)); + if (!result) { + onValidated.run(false); + return; + } + } + + this.sendOnLoadingEnded(); + onValidated.run(true); + }).start(); + } + + private boolean runAsyncWarningDialog(String text) { + try { + final FutureTask ft = new FutureTask<>(() -> { + }, new Object()); + AtomicBoolean returnResult = new AtomicBoolean(); + mListener.onWarning(text, result -> { + returnResult.set(result); + ft.run(); + }); + + ft.get(); + return returnResult.get(); + } catch (Exception e) { + this.sendError(e); + return false; } + } - if(this.statoArt == StatoPartitaMag.DISATTIVO){ - this.mListener.onError(new InactiveBatchLotException(internalPartitaMag)); - onValidated.run(false); - return; + 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(); + }); + + ft.get(); + } catch (Exception e) { + this.sendError(e); } - - if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { - - this.mListener.onError(new InvalidBatchLotException()); - onValidated.run(false); - return; - } - - if (this.shouldAskDataScad && this.internalDataScad == null) { - - this.mListener.onError(new InvalidExpireDateException()); - onValidated.run(false); - return; - } - - if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && - this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowQtaTotOrderedQuantityException()); - onValidated.run(false); - return; - } - - if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowNumCnfOrderedQuantityException()); - onValidated.run(false); - return; - } - - if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) { - - this.mListener.onError(new OverflowQtaTotAvailableQuantityException()); - onValidated.run(false); - return; - } - - if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onError(new OverflowNumCnfAvailableQuantityException()); - onValidated.run(false); - return; - } - - if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null || - UtilityBigDecimal.equalsOrLowerThan(this.internalNumCnf, BigDecimal.ZERO) || - UtilityBigDecimal.equalsOrLowerThan(this.internalQtaCnf, BigDecimal.ZERO) || - UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) { - - this.mListener.onError(new InvalidQuantityException()); - onValidated.run(false); - return; - } - - if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) { - this.mListener.onError(new InvalidNotesException()); - onValidated.run(false); - return; - } - - if (!UtilityString.isNullOrEmpty(this.internalPartitaMag)) - this.internalPartitaMag = this.internalPartitaMag.toUpperCase(); - - //Gli ultimi due controlli sono in coda a causa della callBack di onWarning, non eseguirebbe i controlli messi dopo - - if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) && - this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine.
Continuare?", onValidated); - return; - } - - if (this.warnOnQuantityOverflow && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) && - !this.mtbAart.get().isFlagQtaCnfFissaBoolean()) { - - this.mListener.onWarning("Hai inserito una quantità superiore rispetto a quella presente nell'ordine.
Continuare?", onValidated); - return; - } - - onValidated.run(true); } public DialogInputQuantityV2ResultDTO getResult() { @@ -619,14 +689,27 @@ public class DialogInputQuantityV2ViewModel { return this; } + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + public MtbAart getMtbAart() { return this.mtbAart.get(); } - public interface Listener { + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + public interface Listener extends ILoadingListener { void onDataChanged(); void onError(Exception ex); + void onWarning(String text, RunnableArgs result); } } diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3672cc4a..12c3fac0 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -194,10 +194,13 @@ quantità per confezioni inserita non è valida]]> numero di confezioni inserito supera la quantità massima disponibile]]> quantità inserita supera la quantità ordinata]]> + quantità inserita supera la quantità ordinata. Continuare?]]> numero di confezioni inserito supera la quantità ordinata]]> + numero di confezioni inserito supera la quantità ordinata. Continuare?]]> Linea di produzione non valida]]> data di scadenza inserita non è valida]]> lotto inserito non è valido]]> + È stato inserito un nuovo lotto per questo articolo. Continuare? campo note deve essere compilato per il modulo corrente.]]> Impostazioni Check box diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82468fc2..3bd81317 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -194,10 +194,13 @@ amount exceeds the maximum amount available, please check it]]> package\'s amount exceeds the maximum amount available, please check it]]> amount exceeds the total ordered amount, please check it]]> + amount exceeds the total ordered amount. To continue?]]> + package\'s amount exceeds the total ordered amount. To continue?]]> package\'s amount exceeds the total ordered amount, please check it]]> production line]]> expire date is not valid, please check it.]]> batch lot is not valid, please check it.]]> + A new batch lot has been added for this item. To continue? notes field requires to be filled in for the current form.]]> Settings Check box