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 it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoArticoloDTO {
private String codMart;
@ -17,7 +19,7 @@ public class StatoArticoloDTO {
private Integer ggUtili;
private Integer statoArt;
private StatoPartitaMag statoArt;
public String getCodMart() {
return codMart;
@ -82,11 +84,11 @@ public class StatoArticoloDTO {
return this;
}
public Integer getStatoArt() {
public StatoPartitaMag getStatoArt() {
return statoArt;
}
public StatoArticoloDTO setStatoArt(Integer statoArt) {
public StatoArticoloDTO setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt;
return this;
}

View File

@ -2,9 +2,10 @@ package it.integry.integrywmsnative.core.model.secondary;
public enum StatoPartitaMag {
IN_SCADENZA(1),
SCADUTO(2),
NON_IN_SCADENZA(3);
SCADUTO(1),
IN_SCADENZA(2),
NON_IN_SCADENZA(3),
DISATTIVO(4);
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.LocalDateTime;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.rest.deserializer.LocalDateDeserializer;
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.LocalDateTimeSerializer;
import it.integry.integrywmsnative.core.rest.serializer.StatoPartitaMagSerializer;
public class UtilityGson {
@ -22,6 +25,8 @@ public class UtilityGson {
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagDeserializer())
.registerTypeAdapter(StatoPartitaMag.class, new StatoPartitaMagSerializer())
.create();
}

View File

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

View File

@ -773,6 +773,8 @@ public class SpedizioneViewModel {
MtbColt refMtbColt = matchedItem.getRefMtbColt();
if (matchedItem.getMtbColts() != null && matchedItem.getMtbColts().size() == 1) {
refMtbColt = matchedItem.getMtbColts().get(0);
} else if(matchedItem.getTempPickData().getSourceMtbColt() != null){
refMtbColt = matchedItem.getTempPickData().getSourceMtbColt();
}
MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : 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())
.setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag())
.setDataScad(mDialogInputQuantityV2DTO.getDataScad())
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck());
.setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck())
.setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
mBindings.setView(this);
mBindings.setViewmodel(this.mViewModel);
@ -215,24 +216,24 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
}
private void initProductLotStatusNotification() {
StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
if (statoPartitaMag == null)
//StatoPartitaMag statoPartitaMag = StatoPartitaMag.from(this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt());
if (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() == null)
return;
this.mBindings.inputDataScadLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
switch (statoPartitaMag) {
case SCADUTO:
switch (this.mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt()) {
case IN_SCADENZA -> {
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)));
break;
case IN_SCADENZA:
}
case SCADUTO -> {
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)));
break;
default:
}
case NON_IN_SCADENZA -> {
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)));
}
}
}

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.RunnableArgsWithReturn;
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.model.Ean13PesoModel;
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.UtilityString;
import it.integry.integrywmsnative.view.dialogs.exception.InactiveBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidBatchLotException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidExpireDateException;
import it.integry.integrywmsnative.view.dialogs.exception.InvalidNotesException;
@ -88,6 +90,8 @@ public class DialogInputQuantityV2ViewModel {
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private StatoPartitaMag statoArt;
@Inject
public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer) {
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
@ -336,6 +340,11 @@ public class DialogInputQuantityV2ViewModel {
return this;
}
public DialogInputQuantityV2ViewModel setStatoArt(StatoPartitaMag statoArt) {
this.statoArt = statoArt;
return this;
}
public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) {
this.warnOnQuantityOverflow = warnOnQuantityOverflow;
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)) {
this.mListener.onError(new InvalidBatchLotException());

View File

@ -344,7 +344,7 @@
<string name="delivered_on">Consegnato il %s</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="title_dynamic_saporiveri_pv">SaporiVeri PV</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="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="home">Home</string>
<string name="logout">Logout</string>