Implementato controllo su stato partite di magazzino in fase di picking Spedizione
This commit is contained in:
parent
6aa2bcf962
commit
7403ac0a2d
@ -49,6 +49,8 @@ public class MtbColr extends EntityBase implements Parcelable {
|
||||
|
||||
private MtbAart mtbAart;
|
||||
|
||||
private MtbPartitaMag rifPartitaMag;
|
||||
|
||||
public MtbColr() {
|
||||
type = "mtb_colr";
|
||||
}
|
||||
@ -564,4 +566,14 @@ public class MtbColr extends EntityBase implements Parcelable {
|
||||
this.mtbAart = mtbAart;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public MtbPartitaMag getRifPartitaMag() {
|
||||
return rifPartitaMag;
|
||||
}
|
||||
|
||||
public MtbColr setRifPartitaMag(MtbPartitaMag rifPartitaMag) {
|
||||
this.rifPartitaMag = rifPartitaMag;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,240 @@
|
||||
package it.integry.integrywmsnative.core.model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
public class MtbPartitaMag {
|
||||
private String codMart;
|
||||
|
||||
private String partitaMag;
|
||||
private String descrizione;
|
||||
private String dataIns;
|
||||
private String dataScad;
|
||||
private Integer scelta;
|
||||
private BigDecimal costoUntUmMag;
|
||||
private BigDecimal valUntUmMag;
|
||||
private BigDecimal taraCnfKg;
|
||||
private BigDecimal qtaCnf;
|
||||
private String flagImballoArendere;
|
||||
private String flagStato;
|
||||
private String codDiviCont;
|
||||
private BigDecimal cambioDiviCont;
|
||||
private String barcode;
|
||||
private String note;
|
||||
private BigDecimal rapConv2;
|
||||
private BigDecimal rapConv3;
|
||||
private String posizione;
|
||||
private String dataAggPrz;
|
||||
private String partitaMagSec;
|
||||
private BigDecimal qtaAttesa;
|
||||
|
||||
|
||||
public String getCodMart() {
|
||||
return codMart;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setCodMart(String codMart) {
|
||||
this.codMart = codMart;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMag() {
|
||||
return partitaMag;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setPartitaMag(String partitaMag) {
|
||||
this.partitaMag = partitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDescrizione() {
|
||||
return descrizione;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setDescrizione(String descrizione) {
|
||||
this.descrizione = descrizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataIns() {
|
||||
return dataIns;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setDataIns(String dataIns) {
|
||||
this.dataIns = dataIns;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataScadS() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public Date getDataScadD() {
|
||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataScadS());
|
||||
}
|
||||
|
||||
public MtbPartitaMag setDataScad(String dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setDataScad(Date dataScad) {
|
||||
this.dataScad = UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Integer getScelta() {
|
||||
return scelta;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setScelta(Integer scelta) {
|
||||
this.scelta = scelta;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getCostoUntUmMag() {
|
||||
return costoUntUmMag;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setCostoUntUmMag(BigDecimal costoUntUmMag) {
|
||||
this.costoUntUmMag = costoUntUmMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getValUntUmMag() {
|
||||
return valUntUmMag;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setValUntUmMag(BigDecimal valUntUmMag) {
|
||||
this.valUntUmMag = valUntUmMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getTaraCnfKg() {
|
||||
return taraCnfKg;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setTaraCnfKg(BigDecimal taraCnfKg) {
|
||||
this.taraCnfKg = taraCnfKg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaCnf() {
|
||||
return qtaCnf;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setQtaCnf(BigDecimal qtaCnf) {
|
||||
this.qtaCnf = qtaCnf;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagImballoArendere() {
|
||||
return flagImballoArendere;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setFlagImballoArendere(String flagImballoArendere) {
|
||||
this.flagImballoArendere = flagImballoArendere;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFlagStato() {
|
||||
return flagStato;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setFlagStato(String flagStato) {
|
||||
this.flagStato = flagStato;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodDiviCont() {
|
||||
return codDiviCont;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setCodDiviCont(String codDiviCont) {
|
||||
this.codDiviCont = codDiviCont;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getCambioDiviCont() {
|
||||
return cambioDiviCont;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setCambioDiviCont(BigDecimal cambioDiviCont) {
|
||||
this.cambioDiviCont = cambioDiviCont;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getBarcode() {
|
||||
return barcode;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setBarcode(String barcode) {
|
||||
this.barcode = barcode;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getNote() {
|
||||
return note;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setNote(String note) {
|
||||
this.note = note;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getRapConv2() {
|
||||
return rapConv2;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setRapConv2(BigDecimal rapConv2) {
|
||||
this.rapConv2 = rapConv2;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getRapConv3() {
|
||||
return rapConv3;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setRapConv3(BigDecimal rapConv3) {
|
||||
this.rapConv3 = rapConv3;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPosizione() {
|
||||
return posizione;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setPosizione(String posizione) {
|
||||
this.posizione = posizione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getDataAggPrz() {
|
||||
return dataAggPrz;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setDataAggPrz(String dataAggPrz) {
|
||||
this.dataAggPrz = dataAggPrz;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getPartitaMagSec() {
|
||||
return partitaMagSec;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setPartitaMagSec(String partitaMagSec) {
|
||||
this.partitaMagSec = partitaMagSec;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BigDecimal getQtaAttesa() {
|
||||
return qtaAttesa;
|
||||
}
|
||||
|
||||
public MtbPartitaMag setQtaAttesa(BigDecimal qtaAttesa) {
|
||||
this.qtaAttesa = qtaAttesa;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.model.MtbPartitaMag;
|
||||
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
@ -483,22 +484,11 @@ public class PickingObjectDTO implements Parcelable {
|
||||
}
|
||||
|
||||
public static class PickData {
|
||||
private String batchLot;
|
||||
private BigDecimal qtaTot;
|
||||
private BigDecimal qtaCnf;
|
||||
private BigDecimal numCnf;
|
||||
private Date dataScad;
|
||||
private MtbColt sourceMtbColt;
|
||||
|
||||
|
||||
public String getBatchLot() {
|
||||
return batchLot;
|
||||
}
|
||||
|
||||
public PickData setBatchLot(String batchLot) {
|
||||
this.batchLot = batchLot;
|
||||
return this;
|
||||
}
|
||||
private MtbPartitaMag mtbPartitaMag;
|
||||
|
||||
public BigDecimal getQtaTot() {
|
||||
return qtaTot;
|
||||
@ -527,15 +517,6 @@ public class PickingObjectDTO implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Date getDataScad() {
|
||||
return dataScad;
|
||||
}
|
||||
|
||||
public PickData setDataScad(Date dataScad) {
|
||||
this.dataScad = dataScad;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbColt getSourceMtbColt() {
|
||||
return sourceMtbColt;
|
||||
}
|
||||
@ -545,21 +526,32 @@ public class PickingObjectDTO implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public MtbPartitaMag getMtbPartitaMag() {
|
||||
return mtbPartitaMag;
|
||||
}
|
||||
|
||||
public PickData setMtbPartitaMag(MtbPartitaMag mtbPartitaMag) {
|
||||
this.mtbPartitaMag = mtbPartitaMag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static PickData fromEan128(Ean128Model ean128Model) {
|
||||
PickingObjectDTO.PickData pickData = null;
|
||||
|
||||
if(ean128Model != null){
|
||||
pickData = new PickingObjectDTO.PickData();
|
||||
|
||||
|
||||
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag();
|
||||
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
||||
pickData.setBatchLot(ean128Model.BatchLot);
|
||||
mtbPartitaMag.setPartitaMag(ean128Model.BatchLot);
|
||||
}
|
||||
|
||||
try {
|
||||
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
||||
pickData.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
||||
mtbPartitaMag.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
||||
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
||||
pickData.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
||||
mtbPartitaMag.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
@ -567,6 +559,10 @@ public class PickingObjectDTO implements Parcelable {
|
||||
}
|
||||
|
||||
|
||||
if(mtbPartitaMag.getPartitaMag() != null && mtbPartitaMag.getDataScadD() != null) {
|
||||
pickData.setMtbPartitaMag(mtbPartitaMag);
|
||||
}
|
||||
|
||||
if(ean128Model.Count != null && ean128Model.Count > 0) {
|
||||
//if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
pickData.setNumCnf(new BigDecimal(ean128Model.Count));
|
||||
|
||||
@ -689,8 +689,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
MtbColr matchRow = matchWithPartitaMag.get(k);
|
||||
|
||||
PickingObjectDTO.PickData pickData = new PickingObjectDTO.PickData()
|
||||
.setBatchLot(matchRow.getPartitaMag())
|
||||
.setDataScad(matchRow.getDataScadPartitaD())
|
||||
.setMtbPartitaMag(matchRow.getRifPartitaMag())
|
||||
.setNumCnf(matchRow.getNumCnf())
|
||||
.setQtaCnf(matchRow.getQtaCnf())
|
||||
.setQtaTot(matchRow.getQtaCol())
|
||||
@ -713,8 +712,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
MtbColr matchRow = matchWithColloRow.get(k);
|
||||
PickingObjectDTO.PickData pickData = new PickingObjectDTO.PickData()
|
||||
.setBatchLot(matchRow.getPartitaMag())
|
||||
.setDataScad(matchRow.getDataScadPartitaD())
|
||||
.setMtbPartitaMag(matchRow.getRifPartitaMag())
|
||||
.setNumCnf(matchRow.getNumCnf())
|
||||
.setQtaCnf(matchRow.getQtaCnf())
|
||||
.setQtaTot(matchRow.getQtaCol())
|
||||
@ -753,7 +751,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
if(SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) {
|
||||
List<PickingObjectDTO> matchWithPartitaMag = Stream.of(matchPickingObject)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()) &&
|
||||
(pickData != null && Objects.equals(x.getPartitaMag(), pickData.getBatchLot()))).toList();
|
||||
(pickData != null && Objects.equals(x.getPartitaMag(), pickData.getMtbPartitaMag().getPartitaMag()))).toList();
|
||||
|
||||
matchPickingObject = matchWithPartitaMag;
|
||||
|
||||
@ -1122,18 +1120,22 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setCanPartitaMagBeChanged(item.isDeactivated())
|
||||
.setMaxQta(qtaDisponibile);
|
||||
|
||||
boolean batchLotEnabled = true;
|
||||
|
||||
if(item.getTempPickData() != null) {
|
||||
PickingObjectDTO.PickData tmpPickData = item.getTempPickData();
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(tmpPickData.getBatchLot())) {
|
||||
dto.setBatchLot(tmpPickData.getBatchLot());
|
||||
if(!UtilityString.isNullOrEmpty(tmpPickData.getMtbPartitaMag().getPartitaMag())) {
|
||||
dto.setBatchLot(tmpPickData.getMtbPartitaMag().getPartitaMag());
|
||||
}
|
||||
|
||||
if(tmpPickData.getDataScad() != null){
|
||||
dto.setDataScad(tmpPickData.getDataScad());
|
||||
if(tmpPickData.getMtbPartitaMag().getDataScadD() != null){
|
||||
dto.setDataScad(tmpPickData.getMtbPartitaMag().getDataScadD());
|
||||
dto.setShouldAskDataScad(true);
|
||||
}
|
||||
|
||||
batchLotEnabled = tmpPickData.getMtbPartitaMag().getFlagStato().equalsIgnoreCase("A");
|
||||
|
||||
boolean useQtaDaEvadere;
|
||||
|
||||
if(tmpPickData.getQtaTot() != null) {
|
||||
@ -1165,7 +1167,14 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
}
|
||||
|
||||
boolean canOverflowQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione();
|
||||
DialogInputQuantity.makeBase(mActivity, dto, canOverflowQuantity, (quantityDTO, closeUL) -> onOrdineRowDispatched(item, quantityDTO, closeUL), null).show();
|
||||
|
||||
if(!batchLotEnabled) {
|
||||
this.showBatchLotDisabledWarning(dto.getBatchLot(), () -> {
|
||||
DialogInputQuantity.makeBase(mActivity, dto, canOverflowQuantity, (quantityDTO, closeUL) -> onOrdineRowDispatched(item, quantityDTO, closeUL), null).show();
|
||||
}, null);
|
||||
} else {
|
||||
DialogInputQuantity.makeBase(mActivity, dto, canOverflowQuantity, (quantityDTO, closeUL) -> onOrdineRowDispatched(item, quantityDTO, closeUL), null).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1356,4 +1365,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void showBatchLotDisabledWarning(String batchLot, Runnable onAccepted, Runnable onRejected) {
|
||||
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(String.format(mActivity.getText(R.string.batch_lot_not_enabled).toString(), batchLot)), null, onAccepted, onRejected).show();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -248,4 +248,6 @@
|
||||
|
||||
<string name="shipped_on">Spedito il %s</string>
|
||||
<string name="delivered_on">Consegnato il %s</string>
|
||||
|
||||
<string name="batch_lot_not_enabled">Il lotto <b>%s</b> non è attivo. Continuare?</string>
|
||||
</resources>
|
||||
@ -254,4 +254,6 @@
|
||||
<string name="shipped_on">Shipped %s</string>
|
||||
<string name="delivered_on">Delivered on %s</string>
|
||||
|
||||
<string name="batch_lot_not_enabled">Batch lot <b>%s</b> is inactive. Continue?</string>
|
||||
|
||||
</resources>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user