Implementato controllo su stato partite di magazzino in fase di picking Spedizione

This commit is contained in:
Giuseppe Scorrano 2019-09-04 17:53:24 +02:00
parent 6aa2bcf962
commit 7403ac0a2d
6 changed files with 302 additions and 34 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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