Fix warning partita scaduta e blocco per partita inattiva

This commit is contained in:
Marco Elefante 2023-12-13 10:13:16 +01:00
parent 143a6c9e9c
commit 6541f17555
13 changed files with 121 additions and 40 deletions

6
.idea/appInsightsSettings.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="selectedTabId" value="Android Vitals" />
</component>
</project>

View File

@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model.dto;
import java.util.Date; import java.util.Date;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoArticoloDTO { public class StatoArticoloDTO {
private String codMart; private String codMart;
@ -17,7 +19,7 @@ public class StatoArticoloDTO {
private Integer ggUtili; private Integer ggUtili;
private Integer statoArt; private StatoPartitaMag statoArt;
public String getCodMart() { public String getCodMart() {
return codMart; return codMart;
@ -82,11 +84,11 @@ public class StatoArticoloDTO {
return this; return this;
} }
public Integer getStatoArt() { public StatoPartitaMag getStatoArt() {
return statoArt; return statoArt;
} }
public StatoArticoloDTO setStatoArt(Integer statoArt) { public StatoArticoloDTO setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt; this.statoArt = statoArt;
return this; return this;
} }

View File

@ -2,9 +2,10 @@ package it.integry.integrywmsnative.core.model.secondary;
public enum StatoPartitaMag { public enum StatoPartitaMag {
IN_SCADENZA(1), SCADUTO(1),
SCADUTO(2), IN_SCADENZA(2),
NON_IN_SCADENZA(3); NON_IN_SCADENZA(3),
DISATTIVO(4);
private final int text; private final int text;

View File

@ -0,0 +1,22 @@
package it.integry.integrywmsnative.core.rest.deserializer;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoPartitaMagDeserializer implements JsonDeserializer<StatoPartitaMag> {
@Override
public StatoPartitaMag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonNull()) {
return null;
}
int text = json.getAsInt();
return StatoPartitaMag.from(text);
}
}

View File

@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.rest.serializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class StatoPartitaMagSerializer implements JsonSerializer<StatoPartitaMag> {
@Override
public JsonElement serialize(StatoPartitaMag src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.getText());
}
}

View File

@ -7,10 +7,13 @@ import java.lang.reflect.Modifier;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer; import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer; import it.integry.integrywmsnative.core.rest.deserializer.LocalDateTimeDeserializer;
import it.integry.integrywmsnative.core.rest.deserializer.StatoPartitaMagDeserializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer; import it.integry.integrywmsnative.core.rest.serializer.LocalDateSerializer;
import it.integry.integrywmsnative.core.rest.serializer.LocalDateTimeSerializer; import it.integry.integrywmsnative.core.rest.serializer.LocalDateTimeSerializer;
import it.integry.integrywmsnative.core.rest.serializer.StatoPartitaMagSerializer;
public class UtilityGson { public class UtilityGson {
@ -22,6 +25,8 @@ public class UtilityGson {
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer()) .registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer()) .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer()) .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagDeserializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagSerializer())
.create(); .create();
} }

View File

@ -65,33 +65,31 @@ public class OrdiniUscitaElencoViewModel {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
new Thread(() -> { Date loadingStartDate = new Date();
Date loadingStartDate = new Date();
this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd, this.mOrdiniRESTConsumer.getOrdiniInevasi(this.mCurrentCodMdep, mCurrentGestioneOrd,
ordiniLavorazione -> { ordiniLavorazione -> {
this.mOrderList.postValue(Stream.of(ordiniLavorazione) this.mOrderList.postValue(Stream.of(ordiniLavorazione)
.map(x -> { .map(x -> {
try { try {
return OrdiniUscitaElencoDTO.fromParent(x); return OrdiniUscitaElencoDTO.fromParent(x);
} catch (Exception ex) { } catch (Exception ex) {
return null; return null;
} }
}) })
.toList()); .toList());
long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000; long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000;
if (2 - forcedDelaySecs > 0) { if (2 - forcedDelaySecs > 0) {
try { try {
Thread.sleep((2 - forcedDelaySecs) * 1000); Thread.sleep((2 - forcedDelaySecs) * 1000);
} catch (Exception ignored) { } catch (Exception ignored) {
}
} }
}
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();
}, this::sendError); }, this::sendError);
}).start();
} }

View File

@ -773,6 +773,8 @@ public class SpedizioneViewModel {
MtbColt refMtbColt = matchedItem.getRefMtbColt(); MtbColt refMtbColt = matchedItem.getRefMtbColt();
if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) { if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) {
refMtbColt = matchedItem.getMtbColts().get(0); refMtbColt = matchedItem.getMtbColts().get(0);
} else if(matchedItem.getTempPickData().getSourceMtbColt() != null){
refMtbColt = matchedItem.getTempPickData().getSourceMtbColt();
} }
MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null;
this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null); this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null);

View File

@ -0,0 +1,10 @@
package it.integry.integrywmsnative.view.dialogs.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InactiveBatchLotException extends Exception {
public InactiveBatchLotException(String lotto) {
super(String.format(UtilityResources.getString(R.string.batch_lot_not_enabled), lotto));
}
}

View File

@ -177,7 +177,8 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
.setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory()) .setIsNoteMandatory(mDialogInputQuantityV2DTO.isNotesMandatory())
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag()) .setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad()) .setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck()); .setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel); mBindings.setViewmodel(this.mViewModel);
@ -215,24 +216,24 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
} }
private void initProductLotStatusNotification() { private void initProductLotStatusNotification() {
StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt()); //StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
if (statoPartitaMag == null) if (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() == null)
return; return;
this.mBindings.inputDataScadLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM); this.mBindings.inputDataScadLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
switch (statoPartitaMag) { switch (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt()) {
case SCADUTO: case IN_SCADENZA -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24); this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.warn_color))); this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.warn_color)));
break; }
case IN_SCADENZA: case SCADUTO -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24); this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.error_color))); this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.error_color)));
break; }
default: case NON_IN_SCADENZA -> {
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_check_white_24dp); this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_check_white_24dp);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.success_color))); this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.success_color)));
}
} }
} }

View File

@ -13,12 +13,14 @@ import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException; import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException;
@ -88,6 +90,8 @@ public class DialogInputQuantityV2ViewModel {
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private StatoPartitaMag statoArt;
@Inject @Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) { public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
@ -336,6 +340,11 @@ public class DialogInputQuantityV2ViewModel {
return this; return this;
} }
public DialogInputQuantityV2ViewModel setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt;
return this;
}
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) { public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow; this.warnOnQuantityOverflow = warnOnQuantityOverflow;
return this; return this;
@ -488,6 +497,12 @@ public class DialogInputQuantityV2ViewModel {
} }
} }
if(this.statoArt == StatoPartitaMag.DISATTIVO){
this.mListener.onError(new InactiveBatchLotException(internalPartitaMag));
onValidated.run(false);
return;
}
if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) { if (this.shouldAskDataScad && UtilityString.isNullOrEmpty(internalPartitaMag)) {
this.mListener.onError(new InvalidBatchLotException()); this.mListener.onError(new InvalidBatchLotException());

View File

@ -344,7 +344,7 @@
<string name="delivered_on">Consegnato il %s</string> <string name="delivered_on">Consegnato il %s</string>
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string> <string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
<string name="batch_lot_not_enabled">Il lotto <b>%s</b> non è attivo. Continuare?</string> <string name="batch_lot_not_enabled"><![CDATA[Il lotto: <b>%s</b> non è attivo.]]></string>
<string name="punto_vendita">Punto Vendita</string> <string name="punto_vendita">Punto Vendita</string>
<string name="title_dynamic_saporiveri_pv">SaporiVeri PV</string> <string name="title_dynamic_saporiveri_pv">SaporiVeri PV</string>
<string name="generate_orders">Genera ordini di acquisto</string> <string name="generate_orders">Genera ordini di acquisto</string>

View File

@ -351,7 +351,7 @@
<string name="delivered_on">Delivered on %s</string> <string name="delivered_on">Delivered on %s</string>
<string name="title_dynamic_frudis">Frudis customizations</string> <string name="title_dynamic_frudis">Frudis customizations</string>
<string name="batch_lot_not_enabled">Batch lot <b>%s</b> is inactive. Continue?</string> <string name="batch_lot_not_enabled"><![CDATA[Batch lot: <b>%s</b> is inactive.]]></string>
<string name="other">Other</string> <string name="other">Other</string>
<string name="home">Home</string> <string name="home">Home</string>
<string name="logout">Logout</string> <string name="logout">Logout</string>