Aggiunto un messaggio di allert quando viene inserita una quantità superiore rispetto a quella presente nell'ordine.

This commit is contained in:
2023-11-21 13:02:06 +01:00
parent 7f9524e0b2
commit 8c24f5f025
8 changed files with 129 additions and 27 deletions

View File

@@ -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;
}
}

View File

@@ -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();

View File

@@ -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)

View File

@@ -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;
}
}

View File

@@ -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<Boolean> result) {
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)),
null,
() -> result.run(true),
() -> result.run(false)
).show(requireActivity().getSupportFragmentManager(), "tag");
}
}

View File

@@ -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<Boolean> 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. <br>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. <br>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<Boolean> result);
}
}