Implementata gestione dei cod_anags aziendali

This commit is contained in:
Giuseppe Scorrano 2022-03-09 12:09:04 +01:00
parent a2d165d475
commit 4880ea8301
9 changed files with 131 additions and 40 deletions

View File

@ -2,12 +2,16 @@ package it.integry.integrywmsnative.core.model;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
@ -105,11 +109,40 @@ public class MtbColt extends EntityBase {
} }
} }
public MtbColt initDefaultFields() { public MtbColt initDefaultFields(GestioneEnum gestioneEnum) {
setGestione(gestioneEnum);
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()); setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
setPreparatoDa(SettingsManager.i().getUser().getFullname()); setPreparatoDa(SettingsManager.i().getUser().getFullname());
setOraInizPrep(UtilityDate.getDateInstance()); setOraInizPrep(UtilityDate.getDateInstance());
setCodAnag(SettingsManager.iDB().getDefaultCodAnag());
String codAnagToUse = null;
switch (gestioneEnum) {
case ACQUISTO:
case LAVORAZIONE:
if(SettingsManager.iDB().getInternalCodAnags() == null) break;
Optional<InternalCodAnagsDTO> optCodAnagForn = Stream.of(SettingsManager.iDB().getInternalCodAnags())
.filter(InternalCodAnagsDTO::isFornitore)
.findFirst();
if(optCodAnagForn.isEmpty()) break;
codAnagToUse = optCodAnagForn.get().getCodAnag();
break;
case VENDITA:
if(SettingsManager.iDB().getInternalCodAnags() == null) break;
Optional<InternalCodAnagsDTO> optCodAnagClie = Stream.of(SettingsManager.iDB().getInternalCodAnags())
.filter(InternalCodAnagsDTO::isCliente)
.findFirst();
if(optCodAnagClie.isEmpty()) break;
codAnagToUse = optCodAnagClie.get().getCodAnag();
break;
}
setCodAnag(codAnagToUse);
return this; return this;
} }

View File

@ -0,0 +1,35 @@
package it.integry.integrywmsnative.core.model.dto;
public class InternalCodAnagsDTO {
private String codAnag;
private boolean isCliente;
private boolean isFornitore;
public String getCodAnag() {
return codAnag;
}
public InternalCodAnagsDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public boolean isCliente() {
return isCliente;
}
public InternalCodAnagsDTO setCliente(boolean cliente) {
isCliente = cliente;
return this;
}
public boolean isFornitore() {
return isFornitore;
}
public InternalCodAnagsDTO setFornitore(boolean fornitore) {
isFornitore = fornitore;
return this;
}
}

View File

@ -104,10 +104,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void createColloLavorazione(int segno, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColloLavorazione(int segno, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToCreate = new MtbColt() MtbColt mtbColtToCreate = new MtbColt()
.setSegno(segno) .setSegno(segno);
.setGestione(GestioneEnum.LAVORAZIONE);
mtbColtToCreate.initDefaultFields(); mtbColtToCreate.initDefaultFields(GestioneEnum.LAVORAZIONE);
mtbColtToCreate mtbColtToCreate
.setOperation(CommonModelConsts.OPERATION.INSERT); .setOperation(CommonModelConsts.OPERATION.INSERT);
@ -123,9 +122,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt newMtbColt = new MtbColt() MtbColt newMtbColt = new MtbColt()
.initDefaultFields() .initDefaultFields(GestioneEnum.LAVORAZIONE)
.setCodAnag(null) .setCodAnag(null)
.setGestione(GestioneEnum.LAVORAZIONE)
.setSegno(-1) .setSegno(-1)
.setCodTcol(sourceMtbColt.getCodTcol()) .setCodTcol(sourceMtbColt.getCodTcol())
.setPesoKg(sourceMtbColt.getPesoKg()) .setPesoKg(sourceMtbColt.getPesoKg())
@ -176,9 +174,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List<OrdineLavorazioneDTO> ordini, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt newMtbColt = new MtbColt() MtbColt newMtbColt = new MtbColt()
.initDefaultFields() .initDefaultFields(GestioneEnum.LAVORAZIONE)
.setCodAnag(null) .setCodAnag(null)
.setGestione(GestioneEnum.LAVORAZIONE)
.setSegno(-1) .setSegno(-1)
.setCodTcol(sourceMtbColt.getCodTcol()) .setCodTcol(sourceMtbColt.getCodTcol())
// .setPesoKg(sourceMtbColt.getPesoKg()) // .setPesoKg(sourceMtbColt.getPesoKg())
@ -246,9 +243,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) { public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt mtbColtToCreate = new MtbColt() MtbColt mtbColtToCreate = new MtbColt()
.setGestione(gestione); .initDefaultFields(gestione);
mtbColtToCreate.initDefaultFields();
Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode); Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode);
String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE; String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE;

View File

@ -5,6 +5,7 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
@ -15,10 +16,11 @@ public class DBSettingsModel {
private List<MtbDepoPosizione> availablePosizioni = null; private List<MtbDepoPosizione> availablePosizioni = null;
private Azienda datiAzienda = null; private Azienda datiAzienda = null;
private List<InternalCodAnagsDTO> internalCodAnags = null;
private boolean enableCheckPartitaMagCheckPickingV; private boolean enableCheckPartitaMagCheckPickingV;
private boolean flagMultiClienteOrdV; private boolean flagMultiClienteOrdV;
private String defaultCodAnag; private boolean flagUseCodAnagAziendale;
private String defaultCausaleRettificaGiacenze; private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero; private boolean flagAskClienteInPickingLibero;
@ -80,6 +82,15 @@ public class DBSettingsModel {
return this; return this;
} }
public List<InternalCodAnagsDTO> getInternalCodAnags() {
return internalCodAnags;
}
public DBSettingsModel setInternalCodAnags(List<InternalCodAnagsDTO> internalCodAnags) {
this.internalCodAnags = internalCodAnags;
return this;
}
public List<AvailableCodMdepsDTO> getAvailableCodMdep() { public List<AvailableCodMdepsDTO> getAvailableCodMdep() {
return availableCodMdep; return availableCodMdep;
} }
@ -106,12 +117,12 @@ public class DBSettingsModel {
return this; return this;
} }
public String getDefaultCodAnag() { public boolean isFlagUseCodAnagAziendale() {
return defaultCodAnag; return flagUseCodAnagAziendale;
} }
public DBSettingsModel setDefaultCodAnag(String defaultCodAnag) { public DBSettingsModel setFlagUseCodAnagAziendale(boolean flagUseCodAnagAziendale) {
this.defaultCodAnag = defaultCodAnag; this.flagUseCodAnagAziendale = flagUseCodAnagAziendale;
return this; return this;
} }

View File

@ -4,7 +4,9 @@ import android.content.Context;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.firebase.perf.metrics.Trace; import com.google.firebase.perf.metrics.Trace;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -13,6 +15,7 @@ import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.StbGestSetup; import it.integry.integrywmsnative.core.model.StbGestSetup;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
@ -88,23 +91,21 @@ public class SettingsManager {
onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!")); onFailed.run(new Exception("Errore durante il caricamento dei dati. Riavviare l'applicazione!"));
}; };
onProgress.run("dati azienda");
loadDatiAzienda(() -> {
// onProgress.run("profili");
// loadAvailableProfiles(() -> {
onProgress.run("depositi"); onProgress.run("depositi");
loadAvailableCodMdeps(() -> { loadAvailableCodMdeps(() -> {
onProgress.run("posizioni"); onProgress.run("posizioni");
loadAvailablePosizioni(() -> { loadAvailablePosizioni(() -> {
onProgress.run("impostazioni"); onProgress.run("impostazioni");
loadGestSetupValues(tmpOnComplete, tmpOnFailed); loadGestSetupValues(() -> {
}, tmpOnFailed);
onProgress.run("dati azienda");
loadDatiAzienda(tmpOnComplete, tmpOnFailed);
}, tmpOnFailed); }, tmpOnFailed);
// }, tmpOnFailed); }, tmpOnFailed);
}, tmpOnFailed); }, tmpOnFailed);
} }
@ -113,7 +114,26 @@ public class SettingsManager {
SystemRESTConsumer.getAzienda(datiAzienda -> { SystemRESTConsumer.getAzienda(datiAzienda -> {
SettingsManager.iDB().setDatiAzienda(datiAzienda); SettingsManager.iDB().setDatiAzienda(datiAzienda);
if (onComplete != null) onComplete.run(); if(!SettingsManager.iDB().isFlagUseCodAnagAziendale()) {
onComplete.run();
return;
}
String internalCodAnagsQuery = "SELECT ga.cod_anag,\n" +
" CAST(CASE WHEN vc.cod_anag IS NOT NULL THEN 1 ELSE 0 END AS BIT) AS is_cliente,\n" +
" CAST(CASE WHEN af.cod_anag IS NOT NULL THEN 1 ELSE 0 END AS BIT) AS is_fornitore\n" +
"FROM azienda\n" +
"INNER JOIN gtb_anag ga on azienda.part_iva = ga.part_iva\n" +
"LEFT OUTER JOIN vtb_clie vc on ga.cod_anag = vc.cod_anag AND vc.flag_stato = 'A'\n" +
"LEFT OUTER JOIN atb_forn af on ga.cod_anag = af.cod_anag AND af.flag_stato = 'A'";
Type type = new TypeToken<List<InternalCodAnagsDTO>>() {}.getType();
SystemRESTConsumer.<List<InternalCodAnagsDTO>>processSqlStatic(internalCodAnagsQuery, type, internalCodAnagsList -> {
SettingsManager.iDB().setInternalCodAnags(internalCodAnagsList);
if (onComplete != null) onComplete.run();
}, onFailed);
}, onFailed); }, onFailed);
} }
@ -193,7 +213,7 @@ public class SettingsManager {
stbGestSetupList.add(new StbGestSetup() stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SETUP") .setSection("SETUP")
.setKeySection("COD_ANAG_DEFAULT")); .setKeySection("FLAG_USE_COD_ANAG_AZIENDALE"));
stbGestSetupList.add(new StbGestSetup() stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING") .setGestName("PICKING")
.setSection("SETUP") .setSection("SETUP")
@ -292,7 +312,7 @@ public class SettingsManager {
dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(getValueFromList(list, "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", String.class)); dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(getValueFromList(list, "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", String.class));
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class)); dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class));
dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class)); dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class));
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class)); dbSettingsModelIstance.setFlagUseCodAnagAziendale(getValueFromList(list, "SETUP", "FLAG_USE_COD_ANAG_AZIENDALE", Boolean.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class)); dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));

View File

@ -373,8 +373,7 @@ public class AccettazionePickingViewModel {
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt mtbColt
.initDefaultFields() .initDefaultFields(defaultGestioneOfUL)
.setGestione(defaultGestioneOfUL)
.setAnnotazioni(additionalNotes) .setAnnotazioni(additionalNotes)
.setPosizione(defaultPosAccettazione) .setPosizione(defaultPosAccettazione)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);

View File

@ -244,8 +244,7 @@ public class PickingLiberoViewModel {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields(); mtbColt.initDefaultFields(mDefaultGestione)
mtbColt.setGestione(mDefaultGestione)
.setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null)
.setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag()) .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag())
.setSegno(-1) .setSegno(-1)

View File

@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
@ -125,8 +126,7 @@ public class PickingResiViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields(); mtbColt.initDefaultFields(GestioneEnum.fromString(mDefaultGestioneOfLU))
mtbColt.setGestione(mDefaultGestioneOfLU)
.setSegno(mDefaultSegnoOfLU) .setSegno(mDefaultSegnoOfLU)
.setCodAnag(mDefaultCodAnagOfLU) .setCodAnag(mDefaultCodAnagOfLU)
.setCodMdep(mDefaultCodMdepOfLU) .setCodMdep(mDefaultCodMdepOfLU)

View File

@ -1319,8 +1319,7 @@ public class SpedizioneViewModel {
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt.initDefaultFields(); mtbColt.initDefaultFields(mDefaultGestioneOfUL)
mtbColt.setGestione(mDefaultGestioneOfUL)
.setSegno(mDefaultSegnoCol) .setSegno(mDefaultSegnoCol)
.setRifOrd(mDefaultRifOrdOfUL) .setRifOrd(mDefaultRifOrdOfUL)
.setNumOrd(mDefaultNumOrdOfUL) .setNumOrd(mDefaultNumOrdOfUL)