diff --git a/app/build.gradle b/app/build.gradle index 9b7f5d72..98c748d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 268 - def appVersionName = '1.24.0' + def appVersionCode = 269 + def appVersionName = '1.24.1' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/NotValidLicenseException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/NotValidLicenseException.java new file mode 100644 index 00000000..ea39bc23 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/NotValidLicenseException.java @@ -0,0 +1,8 @@ +package it.integry.integrywmsnative.core.exception; + +public class NotValidLicenseException extends Exception { + + public NotValidLicenseException() { + super("Licenza non valida"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java index f10d2341..dee65413 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java @@ -59,7 +59,7 @@ public class BaseActivity extends AppCompatActivity { protected void openProgress() { BarcodeManager.disable(); - if (!progressOpened) { + if (!progressOpened && !this.mCurrentProgress.isAdded()) { this.progressOpened = true; runOnUiThread(() -> { this.mCurrentProgress.show(getSupportFragmentManager(), "tag"); 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/rest/consumers/_BaseRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java index 8d8c0d8f..07250691 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java @@ -5,6 +5,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.List; +import it.integry.integrywmsnative.core.exception.NotValidLicenseException; import it.integry.integrywmsnative.core.rest.CommonRESTException; import it.integry.integrywmsnative.core.rest.model.EsitoType; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -41,7 +42,9 @@ public class _BaseRESTConsumer { if (response.code() == 404) { Log.e(logTitle, "Errore " + response.code() + ": risorsa non trovata (" + response.raw().request().url().toString() + ")"); onFailed.run(new Exception("Errore " + response.code() + ": risorsa non trovata (" + logTitle + ")")); - } else { + } else if (response.code() == 550) + onFailed.run(new NotValidLicenseException()); + else { Log.e(logTitle, "Status " + response.code() + ": " + response.message()); onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java index 9f0071ab..3d0e2921 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/watcher/ServerStatusChecker.java @@ -30,23 +30,27 @@ public class ServerStatusChecker { private Runnable runnableCode = new Runnable() { @Override public void run() { - if(shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) { - UtilityServer.isEmsApiAvailable(SettingsManager.i().getServer().getHost(), SettingsManager.i().getServer().getPort(), mInternalCallback); + if (shouldExecute && !UtilityString.isNullOrEmpty(SettingsManager.i().getServer().getHost())) { + UtilityServer.isEmsApiAvailable( + SettingsManager.i().getServer().getHost(), + SettingsManager.i().getServer().getPort(), + () -> mInternalCallback.run(true), + ex -> mInternalCallback.run(false)); handler.postDelayed(this, MILLIS_DELAY); } } }; - public void addCallback(RunnableArgs callback){ + public void addCallback(RunnableArgs callback) { this.mCallback.add(callback); } - public void removeCallback(RunnableArgs callback){ + public void removeCallback(RunnableArgs callback) { this.mCallback.remove(callback); } - public static void init(){ + public static void init() { instance.shouldExecute = true; instance.handler.post(instance.runnableCode); 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 1613d2f3..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,21 +91,19 @@ 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); @@ -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/core/utility/UtilityServer.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityServer.java index b4a05b39..ea06a59e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityServer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityServer.java @@ -5,14 +5,16 @@ import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; +import it.integry.integrywmsnative.core.exception.NotValidLicenseException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class UtilityServer { - public static void isHostReachable(final String serverAddress, final int serverTCPport, final RunnableArgs callback){ + public static void isHostReachable(final String serverAddress, final int serverTCPport, final RunnableArgs callback) { new Thread(() -> { boolean connected = false; @@ -36,7 +38,7 @@ public class UtilityServer { }).start(); } - public static void isEmsApiAvailable(final String serverAddress, final int serverTCPport, final RunnableArgs callback) { + public static void isEmsApiAvailable(final String serverAddress, final int serverTCPport, final Runnable onComplete, final RunnableArgs onFailed) { new Thread(() -> { OkHttpClient client = new OkHttpClient(); @@ -46,11 +48,16 @@ public class UtilityServer { try { Response response = client.newCall(request).execute(); - boolean status = response.isSuccessful(); response.close(); - callback.run(status); + + if (response.code() == 200) onComplete.run(); + else if (response.code() == 404) + onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, null)); + else if (response.code() == 550) + onFailed.run(new NotValidLicenseException()); + else onFailed.run(new Exception("Errore non identificato (STATUS: " + response.code() + ")")); } catch (IOException e) { - callback.run(false); + onFailed.run(new ServerNotReachableException(serverAddress, serverTCPport, e)); } }).start(); 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/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index 827c78ab..7771456a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -15,7 +15,6 @@ import it.integry.integrywmsnative.core.utility.UtilityServer; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.login.exception.InvalidServerCodAziendaException; import it.integry.integrywmsnative.gest.login.exception.InvalidUserDepositException; -import it.integry.integrywmsnative.gest.login.exception.ServerNotReachableException; import it.integry.integrywmsnative.gest.login.rest.LoginRESTConsumer; public class LoginViewModel { @@ -52,13 +51,10 @@ public class LoginViewModel { final String host = u.getHost(); final int port = u.getPort(); - UtilityServer.isEmsApiAvailable(host, port, value1 -> { + UtilityServer.isEmsApiAvailable(host, port, () -> { - if (value1) { //Is online mLoginRESTConsumer.authenticate(host, port, username, password, loginDTO -> { - SettingsManager.iDB().setAvailableProfiles(loginDTO.getAvailableProfiles()); - SettingsManager.i().createUserSession(); SettingsManager.i().getUser().setFullname(!UtilityString.isNullOrEmpty(loginDTO.getFull_name()) ? loginDTO.getFull_name() : username); @@ -73,11 +69,7 @@ public class LoginViewModel { }, this::sendError); - } else { //Is not online - this.sendError(new ServerNotReachableException(host, port, null)); - } - - }); + }, this::sendError); }, ex -> { this.sendError(new InvalidServerCodAziendaException(codAzienda, ex)); }); 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/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 24a065d6..83b928fa 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -13,11 +13,8 @@ import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; -import com.annimon.stream.Stream; import com.ravikoradiya.liveadapter.LiveAdapter; - -import java.math.BigDecimal; -import java.util.List; +import com.ravikoradiya.liveadapter.Type; import javax.inject.Inject; @@ -35,6 +32,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; +import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.ui.OrdineAcquistoArtListModel; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; @@ -134,20 +132,17 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi } private void initRecyclerView() { -// this.mViewModel.getArticoli().observe(this, updatedData -> { -// this.mArticoliMutableData.clear(); -// this.mArticoliMutableData.addAll(convertDataModelToListModel(updatedData)); -//// this.noItemsToPick.set(!isThereAnyItemToPick(updatedData)); -// }); -// var mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoliMutableData) -// .setOnItemClicked(this::selectAction); + var itemType = new Type(R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item, BR.articolo); + itemType.onClick(x -> { + this.selectAction(x.getBinding().getArticolo()); + return null; + }); - var liveAdapter = new LiveAdapter(this.mViewModel.getArticoli(), this, BR.articolo) - .map(ArticoloOrdine.class, R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item) + new LiveAdapter(this.mViewModel.getArticoli(), this) + .map(ArticoloOrdine.class, itemType) .into(mBinding.articoliOrdineList); -// mBinding.articoliOrdineList.setAdapter(mAdapter); mBinding.articoliOrdineList.setHasFixedSize(true); mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this)); @@ -156,20 +151,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi mBinding.articoliOrdineList.addItemDecoration(itemDecorator); } - private List convertDataModelToListModel - (List dataList) { - return Stream.of(dataList) - .distinctBy(ArticoloOrdine::getArticoloOrdineId) - .sortBy(x -> x.getDataIns().getTime()) - .map(x -> new OrdineAcquistoArtListModel() - .setBadge1(x.getCodMart()) - .setDescription(x.getDescrizione()) - .setQuantity(BigDecimal.valueOf(x.getQtaOrd())) - .setUntMis(x.getUntMis()) - .setOriginalModel(x)) - .toList(); - } - private void selectAction(ArticoloOrdine articoloOrdine) { mBinding.closeActivityFab.close(false); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index 027e94ca..29cce26b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -93,7 +94,7 @@ public class PVOrdineAcquistoEditViewModel { .filter(x -> Objects.equals(x.getCodMart(), articolo.getCodMart())) .findFirst(); - if(alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get()); + if (alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get()); newList.add(articolo); this.mArticoli.postValue(newList); @@ -154,20 +155,36 @@ public class PVOrdineAcquistoEditViewModel { private void checkArticolo(Ordine ordine, String barcode, RunnableArgs onSuccess, RunnableArgs onFail) { try { - mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { - if (articolo != null) { - onSuccess.run(articolo); - } else { - mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { - if (artGrid != null) { - onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); + mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { + if (artGrid != null) { + + + mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { + if (articolo != null) { + + articolo + .setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita())) + .setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta())) + .setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza())) + .setMediaSett(artGrid.getMediaSett()); + + articolo.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile()); + articolo.setMerceDaRic(artGrid.getMerceDaRic()); + articolo.setNewNoPromo(artGrid.isNewNoPromo()); + articolo.setFlagQtaMultipla(artGrid.getFlagQtaMultipla()); + + onSuccess.run(articolo); } else { - onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); + onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); } }, onFail); + + } else { + onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); } }, onFail); + } catch (Exception e) { onFail.run(e); } 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) diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java index 99c5bca1..ae48de19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromListaArts.java @@ -37,11 +37,9 @@ import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDialog; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; -import it.integry.integrywmsnative.view.dialogs.DialogProgressView; public class DialogChooseArtsFromListaArts extends BaseDialogFragment { @@ -62,7 +60,6 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { private final List mDataset; private int mBarcodeScannerIstanceID; - private DialogProgressView mCurrentProgress; private MtbAart selectedArt; public static DialogChooseArtsFromListaArts newInstance(List listaMtbColr, RunnableArgs> onItemsChoosed, Runnable onAbort) { @@ -385,20 +382,4 @@ public class DialogChooseArtsFromListaArts extends BaseDialogFragment { this.dismiss(); } - protected void openProgress() { - requireActivity().runOnUiThread(() -> { - if (this.mCurrentProgress == null) { - this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity()); - } - }); - } - - protected void closeProgress() { - requireActivity().runOnUiThread(() -> { - if (mCurrentProgress != null) { - mCurrentProgress.dismiss(); - mCurrentProgress = null; - } - }); - } }