diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 00000000..5d15bdef
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/app.xml b/.idea/runConfigurations/app.xml
index 80d18a58..61e0e773 100644
--- a/.idea/runConfigurations/app.xml
+++ b/.idea/runConfigurations/app.xml
@@ -1,6 +1,6 @@
-
+
@@ -9,7 +9,6 @@
-
@@ -25,6 +24,8 @@
+
+
@@ -32,14 +33,21 @@
+
+
-
+
+
+
+
+
+
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 6d52bd65..d7dfc294 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
@@ -69,6 +69,7 @@ public class DBSettingsModel {
private boolean flagCanAddUnknownBarcodesAccettazioneBolla = false;
private boolean flagEnableFastPickAccettazioneBolla = false;
private boolean flagDisableMandatoryTracciabilitaAccettazioneBolla = false;
+ private boolean flagHigherQuantityWarning = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -556,4 +557,13 @@ public class DBSettingsModel {
this.flagDisableMandatoryTracciabilitaAccettazioneBolla = flagDisableMandatoryTracciabilitaAccettazioneBolla;
return this;
}
+
+ public boolean isFlagHigherQuantityWarning() {
+ return flagHigherQuantityWarning;
+ }
+
+ public DBSettingsModel setFlagHigherQuantityWarning(boolean flagHigherQuantityWarning) {
+ this.flagHigherQuantityWarning = flagHigherQuantityWarning;
+ 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 503a85d1..2f4af06b 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
@@ -470,6 +470,12 @@ public class SettingsManager {
.setKeySection("FLAG_DISABLE_MANDATORY_TRACCIABILITA")
.setSetter(dbSettingsModelIstance::setFlagDisableMandatoryTracciabilitaAccettazioneBolla)
.setDefaultValue(false));
+ stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class)
+ .setGestName("PICKING")
+ .setSection("SPEDIZIONE")
+ .setKeySection("FLAG_HIGHER_QUANTITY_WARNING")
+ .setSetter(dbSettingsModelIstance::setFlagHigherQuantityWarning)
+ .setDefaultValue(false));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
index 646d3761..0dfd7d05 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
@@ -849,6 +849,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
.setPartitaMag(partitaMag)
.setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
+ .setWarnOnQuantityOverflow(SettingsManager.iDB().isFlagHigherQuantityWarning())
.setCanLUBeClosed(true)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null)
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java
index 3dcd8d96..bc2df22e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java
@@ -44,6 +44,7 @@ public class DialogInputQuantityV2DTO {
private boolean saveOnImeDone = false;
private boolean notifyProductLotStatus = false;
private boolean disableTracciabilitaCheck = false;
+ private boolean warnOnQuantityOverflow = false;
private StatoArticoloDTO statoPartitaMag;
@@ -370,4 +371,13 @@ public class DialogInputQuantityV2DTO {
this.customArtDescription = customArtDescription;
return this;
}
+
+ public boolean isWarnOnQuantityOverflow() {
+ return warnOnQuantityOverflow;
+ }
+
+ public DialogInputQuantityV2DTO setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
+ this.warnOnQuantityOverflow = warnOnQuantityOverflow;
+ return this;
+ }
}
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 3d464179..442e16bf 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
@@ -170,6 +170,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable())
.setCanInputZeroQuantity(mDialogInputQuantityV2DTO.isCanInputZeroQuantity())
.setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity())
+ .setWarnOnQuantityOverflow(mDialogInputQuantityV2DTO.isWarnOnQuantityOverflow())
.setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable())
.setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag())
.setNote(mDialogInputQuantityV2DTO.getNote())
@@ -256,19 +257,23 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
};
public void save() {
- if (this.mViewModel.validate()) {
- this.mAbort = false;
- dismiss();
- this.mOnComplete.run(this.mViewModel.getResult(), false);
- }
+ this.mViewModel.validate(validated -> {
+ if (validated) {
+ this.mAbort = false;
+ dismiss();
+ this.mOnComplete.run(this.mViewModel.getResult(), false);
+ }
+ });
}
public void saveAndCloseLU() {
- if (this.mViewModel.validate()) {
- this.mAbort = false;
- dismiss();
- this.mOnComplete.run(this.mViewModel.getResult(), true);
- }
+ this.mViewModel.validate(validated -> {
+ if (validated) {
+ this.mAbort = false;
+ dismiss();
+ this.mOnComplete.run(this.mViewModel.getResult(), true);
+ }
+ });
}
// @Override
@@ -532,4 +537,13 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.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)),
+ 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 ad380519..19827b97 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,12 +3,14 @@ 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 javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
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.rest.consumers.BarcodeRESTConsumer;
@@ -80,6 +82,7 @@ public class DialogInputQuantityV2ViewModel {
private int onNumCnfInputChanged;
private int onQtaTotInputChanged;
private boolean disableTracciabilitaCheck;
+ private boolean warnOnQuantityOverflow;
private Listener mListener;
@@ -333,6 +336,11 @@ public class DialogInputQuantityV2ViewModel {
return this;
}
+ public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
+ this.warnOnQuantityOverflow = warnOnQuantityOverflow;
+ return this;
+ }
+
public DialogInputQuantityV2ViewModel setCanPartitaMagBeChanged(boolean canPartitaMagBeChanged) {
this.canPartitaMagBeChanged = canPartitaMagBeChanged;
return this;
@@ -457,11 +465,12 @@ public class DialogInputQuantityV2ViewModel {
this.blockedQtaTot.set(false);
}
- public boolean validate() {
+ public void validate(RunnableArgs onValidated) {
if (this.internalQtaCnf == null || UtilityBigDecimal.equalsTo(this.internalQtaCnf, BigDecimal.ZERO)) {
this.mListener.onError(new InvalidQtaCnfQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (!disableTracciabilitaCheck && mtbAart.get().isFlagTracciabilitaBoolean() && UtilityString.isNullOrEmpty(internalPartitaMag)) {
@@ -469,51 +478,59 @@ public class DialogInputQuantityV2ViewModel {
internalPartitaMag = suggestPartitaMagRunnable.run(this);
if (internalPartitaMag == null) {
this.mListener.onError(new InvalidBatchLotException());
- return false;
+ onValidated.run(false);
+ return;
}
} else {
this.mListener.onError(new InvalidBatchLotException());
- return false;
+ onValidated.run(false);
+ return;
}
}
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
this.mListener.onError(new InvalidBatchLotException());
- return false;
+ onValidated.run(false);
+ return;
}
if (this.shouldAskDataScad && this.internalDataScad == null) {
this.mListener.onError(new InvalidExpireDateException());
- return false;
+ onValidated.run(false);
+ return;
}
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaOrd) &&
this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowQtaTotOrderedQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfOrderedQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (UtilityBigDecimal.greaterThan(this.internalQtaTot, this.totalQtaAvailable)) {
this.mListener.onError(new OverflowQtaTotAvailableQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfAvailableQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (!this.canInputZeroQuantity && (this.internalNumCnf == null || this.internalQtaCnf == null || this.internalQtaTot == null ||
@@ -522,17 +539,36 @@ public class DialogInputQuantityV2ViewModel {
UtilityBigDecimal.equalsOrLowerThan(this.internalQtaTot, BigDecimal.ZERO))) {
this.mListener.onError(new InvalidQuantityException());
- return false;
+ onValidated.run(false);
+ return;
}
if (this.isNoteMandatory() && (this.internalNote == null || this.internalNote.length() <= 0)) {
this.mListener.onError(new InvalidNotesException());
- return false;
+ onValidated.run(false);
+ return;
}
if (!UtilityString.isNullOrEmpty(this.internalPartitaMag))
this.internalPartitaMag = this.internalPartitaMag.toUpperCase();
- return true;
+
+ //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() {
@@ -543,7 +579,6 @@ public class DialogInputQuantityV2ViewModel {
.setQtaCnf(this.internalQtaCnf)
.setNote(this.internalNote)
.setQtaTot(this.internalQtaTot);
-
}
public void setListener(Listener listener) {
@@ -577,5 +612,6 @@ public class DialogInputQuantityV2ViewModel {
void onDataChanged();
void onError(Exception ex);
+ void onWarning(String text, RunnableArgs result);
}
}