From 4880ea8301ddf6ce15be59b2367fbe10c4a70e3b Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 9 Mar 2022 12:09:04 +0100 Subject: [PATCH] Implementata gestione dei cod_anags aziendali --- .../integrywmsnative/core/model/MtbColt.java | 37 +++++++++++++- .../core/model/dto/InternalCodAnagsDTO.java | 35 +++++++++++++ .../consumers/ColliMagazzinoRESTConsumer.java | 15 ++---- .../core/settings/DBSettingsModel.java | 21 ++++++-- .../core/settings/SettingsManager.java | 50 +++++++++++++------ .../AccettazionePickingViewModel.java | 3 +- .../PickingLiberoViewModel.java | 3 +- .../picking_resi/PickingResiViewModel.java | 4 +- .../gest/spedizione/SpedizioneViewModel.java | 3 +- 9 files changed, 131 insertions(+), 40 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/model/dto/InternalCodAnagsDTO.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 54ab7855..78f32639 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -2,12 +2,16 @@ package it.integry.integrywmsnative.core.model; import androidx.databinding.ObservableArrayList; +import com.annimon.stream.Optional; +import com.annimon.stream.Stream; + import org.jetbrains.annotations.Nullable; import java.math.BigDecimal; import java.util.Date; 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.settings.SettingsManager; 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()); setPreparatoDa(SettingsManager.i().getUser().getFullname()); setOraInizPrep(UtilityDate.getDateInstance()); - setCodAnag(SettingsManager.iDB().getDefaultCodAnag()); + + String codAnagToUse = null; + switch (gestioneEnum) { + case ACQUISTO: + case LAVORAZIONE: + if(SettingsManager.iDB().getInternalCodAnags() == null) break; + + Optional 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 optCodAnagClie = Stream.of(SettingsManager.iDB().getInternalCodAnags()) + .filter(InternalCodAnagsDTO::isCliente) + .findFirst(); + + if(optCodAnagClie.isEmpty()) break; + + codAnagToUse = optCodAnagClie.get().getCodAnag(); + break; + } + + setCodAnag(codAnagToUse); return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/dto/InternalCodAnagsDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/model/dto/InternalCodAnagsDTO.java new file mode 100644 index 00000000..33fa5657 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/dto/InternalCodAnagsDTO.java @@ -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; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 22658517..a22cc23a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -104,10 +104,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { public void createColloLavorazione(int segno, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt mtbColtToCreate = new MtbColt() - .setSegno(segno) - .setGestione(GestioneEnum.LAVORAZIONE); + .setSegno(segno); - mtbColtToCreate.initDefaultFields(); + mtbColtToCreate.initDefaultFields(GestioneEnum.LAVORAZIONE); mtbColtToCreate .setOperation(CommonModelConsts.OPERATION.INSERT); @@ -123,9 +122,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { public void createColloScaricoDaCarico(MtbColt sourceMtbColt, MtbDepoPosizione posizione, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt newMtbColt = new MtbColt() - .initDefaultFields() + .initDefaultFields(GestioneEnum.LAVORAZIONE) .setCodAnag(null) - .setGestione(GestioneEnum.LAVORAZIONE) .setSegno(-1) .setCodTcol(sourceMtbColt.getCodTcol()) .setPesoKg(sourceMtbColt.getPesoKg()) @@ -176,9 +174,8 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { public void createColliScaricoDaOrdineLavorazione(MtbColt sourceMtbColt, MtbColr sourceMtbColr, MtbDepoPosizione posizione, List ordini, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt newMtbColt = new MtbColt() - .initDefaultFields() + .initDefaultFields(GestioneEnum.LAVORAZIONE) .setCodAnag(null) - .setGestione(GestioneEnum.LAVORAZIONE) .setSegno(-1) .setCodTcol(sourceMtbColt.getCodTcol()) // .setPesoKg(sourceMtbColt.getPesoKg()) @@ -246,9 +243,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { public void createColloFromEtichettaAnonima(String barcode, GestioneEnum gestione, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt mtbColtToCreate = new MtbColt() - .setGestione(gestione); - - mtbColtToCreate.initDefaultFields(); + .initDefaultFields(gestione); Integer customNumCollo = UtilityBarcode.getNumColloFromULAnonima(barcode); String customSerCollo = CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 4b1fc0b4..8a5a9731 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -5,6 +5,7 @@ import java.util.List; import it.integry.integrywmsnative.core.model.Azienda; 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.DistribuzioneColloDTO; @@ -15,10 +16,11 @@ public class DBSettingsModel { private List availablePosizioni = null; private Azienda datiAzienda = null; + private List internalCodAnags = null; private boolean enableCheckPartitaMagCheckPickingV; private boolean flagMultiClienteOrdV; - private String defaultCodAnag; + private boolean flagUseCodAnagAziendale; private String defaultCausaleRettificaGiacenze; private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; private boolean flagAskClienteInPickingLibero; @@ -80,6 +82,15 @@ public class DBSettingsModel { return this; } + public List getInternalCodAnags() { + return internalCodAnags; + } + + public DBSettingsModel setInternalCodAnags(List internalCodAnags) { + this.internalCodAnags = internalCodAnags; + return this; + } + public List getAvailableCodMdep() { return availableCodMdep; } @@ -106,12 +117,12 @@ public class DBSettingsModel { return this; } - public String getDefaultCodAnag() { - return defaultCodAnag; + public boolean isFlagUseCodAnagAziendale() { + return flagUseCodAnagAziendale; } - public DBSettingsModel setDefaultCodAnag(String defaultCodAnag) { - this.defaultCodAnag = defaultCodAnag; + public DBSettingsModel setFlagUseCodAnagAziendale(boolean flagUseCodAnagAziendale) { + this.flagUseCodAnagAziendale = flagUseCodAnagAziendale; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 4804b7d4..e01b7eda 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -4,7 +4,9 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; +import com.google.gson.reflect.TypeToken; +import java.lang.reflect.Type; import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -13,6 +15,7 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; 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.PosizioniRESTConsumer; 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!")); }; - onProgress.run("dati azienda"); - loadDatiAzienda(() -> { -// onProgress.run("profili"); -// loadAvailableProfiles(() -> { - onProgress.run("depositi"); - loadAvailableCodMdeps(() -> { + onProgress.run("depositi"); + loadAvailableCodMdeps(() -> { - onProgress.run("posizioni"); - loadAvailablePosizioni(() -> { + onProgress.run("posizioni"); + loadAvailablePosizioni(() -> { - onProgress.run("impostazioni"); - loadGestSetupValues(tmpOnComplete, tmpOnFailed); - }, tmpOnFailed); + onProgress.run("impostazioni"); + loadGestSetupValues(() -> { + + onProgress.run("dati azienda"); + loadDatiAzienda(tmpOnComplete, tmpOnFailed); }, tmpOnFailed); -// }, tmpOnFailed); + }, tmpOnFailed); }, tmpOnFailed); } @@ -113,7 +114,26 @@ public class SettingsManager { SystemRESTConsumer.getAzienda(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>() {}.getType(); + SystemRESTConsumer.>processSqlStatic(internalCodAnagsQuery, type, internalCodAnagsList -> { + SettingsManager.iDB().setInternalCodAnags(internalCodAnagsList); + + if (onComplete != null) onComplete.run(); + }, onFailed); + }, onFailed); } @@ -193,7 +213,7 @@ public class SettingsManager { stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SETUP") - .setKeySection("COD_ANAG_DEFAULT")); + .setKeySection("FLAG_USE_COD_ANAG_AZIENDALE")); stbGestSetupList.add(new StbGestSetup() .setGestName("PICKING") .setSection("SETUP") @@ -292,7 +312,7 @@ public class SettingsManager { 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.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.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class)); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java index 6a81e57f..8f5d4457 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_picking/AccettazionePickingViewModel.java @@ -373,8 +373,7 @@ public class AccettazionePickingViewModel { MtbColt mtbColt = new MtbColt(); mtbColt - .initDefaultFields() - .setGestione(defaultGestioneOfUL) + .initDefaultFields(defaultGestioneOfUL) .setAnnotazioni(additionalNotes) .setPosizione(defaultPosAccettazione) .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index 6477b7bd..4b11eb30 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -244,8 +244,7 @@ public class PickingLiberoViewModel { this.sendOnLoadingStarted(); MtbColt mtbColt = new MtbColt(); - mtbColt.initDefaultFields(); - mtbColt.setGestione(mDefaultGestione) + mtbColt.initDefaultFields(mDefaultGestione) .setRifOrd(mDefaultGestione == GestioneEnum.LAVORAZIONE ? "PICKING LIBERO" : null) .setCodAnag(SettingsManager.iDB().getProduzioneDefaultCodAnag()) .setSegno(-1) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java index d52ac0a8..b2ad2ada 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java @@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbTCol; 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.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; @@ -125,8 +126,7 @@ public class PickingResiViewModel { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { MtbColt mtbColt = new MtbColt(); - mtbColt.initDefaultFields(); - mtbColt.setGestione(mDefaultGestioneOfLU) + mtbColt.initDefaultFields(GestioneEnum.fromString(mDefaultGestioneOfLU)) .setSegno(mDefaultSegnoOfLU) .setCodAnag(mDefaultCodAnagOfLU) .setCodMdep(mDefaultCodMdepOfLU) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index fbdb7d48..85209507 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1319,8 +1319,7 @@ public class SpedizioneViewModel { public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { MtbColt mtbColt = new MtbColt(); - mtbColt.initDefaultFields(); - mtbColt.setGestione(mDefaultGestioneOfUL) + mtbColt.initDefaultFields(mDefaultGestioneOfUL) .setSegno(mDefaultSegnoCol) .setRifOrd(mDefaultRifOrdOfUL) .setNumOrd(mDefaultNumOrdOfUL)