From 05d930d8f7661e3ed7ed60050457b1513da899f8 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 31 May 2024 18:38:25 +0200 Subject: [PATCH 01/19] Aggiunta setup per "Disabilitare" il picking libero quando si spara un'etichetta cartone --- .../core/settings/DBSettingsModel.java | 10 ++++++++++ .../core/settings/SettingsManager.java | 6 ++++++ .../gest/picking_libero/PickingLiberoViewModel.java | 13 +++++++------ 3 files changed, 23 insertions(+), 6 deletions(-) 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 0c1f0860..efe86553 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 @@ -78,6 +78,7 @@ public class DBSettingsModel { private boolean flagTracciamentoImballiCaricoEnabled = false; private boolean flagTracciamentoImballiScaricoEnabled = false; + private boolean flagPickingLiberoEnableScanArt = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -654,4 +655,13 @@ public class DBSettingsModel { this.flagTracciamentoImballiScaricoEnabled = flagTracciamentoImballiScaricoEnabled; return this; } + + public boolean isFlagPickingLiberoEnableScanArt() { + return flagPickingLiberoEnableScanArt; + } + + public DBSettingsModel setFlagPickingLiberoEnableScanArt(boolean flagPickingLiberoEnableScanArt) { + this.flagPickingLiberoEnableScanArt = flagPickingLiberoEnableScanArt; + 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 bb2c9c7d..2402e061 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 @@ -518,6 +518,12 @@ public class SettingsManager { .setKeySection("FLAG_WARNING_NEW_PARTITA_MAG") .setSetter(dbSettingsModelIstance::setFlagWarningNewPartitaMag) .setDefaultValue(false)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PICKING_LIBERO") + .setKeySection("ENABLE_SCAN_ART") + .setSetter(dbSettingsModelIstance::setFlagPickingLiberoEnableScanArt) + .setDefaultValue(true)); stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) .setGestName("PICKING") 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 171877f8..8ea43452 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 @@ -14,6 +14,7 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.InvalidCodMdepException; +import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; @@ -137,13 +138,15 @@ public class PickingLiberoViewModel { //Cerco tramite etichetta ean 128 (che può indicarmi una UL) this.executeEtichettaEan128(barcodeScanDTO, onComplete); - } else if (UtilityBarcode.isEanPeso(barcodeScanDTO)) { + } else if (UtilityBarcode.isEanPeso(barcodeScanDTO) && SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()) { //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); - } else { + } else if (SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()){ //Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); + } else { + this.sendError(new NoArtsFoundException()); } } @@ -269,18 +272,16 @@ public class PickingLiberoViewModel { if (!UtilityString.isNullOrEmpty(ean128Model.Content)) barcodeProd = ean128Model.Content; - if (!UtilityString.isNullOrEmpty(barcodeProd)) { if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { this.executeEtichettaLU(ean128Model.Sscc, onComplete); - } else if (!UtilityString.isNullOrEmpty(barcodeProd)) { + } else if (!UtilityString.isNullOrEmpty(barcodeProd) && SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()) { this.loadArticolo(barcodeProd, ean128Model, onComplete); } else { this.sendError(new NoLUFoundException()); } - } else { //EAN 128 non completo o comunque mancano i riferimenti al prodotto this.sendError(new NoLUFoundException()); @@ -326,7 +327,7 @@ public class PickingLiberoViewModel { private void createNewLU_PostClienteAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, Runnable onComplete) { if (this.mFlagAskLineaProd) { this.sendLULineaProdRequired(response -> { - createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete); + createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete); }, () -> { this.sendOnLoadingEnded(); From fe558a8be8cdd18dde2d22a3b67e92291a1eeeec Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 31 May 2024 18:41:02 +0200 Subject: [PATCH 02/19] -> v.1.40.22 (439) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7947bffd..56eb3bf9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 438 - def appVersionName = '1.40.21' + def appVersionCode = 439 + def appVersionName = '1.40.22' signingConfigs { release { From 022841c19500da994d78f0b338b35100c0071ed2 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Mon, 17 Jun 2024 17:53:46 +0200 Subject: [PATCH 03/19] Controllo documenti fruma --- .../rest/consumers/DocumentRESTConsumer.java | 18 ++++++- .../DocumentiRESTConsumerService.java | 8 +++- .../DocInterniFragment.java | 18 ++++++- .../DocInterniViewModel.java | 47 +++++++++++++++++-- 4 files changed, 80 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java index 92740653..fc6643db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers; import androidx.annotation.NonNull; +import java.util.Date; import java.util.List; import javax.inject.Singleton; @@ -18,7 +19,7 @@ import retrofit2.Response; @Singleton public class DocumentRESTConsumer extends _BaseRESTConsumer { - + public void createDocsFromColli(List listColli, RunnableArgs> onComplete, RunnableArgs onFailed) { DocumentiRESTConsumerService documentiRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); @@ -50,8 +51,21 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer { }); } + public void checkFrumaDocument(String fornitore, String numDoc, String dataDoc, RunnableArgs onComplete, RunnableArgs onFailed) { + var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); + inventarioRESTConsumerService.checkFrumaDoc(fornitore, numDoc, dataDoc) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + analyzeAnswer(response, "checkDocument", onComplete, onFailed); + } - + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } public void loadDocumentAvailableArts(String codDtip, String codMgrp, String codAnagForn, RunnableArgs onComplete, RunnableArgs onFailed) { var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java index 2ba2c2d6..bfd9d899 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentiRESTConsumerService.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.core.rest.consumers; +import java.util.Date; import java.util.List; import it.integry.integrywmsnative.core.model.DtbDoct; @@ -20,8 +21,11 @@ public interface DocumentiRESTConsumerService { @POST("createDocFromColli") Call> createDocFromColli(@Body LoadColliDTO listColli); - - + @GET("wms/documento/checkFruma") + Call> checkFrumaDoc( + @Query("fornitore") String fornitore, + @Query("numDoc") String numDoc, + @Query("dataDoc") String dataDoc); @GET("wms/documento/arts") Call> retrieveArts( diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java index f47d0f26..9b9cc20b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniFragment.java @@ -3,6 +3,8 @@ package it.integry.integrywmsnative.gest.contab_doc_interni; import android.content.Context; import android.os.Bundle; +import android.text.Html; +import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -37,6 +39,7 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniE import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListAdapter; import it.integry.integrywmsnative.gest.contab_doc_interni.ui.DocInterniListModel; import it.integry.integrywmsnative.ui.ElevatedToolbar; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class DocInterniFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, DocInterniViewModel.Listener { @@ -120,10 +123,21 @@ public class DocInterniFragment extends BaseFragment implements ITitledFragment, this.openDocumentSelectionDialog(); } + @Override + public void onWarning(String warningText, Runnable action) { + this.requireActivity().runOnUiThread(() -> { + this.onLoadingEnded(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action) + .show(requireActivity().getSupportFragmentManager(), "tag"); + }); + } + @Override public void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection) { - mViewModel.setSelectedDocDetails(selection); - mBinding.invalidateAll(); + mViewModel.setSelectedDocDetails(selection, () -> { + mBinding.invalidateAll(); + }); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java index 84a04510..8a00b9c6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java @@ -8,16 +8,22 @@ import java.util.List; import javax.inject.Inject; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.di.BindableInteger; +import it.integry.integrywmsnative.core.exception.NoDocFoundException; import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer; import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; @@ -76,6 +82,14 @@ public class DocInterniViewModel { if (this.mListener != null) mListener.onError(ex); } + private void sendWarning(String warningText, Runnable action) { + if (this.mListener != null) mListener.onWarning(warningText, action); + } + + private void sendDocDetailsChanged(DialogSelectDocInfoResponseDTO selection){ + if (this.mListener != null) mListener.onDocDetailsChanged(selection); + } + public DocInterniViewModel setListeners(Listener listener) { this.mListener = listener; return this; @@ -85,7 +99,7 @@ public class DocInterniViewModel { return mDocsList; } - public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection) { + public void setSelectedDocDetails(DialogSelectDocInfoResponseDTO selection, Runnable action) { this.fornitore = selection.getFornitore(); this.dtbTipi = selection.getTipoDoc(); @@ -94,10 +108,31 @@ public class DocInterniViewModel { this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null; this.note = selection.getNote(); - this.sendOnLoadingStarted(); - fetchProducts(() -> { - fetchDocuments(this::sendOnLoadingEnded); - }); + if (dtbTipi.getCodDtip().equalsIgnoreCase("FRUMA")) { + documentRESTConsumer.checkFrumaDocument( + fornitore.getCodAnag(), + numDoc, + UtilityDate.formatDate(dataDoc, "yyyy/MM/dd"), + data -> { + if (!data) { + this.sendWarning(UtilityResources.getString(R.string.no_doc_found_message), this::init); + } else { + action.run(); + this.sendOnLoadingStarted(); + fetchProducts(() -> { + fetchDocuments(this::sendOnLoadingEnded); + }); + } + }, + this::sendError + ); + } else { + action.run(); + this.sendOnLoadingStarted(); + fetchProducts(() -> { + fetchDocuments(this::sendOnLoadingEnded); + }); + } } public void fetchProducts(Runnable onComplete) { @@ -210,6 +245,8 @@ public class DocInterniViewModel { void onError(Exception ex); + void onWarning(String warningText, Runnable action); + void onDocInterniSetupFetched(DocInterniSetupDTO docInterniSetupDTO); void onDocDetailsChanged(DialogSelectDocInfoResponseDTO selection); From 132437d134534c4a0b8ecd2c5c845c3a79631cfa Mon Sep 17 00:00:00 2001 From: MarcoE Date: Mon, 17 Jun 2024 17:55:10 +0200 Subject: [PATCH 04/19] -> v1.40.23 (440) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 56eb3bf9..9d80cbea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 439 - def appVersionName = '1.40.22' + def appVersionCode = 440 + def appVersionName = '1.40.23' signingConfigs { release { From f9a31faa7837e0a372677cd46f57d5e9ca05e1e0 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 18 Jun 2024 09:49:23 +0200 Subject: [PATCH 05/19] Fix import docInterni --- .../gest/contab_doc_interni/DocInterniViewModel.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java index 8a00b9c6..ffcda8a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/DocInterniViewModel.java @@ -13,7 +13,6 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.di.BindableInteger; -import it.integry.integrywmsnative.core.exception.NoDocFoundException; import it.integry.integrywmsnative.core.exception.NoDocTypeSelectedException; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer; @@ -21,9 +20,7 @@ import it.integry.integrywmsnative.core.rest.model.documento.DocumentoArtDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityResources; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoResponseDTO; -import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppoArticoloDTO; From 9bf55aae855bc4f23fea15b024c93496b05a6c88 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 18 Jun 2024 09:52:23 +0200 Subject: [PATCH 06/19] -> v1.40.24 (441) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9d80cbea..0774f5f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 440 - def appVersionName = '1.40.23' + def appVersionCode = 441 + def appVersionName = '1.40.24' signingConfigs { release { From a5a9cb1c502c2f277c8d6b8e8adf795f78ed6fe3 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 18 Jun 2024 16:06:02 +0200 Subject: [PATCH 07/19] =?UTF-8?q?Aggiunto=20blocco=20durante=20la=20lettur?= =?UTF-8?q?a=20dell'SSCC=20fornitore=20nell'accettazione=20se=20il=20barco?= =?UTF-8?q?de=20ul=20=C3=A8=20gi=C3=A0=20presente=20in=20un=20collo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ColliAccettazioneRESTConsumer.java | 18 ++++++++++++++++++ .../ColliAccettazioneRESTConsumerService.java | 5 +++++ .../ColliLavorazioneRESTConsumer.java | 18 ++++++++++++++++++ .../ColliCaricoRESTConsumerInterface.java | 2 ++ .../AccettazioneOrdiniPickingActivity.java | 11 +++++++++++ .../AccettazioneOrdiniPickingViewModel.java | 16 ++++++++++++++-- 6 files changed, 68 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java index 91dcdb01..162a00c1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java @@ -114,4 +114,22 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements }); } + @Override + public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + + colliAccettazioneRESTConsumerService.checkIfBarcodeUlAlreadyRegistered(barcodeUl) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "accettazione/checkIfBarcodeUlAlreadyRegistered", onComplete, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumerService.java index 42a65b48..5f239012 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumerService.java @@ -12,7 +12,9 @@ import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDCRowResponseDTO; import retrofit2.Call; import retrofit2.http.Body; +import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.Query; public interface ColliAccettazioneRESTConsumerService { @@ -31,4 +33,7 @@ public interface ColliAccettazioneRESTConsumerService { @POST("wms/accettazione/deleteUDCRow") Call> deleteUDCRow(@Body DeleteUDCRowRequestDTO deleteUDCRowRequestDTO); + @GET("wms/accettazione/checkIfBarcodeUlAlreadyRegistered") + Call> checkIfBarcodeUlAlreadyRegistered(@Query("barcodeUl") String barcodeUl); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java index 0decfd3a..cacf5a5e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java @@ -264,4 +264,22 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C } }); } + + @Override + public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ + ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); + + colliAccettazioneRESTConsumerService.checkIfBarcodeUlAlreadyRegistered(barcodeUl) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "accettazione/checkIfBarcodeUlAlreadyRegistered", onComplete, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java index 30d87651..71db8839 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java @@ -21,4 +21,6 @@ public interface ColliCaricoRESTConsumerInterface { void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed); void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRequestDTO, Runnable onComplete, RunnableArgs onFailed); + + void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 3f549c78..78f42a9e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; +import android.text.Html; import android.text.SpannableString; import android.view.Gravity; import android.view.Menu; @@ -741,6 +742,16 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A BarcodeManager.enable(); } + @Override + public void onWarning(String warningText, Runnable action) { + this.runOnUiThread(() -> { + this.onLoadingEnded(); + DialogSimpleMessageView + .makeWarningDialog(new SpannableString(Html.fromHtml(warningText)), null, action) + .show(getSupportFragmentManager(), "tag"); + }); + } + @Override public void onItemDispatched(PickingObjectDTO pickingObjectDTO, MtbAart mtbAart, BigDecimal initialNumCnf, BigDecimal initialQtaCnf, BigDecimal initialQtaTot, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, BigDecimal totalQtaToBeTaken, BigDecimal totalNumCnfToBeTaken, BigDecimal qtaCnfToBeTaken, BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, String partitaMag, LocalDate dataScad, boolean canPartitaMagBeChanged, boolean canOverflowQuantity, String customArtDescription, RunnableArgss onComplete) { DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO().setMtbAart(mtbAart).setInitialNumCnf(initialNumCnf).setInitialQtaCnf(initialQtaCnf).setInitialQtaTot(initialQtaTot).setTotalQtaOrd(totalQtaOrd).setTotalNumCnfOrd(totalNumCnfOrd).setQtaCnfOrd(qtaCnfOrd).setTotalQtaToBeTaken(totalQtaToBeTaken).setTotalNumCnfToBeTaken(totalNumCnfToBeTaken).setQtaCnfToBeTaken(qtaCnfToBeTaken).setTotalQtaAvailable(totalQtaAvailable).setTotalNumCnfAvailable(totalNumCnfAvailable).setQtaCnfAvailable(qtaCnfAvailable).setPartitaMag(partitaMag).setDataScad(dataScad).setCanPartitaMagBeChanged(canPartitaMagBeChanged).setCanLUBeClosed(true).setCanOverflowOrderQuantity(canOverflowQuantity).setCustomArtDescription(customArtDescription); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 952a72b5..7ecdec6e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -247,8 +247,14 @@ public class AccettazioneOrdiniPickingViewModel { try { Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO); - //Nel caso trovo un SSCC lo aggiungo - this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete); + mColliAccettazioneRESTConsumer.checkBarcodeUl(ean128Model.Sscc, result -> { + if (result){ + this.sendWarning("Barcode ul già registrato!", onComplete); + } else { + //Nel caso trovo un SSCC lo aggiungo + this.processBarcodeNotOpenedLU(barcodeScanDTO, ean128Model.Sscc, onComplete); + } + }, this::sendError); } catch (Exception e) { this.sendError(e); @@ -933,6 +939,10 @@ public class AccettazioneOrdiniPickingViewModel { if (this.mListener != null) mListener.onError(ex); } + private void sendWarning(String warningText, Runnable action) { + if (this.mListener != null) mListener.onWarning(warningText, action); + } + private void sendLUOpened(MtbColt mtbColt) { if (this.mListener != null) mListener.onLUOpened(mtbColt); } @@ -1050,6 +1060,8 @@ public class AccettazioneOrdiniPickingViewModel { void onFilterPosizioneApplied(String posizioneToFilter); + void onWarning(String warningText, Runnable action); + void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete); } From da301ec6b2d3ac46a612b56d93f2c90c43a53f5e Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 21 Jun 2024 17:55:37 +0200 Subject: [PATCH 08/19] Permettere la duplicazione delle uds --- .../ColliAccettazioneRESTConsumer.java | 1 - .../ColliLavorazioneRESTConsumer.java | 18 ----- .../ColliSpedizioneRESTConsumer.java | 21 ++++++ .../ColliSpedizioneRESTConsumerService.java | 5 ++ .../ColliCaricoRESTConsumerInterface.java | 2 - .../model/uds/DuplicateUDSRequestDTO.java | 28 +++++++ .../model/uds/DuplicateUDSResponseDTO.java | 19 +++++ .../core/settings/DBSettingsModel.java | 10 +++ .../core/settings/SettingsManager.java | 5 ++ .../gest/spedizione/SpedizioneActivity.java | 12 +++ .../gest/spedizione/SpedizioneViewModel.java | 74 ++++++++++++++----- 11 files changed, 157 insertions(+), 38 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java index 162a00c1..dc07ca34 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliAccettazioneRESTConsumer.java @@ -114,7 +114,6 @@ public class ColliAccettazioneRESTConsumer extends _BaseRESTConsumer implements }); } - @Override public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java index cacf5a5e..0decfd3a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliLavorazioneRESTConsumer.java @@ -264,22 +264,4 @@ public class ColliLavorazioneRESTConsumer extends _BaseRESTConsumer implements C } }); } - - @Override - public void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed){ - ColliAccettazioneRESTConsumerService colliAccettazioneRESTConsumerService = RESTBuilder.getService(ColliAccettazioneRESTConsumerService.class); - - colliAccettazioneRESTConsumerService.checkIfBarcodeUlAlreadyRegistered(barcodeUl) - .enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "accettazione/checkIfBarcodeUlAlreadyRegistered", onComplete, onFailed); - } - - @Override - public void onFailure(Call> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java index 962e077b..682f6ed0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java @@ -1,5 +1,7 @@ package it.integry.integrywmsnative.core.rest.consumers; +import androidx.annotation.NonNull; + import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -13,6 +15,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; @@ -113,4 +117,21 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } + public void duplicateUDSRow(DuplicateUDSRequestDTO duplicateUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); + + colliSpedizioneRESTConsumerService.duplicateUDSRow(duplicateUDSRequestDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + analyzeAnswer(response, "spedizione/duplicateUDSRow", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + onFailed.run(new Exception()); + } + }); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java index 32f0b1fc..5492b609 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java @@ -6,6 +6,8 @@ import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; @@ -35,4 +37,7 @@ public interface ColliSpedizioneRESTConsumerService { @POST("wms/spedizione/deleteUDSRow") Call> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO); + @POST("wms/spedizione/duplicateUDSRow") + Call> duplicateUDSRow(@Body DuplicateUDSRequestDTO duplicateUDSRequestDTO); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java index 71db8839..30d87651 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/interfaces/ColliCaricoRESTConsumerInterface.java @@ -21,6 +21,4 @@ public interface ColliCaricoRESTConsumerInterface { void editUDCRow(EditUDCRowRequestDTO editUDCRowRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed); void deleteUDCRow(DeleteUDCRowRequestDTO deleteUDCRequestDTO, Runnable onComplete, RunnableArgs onFailed); - - void checkBarcodeUl(String barcodeUl, RunnableArgs onComplete, RunnableArgs onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java new file mode 100644 index 00000000..24c5bc0d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSRequestDTO.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.core.rest.model.uds; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class DuplicateUDSRequestDTO { + + private MtbColt mtbColt; + + private int numOfDuplicates; + + public MtbColt getMtbColt() { + return mtbColt; + } + + public DuplicateUDSRequestDTO setMtbColt(MtbColt mtbColt) { + this.mtbColt = mtbColt; + return this; + } + + public int getNumOfDuplicates() { + return numOfDuplicates; + } + + public DuplicateUDSRequestDTO setNumOfDuplicates(int numOfDuplicates) { + this.numOfDuplicates = numOfDuplicates; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java new file mode 100644 index 00000000..47d39930 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/DuplicateUDSResponseDTO.java @@ -0,0 +1,19 @@ +package it.integry.integrywmsnative.core.rest.model.uds; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class DuplicateUDSResponseDTO { + + private List mtbColtList; + + public List getMtbColtList() { + return mtbColtList; + } + + public DuplicateUDSResponseDTO setMtbColtList(List mtbColtList) { + this.mtbColtList = mtbColtList; + return this; + } +} 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 efe86553..92760a91 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 @@ -79,6 +79,7 @@ public class DBSettingsModel { private boolean flagTracciamentoImballiCaricoEnabled = false; private boolean flagTracciamentoImballiScaricoEnabled = false; private boolean flagPickingLiberoEnableScanArt = false; + private boolean flagAskDuplicateUDSSpedizione = false; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -664,4 +665,13 @@ public class DBSettingsModel { this.flagPickingLiberoEnableScanArt = flagPickingLiberoEnableScanArt; return this; } + + public boolean isFlagAskDuplicateUDSSpedizione() { + return flagAskDuplicateUDSSpedizione; + } + + public DBSettingsModel setFlagAskDuplicateUDSSpedizione(boolean flagAskDuplicateUDSSpedizione) { + this.flagAskDuplicateUDSSpedizione = flagAskDuplicateUDSSpedizione; + 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 2402e061..d1ebd35a 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 @@ -388,6 +388,11 @@ public class SettingsManager { .setSection("SPEDIZIONE") .setKeySection("FLAG_ASK_INFO_AGGIUNTIVE") .setSetter(dbSettingsModelIstance::setFlagAskInfoAggiuntiveSpedizione)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("FLAG_ASK_DUPLICATE_UDS") + .setSetter(dbSettingsModelIstance::setFlagAskDuplicateUDSSpedizione)); stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) .setGestName("PICKING") .setSection("SPEDIZIONE") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index d2022ba4..d775ef0a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -1072,4 +1072,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo DialogInfoAggiuntiveLUView.newInstance(mtbColt, onComplete, this::onLoadingEnded) .show(getSupportFragmentManager(), DialogInfoAggiuntiveLUView.class.getName()); } + + @Override + public void onInputDuplicate(RunnableArgs onComplete){ + DialogSimpleInputHelper.makeInputDialog(this, "Numero pedane da duplicare", inputValue -> { + try { + Integer num = Integer.parseInt(inputValue); + onComplete.run(num); + } catch (NumberFormatException ex) { + this.onError(new Exception("Inserire un numero di risorse valido")); + } + }, () -> {}).show(); + } } 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 f6dc1249..3780c29e 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 @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.gest.spedizione; +import androidx.annotation.IntegerRes; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.inject.Inject; @@ -72,6 +74,7 @@ import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestOrderDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.DuplicateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO; @@ -1549,31 +1552,35 @@ public class SpedizioneViewModel { this.closeLU(generatedMtbColts -> { - this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> { + this.duplicateUDS(generatedMtbColts, duplicatedMtbColts -> { - this.askPositionChange( - filledMtbColts, - positionedMtbColts -> { + generatedMtbColts.addAll(duplicatedMtbColts); - this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> { - positionedMtbColts.stream() - .filter(x -> !this.mColliRegistrati.contains(x)) - .forEach(x -> this.mColliRegistrati.add(x)); + this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> { - postCloseOperations(positionedMtbColts); + this.askPositionChange( + filledMtbColts, + positionedMtbColts -> { - this.mIsNewLU = false; + this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> { + positionedMtbColts.stream() + .filter(x -> !this.mColliRegistrati.contains(x)) + .forEach(x -> this.mColliRegistrati.add(x)); + + postCloseOperations(positionedMtbColts); + + this.mIsNewLU = false; + + this.resetMatchedRows(); + this.sendLUClosed(); + this.sendOnLoadingEnded(); + }); - this.resetMatchedRows(); - this.sendLUClosed(); - this.sendOnLoadingEnded(); }); - }); - - }, this::sendError); + }, this::sendError); + }); }); - }); }); }); @@ -1596,8 +1603,35 @@ public class SpedizioneViewModel { this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> { onComplete.run(closeResponse.getGeneratedMtbColts()); }, this::sendError); + } + private void duplicateUDS(List mtbColtList, RunnableArgs> onComplete) { + var clonedLu = (MtbColt) this.mCurrentMtbColt.clone(); + boolean noReference = clonedLu.getMtbColr().stream() + .allMatch( + x -> x.getGestioneRif() == null && + x.getDataColloRifD() == null && + x.getSerColloRif() == null && + x.getNumColloRif() == null + ); + + if (mtbColtList.size() > 1 || !noReference || !SettingsManager.iDB().isFlagAskDuplicateUDSSpedizione()) { + onComplete.run(new ArrayList<>()); + return; + } + + var savedMtbColt = mtbColtList.get(0); + + sendInputDuplicate(inputNumber -> { + var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO() + .setMtbColt(savedMtbColt) + .setNumOfDuplicates(inputNumber); + + this.mColliSpedizioneRESTConsumer.duplicateUDSRow(duplicateUDSRequestDTO, data -> { + onComplete.run(data.getMtbColtList()); + }, this::sendError); + }); } private void checkIfShouldBeDeleted(Runnable onDeleted, Runnable onContinue) { @@ -1938,6 +1972,10 @@ public class SpedizioneViewModel { this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError); } + private void sendInputDuplicate(RunnableArgs onComplete) { + if (this.mListener != null) mListener.onInputDuplicate(onComplete); + } + public SpedizioneViewModel setListeners(Listener listener) { this.mListener = listener; return this; @@ -1970,6 +2008,8 @@ public class SpedizioneViewModel { void onChooseArtsRequest(List artsList, RunnableArgs> onComplete); void onOrderClosed(); + + void onInputDuplicate(RunnableArgs onComplete); } } From 8a5c8f5c94f206621deb7a3060f8c7995f98de39 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 25 Jun 2024 09:06:02 +0200 Subject: [PATCH 09/19] -> v1.40.25 (442) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0774f5f2..f7541cbf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 441 - def appVersionName = '1.40.24' + def appVersionCode = 442 + def appVersionName = '1.40.25' signingConfigs { release { From 4f490eb737fe7242ca60033a68ac42a0f064b5e1 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 26 Jun 2024 12:16:46 +0200 Subject: [PATCH 10/19] =?UTF-8?q?In=20accettazione=20da=20bolla=20inserita?= =?UTF-8?q?=20ricerca=20per=20descrizione=20articolo=20e=20aggiunta=20conf?= =?UTF-8?q?erma=20della=20quantit=C3=A0=20al=20long=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AccettazioneBollaPickingActivity.java | 97 +++++++++++++++++-- .../AccettazioneBollaPickingBindings.java | 22 +++++ .../AccettazioneBollaPickingViewModel.java | 67 ++++++++----- ...cettazioneBollaPickingFilterViewModel.java | 75 ++++++++++++++ .../AccettazioneBollaPickingListAdapter.java | 10 ++ 5 files changed, 235 insertions(+), 36 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingBindings.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/filters/AccettazioneBollaPickingFilterViewModel.java diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java index 7710b378..6ae8b99d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java @@ -22,6 +22,8 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Objects; import javax.inject.Inject; @@ -33,6 +35,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbAart; @@ -54,11 +57,15 @@ import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBo import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.AccettazioneBollaPickingOrderBy; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.accettazione_bolla_picking.filters.AccettazioneBollaPickingFilterViewModel; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListAdapter; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.ui.AccettazioneBollaPickingListModel; +import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterDescrLayoutView; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; +import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; +import it.integry.integrywmsnative.ui.filter_chips.FilterChipView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView; @@ -82,8 +89,9 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac private ActivityAccettazioneBollaPickingBinding mBindings; private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; - - + + private final AccettazioneBollaPickingFilterViewModel mAppliedFilterViewModel = new AccettazioneBollaPickingFilterViewModel(); + private final ObservableArrayList mAccettazioneMutableData = new ObservableArrayList<>(); public BindableBoolean noItemsToPick = new BindableBoolean(false); @@ -150,7 +158,7 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac this.initVars(); this.initBarcodeReader(); this.initRecyclerView(); -// this.initFilters(); + this.initFilters(); this.initFab(); boolean useQtaBolla = SettingsManager.iDB().isFlagAccettazioneBollaUseQtaOrd(); @@ -201,16 +209,85 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac this.mBindings.accettazionePickingList.setAdapter(adapter); this.mViewModel.getPickingList().observe(this, updatedData -> { -// mAppliedFilterViewModel.init(updatedData); + mAppliedFilterViewModel.init(updatedData); refreshList(); }); + adapter.setOnLongClickListener(clickedItem -> { + this.mViewModel.dispatchBollaRow(clickedItem, true); + }); + adapter.setOnItemClicked(clickedItem -> { this.mViewModel.dispatchBollaRow(clickedItem); }); } + private void initFilters() { + + var onPredicateChanged = new OnGeneralChangedCallback() { + @Override + public void run() { + refreshList(); + } + }; + + mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(onPredicateChanged); + + List filterList = Stream.of(AccettazioneBollaPickingBindings.AVAILABLE_FILTERS.entrySet()).map(Map.Entry::getValue).sortBy(FilterChipDTO::getPosizione).toList(); + + for (FilterChipDTO filterChipDTO : filterList) { + + FilterChipView filterChipView = new FilterChipView(this, filterChipDTO.getFilterChipText(), v -> initBottomSheetDialogFilter(filterChipDTO)); + + if (filterChipDTO.getID() == AccettazioneBollaPickingBindings.DESCR_FILTER_ID) { + mAppliedFilterViewModel.getCurrentDescrPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { + @Override + public void run() { + if (mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null) { + mViewModel.resetMatchedRows(); + filterChipView.disableCloseIcon(); + + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView); + mBindings.filterChips.smoothScrollTo(0, 0); + } else { + filterChipView.enableCloseIcon(); + + mBindings.filterChipsGroup.removeView(filterChipView); + mBindings.filterChipsGroup.addView(filterChipView, 0); + mBindings.filterChips.smoothScrollTo(0, 0); + } + } + }); + filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDescrPredicate().set(null)); + } + + this.mBindings.filterChipsGroup.addView(filterChipView); + } + } + + private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) { + + filterChipDTO.getFilterLayoutView().setFilterName(filterChipDTO.getFilterChipText()).setContext(this); + + var filterLayoutView = filterChipDTO.getFilterLayoutView(); + + if (filterChipDTO.getID() == AccettazioneBollaPickingBindings.DESCR_FILTER_ID) { + ((FilterDescrLayoutView) filterLayoutView) + .setAll(mAppliedFilterViewModel.getAllDescrs()) + .setAvailable(mAppliedFilterViewModel.getAvailableDescrs()) + .setOnFilterApplied(mAppliedFilterViewModel::setDescrFilter) + .setPreselected( + Stream.of(Objects.requireNonNull(mViewModel.getPickingList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentDescrPredicate().get() == null ? x -> false : Objects.requireNonNull(mAppliedFilterViewModel.getCurrentDescrPredicate().get())) + .map(x -> x.getMtbAart().getDescrizioneEstesa()).toList() + ); + } + + + if (!filterLayoutView.isAdded()) filterLayoutView.show(getSupportFragmentManager(), "TAG"); + } private void initFab() { fabPopupMenu = new PopupMenu(this, this.mBindings.accettazioneOrdineInevasoFab, @@ -246,13 +323,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac runOnUiThread(() -> { List tmpList; -// if (mAppliedFilterViewModel != null) { -// mAppliedFilterViewModel.applyAllTests(); -// tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue(); -// } else { + if (mAppliedFilterViewModel != null) { + mAppliedFilterViewModel.applyAllTests(); + tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue(); + } else { tmpList = mViewModel.getPickingList().getValue(); -// } -// + } + var list = convertDataModelToListModel(tmpList); this.mAccettazioneMutableData.clear(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingBindings.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingBindings.java new file mode 100644 index 00000000..40df6a37 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingBindings.java @@ -0,0 +1,22 @@ +package it.integry.integrywmsnative.gest.accettazione_bolla_picking; + +import java.util.HashMap; + +import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterDescrLayoutView; +import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; + +public class AccettazioneBollaPickingBindings { + + public static final int DESCR_FILTER_ID = 0; + + public static final HashMap AVAILABLE_FILTERS = new HashMap<>() { + { + + put(DESCR_FILTER_ID, new FilterChipDTO() + .setID(DESCR_FILTER_ID) + .setPosizione(1) + .setFilterChipText("Descrizione articolo") + .setFilterLayoutView(new FilterDescrLayoutView())); + } + }; +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java index ad521005..6e8b80eb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java @@ -443,7 +443,11 @@ public class AccettazioneBollaPickingViewModel { dispatchBollaRow(pickingObjectDTO); } - public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO) { + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO){ + dispatchBollaRow(pickingObjectDTO, false); + } + + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO, boolean longClick) { if (this.mCurrentMtbColt == null) return; AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); @@ -578,31 +582,42 @@ public class AccettazioneBollaPickingViewModel { } } - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - initialNumCnf, initialQtaCnf, initialQtaTot, - qtaDaEvadere, - numCnfDaEvadere, - qtaCnfDaEvadere, - qtaColDaPrelevare, - numCnfDaPrelevare, - qtaCnfDaPrelevare, - null, - null, - null, - partitaMag, - dataScad, - true, - (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); + if (!longClick){ + this.sendOnItemDispatched( + pickingObjectDTO, + pickingObjectDTO.getMtbAart(), + initialNumCnf, initialQtaCnf, initialQtaTot, + qtaDaEvadere, + numCnfDaEvadere, + qtaCnfDaEvadere, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + null, + null, + null, + partitaMag, + dataScad, + true, + (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } else { + this.saveNewRow( + pickingObjectDTO, + initialNumCnf, + initialQtaCnf, + initialQtaTot, + partitaMag, + dataScad, + false); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/filters/AccettazioneBollaPickingFilterViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/filters/AccettazioneBollaPickingFilterViewModel.java new file mode 100644 index 00000000..6280da7f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/filters/AccettazioneBollaPickingFilterViewModel.java @@ -0,0 +1,75 @@ +package it.integry.integrywmsnative.gest.accettazione_bolla_picking.filters; + +import androidx.databinding.ObservableField; +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; +import com.annimon.stream.function.Predicate; + +import java.util.List; +import java.util.Objects; + +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO; + +public class AccettazioneBollaPickingFilterViewModel { + private final ObservableField> currentDescrPredicate = new ObservableField<>(); + + private List initialOrderList; + private final MutableLiveData> currentFilteredOrderList = new MutableLiveData<>(); + + public void init(List initialList) { + this.initialOrderList = initialList; + this.currentFilteredOrderList.setValue(this.initialOrderList); + } + + public MutableLiveData> getMutableFilteredOrderList() { + return this.currentFilteredOrderList; + } + + + public void setDescrFilter(List descrs) { + if (descrs == null || descrs.isEmpty()) currentDescrPredicate.set(null); + else { + currentDescrPredicate.set(o -> descrs.contains(o.getMtbAart().getDescrizione())); + } + } + + public void applyAllTests() { + + List returnList; + + if (currentDescrPredicate.get() == null) { + returnList = this.initialOrderList; + } else { + Stream tmpStream = Stream.of(this.initialOrderList) + .filter(x ->(currentDescrPredicate.get() == null || (currentDescrPredicate.get().test(x))) + ); + + returnList = tmpStream.toList(); + } + + this.currentFilteredOrderList.setValue(returnList); + } + + public ObservableField> getCurrentDescrPredicate() { + return currentDescrPredicate; + } + + public List getAllDescrs() { + return Stream + .of(Objects.requireNonNull(initialOrderList)) + .filter(x -> x.getMtbAart().getDescrizioneEstesa() != null) + .sortBy(x -> x.getMtbAart().getDescrizioneEstesa()) + .map(x -> x.getMtbAart().getDescrizioneEstesa() != null ? x.getMtbAart().getDescrizioneEstesa() : null) + .distinct() + .toList(); + } + + public List getAvailableDescrs() { + return Stream.of(this.initialOrderList) + .map(x -> x.getMtbAart().getDescrizioneEstesa()) + .distinct() + .toList(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java index 1d6ca3bb..bf8f8a83 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/ui/AccettazioneBollaPickingListAdapter.java @@ -33,6 +33,7 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd private final List mDataset = new ArrayList<>(); private RunnableArgs mOnItemClicked; + private RunnableArgs mOnItemLongClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -75,6 +76,9 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd this.mOnItemClicked = onItemClicked; } + public void setOnLongClickListener(RunnableArgs onItemLongClicked){ + this.mOnItemLongClicked = onItemLongClicked; + } @Override public AccettazioneBollaPickingListAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -160,6 +164,12 @@ public class AccettazioneBollaPickingListAdapter extends SectionedRecyclerViewAd if (this.mOnItemClicked != null) this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); }); + + holder.mBinding.getRoot().setOnLongClickListener(v -> { + if (this.mOnItemLongClicked != null) + this.mOnItemLongClicked.run(pickingObjectDTO.getOriginalModel()); + return true; + }); } @Override From 074fb10b4417a7b6b9644cd513d70418122cb9f7 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 26 Jun 2024 16:03:07 +0200 Subject: [PATCH 11/19] Fix chiamata servizi duplicateUDS --- .../core/rest/consumers/ColliSpedizioneRESTConsumer.java | 6 +++--- .../rest/consumers/ColliSpedizioneRESTConsumerService.java | 4 ++-- .../gest/spedizione/SpedizioneViewModel.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java index 682f6ed0..a44d8bc2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumer.java @@ -117,14 +117,14 @@ public class ColliSpedizioneRESTConsumer extends _BaseRESTConsumer implements Co } - public void duplicateUDSRow(DuplicateUDSRequestDTO duplicateUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { + public void duplicateUDS(DuplicateUDSRequestDTO duplicateUDSRequestDTO, RunnableArgs onComplete, RunnableArgs onFailed) { ColliSpedizioneRESTConsumerService colliSpedizioneRESTConsumerService = RESTBuilder.getService(ColliSpedizioneRESTConsumerService.class); - colliSpedizioneRESTConsumerService.duplicateUDSRow(duplicateUDSRequestDTO) + colliSpedizioneRESTConsumerService.duplicateUDS(duplicateUDSRequestDTO) .enqueue(new Callback<>() { @Override public void onResponse(@NonNull Call> call, @NonNull Response> response) { - analyzeAnswer(response, "spedizione/duplicateUDSRow", onComplete, onFailed); + analyzeAnswer(response, "spedizione/duplicateUDS", onComplete, onFailed); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java index 5492b609..b80f725d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliSpedizioneRESTConsumerService.java @@ -37,7 +37,7 @@ public interface ColliSpedizioneRESTConsumerService { @POST("wms/spedizione/deleteUDSRow") Call> deleteUDSRow(@Body DeleteUDSRowRequestDTO deleteUDSRowRequestDTO); - @POST("wms/spedizione/duplicateUDSRow") - Call> duplicateUDSRow(@Body DuplicateUDSRequestDTO duplicateUDSRequestDTO); + @POST("wms/spedizione/duplicateUDS") + Call> duplicateUDS(@Body DuplicateUDSRequestDTO duplicateUDSRequestDTO); } 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 3780c29e..c4e3d310 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 @@ -1628,7 +1628,7 @@ public class SpedizioneViewModel { .setMtbColt(savedMtbColt) .setNumOfDuplicates(inputNumber); - this.mColliSpedizioneRESTConsumer.duplicateUDSRow(duplicateUDSRequestDTO, data -> { + this.mColliSpedizioneRESTConsumer.duplicateUDS(duplicateUDSRequestDTO, data -> { onComplete.run(data.getMtbColtList()); }, this::sendError); }); From 74a3749e44bf9a80e4acd02426cd096f99f409ad Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 26 Jun 2024 16:13:43 +0200 Subject: [PATCH 12/19] -> v1.40.26 (443) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f7541cbf..e23a1106 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 442 - def appVersionName = '1.40.25' + def appVersionCode = 443 + def appVersionName = '1.40.26' signingConfigs { release { From bc788c3a34a6815bd67f3ad0daa366f4e9cf3033 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 5 Jul 2024 17:57:19 +0200 Subject: [PATCH 13/19] =?UTF-8?q?[DOLBO]=20Gestito=20extra=20quantity=20in?= =?UTF-8?q?=20duplica=20uds=20e=20aggiornamento=20quantit=C3=A0=20in=20ele?= =?UTF-8?q?nco?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/settings/DBSettingsModel.java | 10 ++ .../core/settings/SettingsManager.java | 5 + .../AccettazioneOrdiniPickingViewModel.java | 2 +- .../gest/spedizione/SpedizioneActivity.java | 33 +++++- .../gest/spedizione/SpedizioneViewModel.java | 110 +++++++++++++----- 5 files changed, 125 insertions(+), 35 deletions(-) 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 92760a91..6e09f913 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 @@ -34,6 +34,7 @@ public class DBSettingsModel { private boolean flagSpedizioneCanSelectMultipleOrders; private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; + private boolean flagSpedizioneUseColliPedana; private boolean flagOrdinaNuoviArticoliInGriglia; private boolean flagOrdinaArticoliOnScan; private boolean flagConsentiFuoriPianoLogistico; @@ -270,6 +271,15 @@ public class DBSettingsModel { return this; } + public boolean isFlagSpedizioneUseColliPedana() { + return flagSpedizioneUseColliPedana; + } + + public DBSettingsModel setFlagSpedizioneUseColliPedana(boolean flagSpedizioneUseColliPedana) { + this.flagSpedizioneUseColliPedana = flagSpedizioneUseColliPedana; + return this; + } + public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) { this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia; 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 d1ebd35a..0a722da0 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 @@ -315,6 +315,11 @@ public class SettingsManager { .setSection("SPEDIZIONE") .setKeySection("FLAG_USE_QTA_ORD") .setSetter(dbSettingsModelIstance::setFlagSpedizioneUseQtaOrd)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("FLAG_USE_COLLI_PEDANA") + .setSetter(dbSettingsModelIstance::setFlagSpedizioneUseColliPedana)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Integer.class) .setGestName("PICKING") .setSection("SETUP") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java index 7ecdec6e..68bff77b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java @@ -556,7 +556,7 @@ public class AccettazioneOrdiniPickingViewModel { if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) { dataScad = UtilityDate.getNow(); - dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita()); + dataScad = dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita()); } if (partitaMag == null && dataScad == null) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index d775ef0a..bc3b3aa6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; +import android.text.Html; import android.text.SpannableString; import android.view.Gravity; import android.widget.Toast; @@ -80,6 +81,7 @@ import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAgg import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtView; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiView; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView; @@ -211,6 +213,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione(); boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione(); boolean useQtaOrd = SettingsManager.iDB().isFlagSpedizioneUseQtaOrd(); + boolean useColliPedana = SettingsManager.iDB().isFlagSpedizioneUseColliPedana(); mViewmodel.init( codMdep, @@ -223,7 +226,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo mColliRegistrati, mGestioneCol, mSegnoCol, mDefaultCausaleUL, mEnableQuantityReset, - useQtaOrd); + useQtaOrd, + useColliPedana); } @@ -280,7 +284,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo fabPopupMenu.getMenu().removeItem(R.id.close_order); } - if(!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled()) + if (!SettingsManager.iDB().isFlagTracciamentoImballiScaricoEnabled()) fabPopupMenu.getMenu().removeItem(R.id.track_packaging); fabPopupMenu.setOnMenuItemClickListener(item -> { @@ -886,6 +890,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo boolean canPartitaMagBeChanged, RunnableArgss onComplete) { + if (dataScad == null && pickingObjectDTO.getMtbAart().getGgScadPartita() != null && pickingObjectDTO.getMtbAart().getGgScadPartita() > 0) { + dataScad = UtilityDate.getNow(); + dataScad = dataScad.plusDays(pickingObjectDTO.getMtbAart().getGgScadPartita()); + } + DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() .setMtbAart(mtbAart) .setInitialNumCnf(initialNumCnf) @@ -1074,7 +1083,23 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } @Override - public void onInputDuplicate(RunnableArgs onComplete){ + public void onInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs onComplete, Runnable onNegativeClick) { + String textWarning = UtilityResources.getString(R.string.ordered_quantity_overflow_error_message); + + dialogInputQuantityToDuplicate(inputNumber -> { + if (qtaTot != null && qtaEvasa != null && UtilityBigDecimal.equalsOrGreaterThan(qtaEvasa.multiply(BigDecimal.valueOf(inputNumber)), qtaTot)) { + + DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(textWarning)), + null, + () -> this.onInputDuplicate(qtaTot, qtaEvasa, onComplete, onNegativeClick) + ).show(getSupportFragmentManager(), "tag"); + } else { + onComplete.run(inputNumber); + } + }, onNegativeClick); + } + + private void dialogInputQuantityToDuplicate(RunnableArgs onComplete, Runnable onNegativeClick) { DialogSimpleInputHelper.makeInputDialog(this, "Numero pedane da duplicare", inputValue -> { try { Integer num = Integer.parseInt(inputValue); @@ -1082,6 +1107,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo } catch (NumberFormatException ex) { this.onError(new Exception("Inserire un numero di risorse valido")); } - }, () -> {}).show(); + }, onNegativeClick).show(); } } 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 c4e3d310..df15bc45 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 @@ -10,7 +10,9 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -19,6 +21,7 @@ import java.util.stream.Stream; import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.exception.EmptyLUException; @@ -79,10 +82,12 @@ import it.integry.integrywmsnative.core.rest.model.uds.EditUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.InsertUDSRowRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.PrintULRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UntMisUtils; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityPosizione; +import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.spedizione.exceptions.CurrentMonoLUPositionIsNotCorrectException; import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidMagazzinoAutomaticoMovementException; @@ -92,6 +97,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadExceptio import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.spedizione.model.PrintOrderCloseDTO; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.exception.OverflowQtaTotOrderedQuantityException; import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.TracciamentoImballoDTO; public class SpedizioneViewModel { @@ -117,6 +123,7 @@ public class SpedizioneViewModel { private boolean mIsNewLU; private boolean mEnableQuantityReset; private boolean mUseQtaOrd; + private boolean mUseColliPedana; private boolean mIsOrdTrasf = false; private MtbColt mCurrentMtbColt = null; @@ -165,7 +172,7 @@ public class SpedizioneViewModel { } - public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, boolean shouldAskPesoLU, boolean canOverflowOrderQuantity, List pickingList, List testateOrdini, List colliRegistrati, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, boolean enableQuantityReset, boolean useQtaOrd) { + public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, boolean shouldAskPesoLU, boolean canOverflowOrderQuantity, List pickingList, List testateOrdini, List colliRegistrati, GestioneEnum gestioneCol, int segnoCol, Integer defaultCausaleUL, boolean enableQuantityReset, boolean useQtaOrd, boolean useColliPedana) { this.sendOnLoadingStarted(); this.mDefaultCodMdep = codMdep; @@ -178,6 +185,7 @@ public class SpedizioneViewModel { this.mDefaultCausaleOfUL = defaultCausaleUL; this.mEnableQuantityReset = enableQuantityReset; this.mUseQtaOrd = useQtaOrd; + this.mUseColliPedana = useColliPedana; if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { @@ -985,20 +993,6 @@ public class SpedizioneViewModel { refMtbColt = pickingObjectDTO.getMtbColts().get(0); } -// MtbColr refMtbColr = null; -// -// if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) { -// Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr()) -// .filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) && -// UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) && -// UtilityString.equalsIgnoreCase(y.getCodCol(), scannedMtbColr.getCodCol()) && -// (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(y.getPartitaMag(), scannedMtbColr.getPartitaMag()) || UtilityString.isNullOrEmpty(scannedMtbColr.getPartitaMag()))) -// .findFirst(); -// -// if (optionalMtbColr.isPresent()) refMtbColr = optionalMtbColr.get(); -// } - - if (refMtbColr != null) { if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) { @@ -1086,8 +1080,12 @@ public class SpedizioneViewModel { } } + BigDecimal initialNumCnf = mUseColliPedana ? pickingObjectDTO.getMtbAart().getColliPedana() : mUseQtaOrd ? numCnfDaPrelevare : null; + BigDecimal initialQtaCnf = mUseColliPedana ? pickingObjectDTO.getMtbAart().getQtaCnf() : mUseQtaOrd ? qtaCnfDaPrelevare : null; + BigDecimal initialQtaTot = mUseColliPedana ? initialNumCnf.multiply(initialQtaCnf) : mUseQtaOrd ? qtaColDaPrelevare : null; + MtbColt finalRefMtbColt = refMtbColt; - this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), mUseQtaOrd ? numCnfDaPrelevare : null, mUseQtaOrd ? qtaCnfDaPrelevare : null, mUseQtaOrd ? qtaColDaPrelevare : null, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { + this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, qtaDaEvadere, numCnfDaEvadere, qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, canPartitaMagBeChanged, (pickedQuantityDTO, shouldCloseLU) -> { this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); }); } @@ -1552,9 +1550,11 @@ public class SpedizioneViewModel { this.closeLU(generatedMtbColts -> { - this.duplicateUDS(generatedMtbColts, duplicatedMtbColts -> { + this.validateTheUdsToBeDuplicated(generatedMtbColts, duplicatedMtbColts -> { - generatedMtbColts.addAll(duplicatedMtbColts); + if (duplicatedMtbColts != null) { + generatedMtbColts.addAll(duplicatedMtbColts); + } this.mColliMagazzinoRESTConsumer.fillMtbAartsOfMtbColts(generatedMtbColts, filledMtbColts -> { @@ -1605,7 +1605,7 @@ public class SpedizioneViewModel { }, this::sendError); } - private void duplicateUDS(List mtbColtList, RunnableArgs> onComplete) { + private void validateTheUdsToBeDuplicated(List mtbColtList, RunnableArgs> onComplete) { var clonedLu = (MtbColt) this.mCurrentMtbColt.clone(); boolean noReference = clonedLu.getMtbColr().stream() @@ -1623,15 +1623,59 @@ public class SpedizioneViewModel { var savedMtbColt = mtbColtList.get(0); - sendInputDuplicate(inputNumber -> { - var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO() - .setMtbColt(savedMtbColt) - .setNumOfDuplicates(inputNumber); + //Controllo se si va in extra quantity + if (!SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione()) { + Map> groupedByCodMart = savedMtbColt.getMtbColr() + .stream() + .filter(x -> x.getCodMart() != null) + .collect(Collectors.groupingBy(MtbColr::getCodMart)); - this.mColliSpedizioneRESTConsumer.duplicateUDS(duplicateUDSRequestDTO, data -> { - onComplete.run(data.getMtbColtList()); - }, this::sendError); - }); + for (PickingObjectDTO pickingObjectDTO : Objects.requireNonNull(this.mPickingList.getValue())) { + + if (pickingObjectDTO.getMtbAart() != null) { + String codMart = pickingObjectDTO.getMtbAart().getCodMart(); + + if (groupedByCodMart.containsKey(codMart)) { + BigDecimal qtaTot = UntMisUtils.shouldBeShowInColli(pickingObjectDTO.getMtbAart()) ? pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd() : pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); + + BigDecimal qtaEvasa = Objects.requireNonNull(groupedByCodMart.get(codMart)).stream().map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add); + + sendInputDuplicate(qtaTot, qtaEvasa, inputNumber -> { + duplicateUDS(savedMtbColt, inputNumber, onComplete); + }, () -> onComplete.run(null)); + } + } + } + } else { + sendInputDuplicate(inputNumber -> { + duplicateUDS(savedMtbColt, inputNumber, onComplete); + }, () -> onComplete.run(null)); + } + } + + private void duplicateUDS(MtbColt savedMtbColt, Integer inputNumber, RunnableArgs> onComplete){ + var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO() + .setMtbColt(savedMtbColt) + .setNumOfDuplicates(inputNumber); + + this.mColliSpedizioneRESTConsumer.duplicateUDS(duplicateUDSRequestDTO, data -> { + Map> groupedByCodMart = data.getMtbColtList() + .stream() + .flatMap(x -> x.getMtbColr().stream()) + .filter(x -> x.getCodMart() != null) + .collect(Collectors.groupingBy(MtbColr::getCodMart)); + + for (PickingObjectDTO pickingObjectDTO : Objects.requireNonNull(this.mPickingList.getValue())) { + if (pickingObjectDTO.getMtbAart() != null) { + String codMart = pickingObjectDTO.getMtbAart().getCodMart(); + if (groupedByCodMart.containsKey(codMart)) { + pickingObjectDTO.getWithdrawMtbColrs() + .addAll(Objects.requireNonNull(groupedByCodMart.get(codMart))); + } + } + } + onComplete.run(data.getMtbColtList()); + }, this::sendError); } private void checkIfShouldBeDeleted(Runnable onDeleted, Runnable onContinue) { @@ -1972,8 +2016,14 @@ public class SpedizioneViewModel { this.mDocumentRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError); } - private void sendInputDuplicate(RunnableArgs onComplete) { - if (this.mListener != null) mListener.onInputDuplicate(onComplete); + private void sendInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs onComplete, Runnable onNegativeClick) { + if (this.mListener != null) + mListener.onInputDuplicate(qtaTot, qtaEvasa, onComplete, onNegativeClick); + } + + private void sendInputDuplicate(RunnableArgs onComplete, Runnable onNegativeClick) { + if (this.mListener != null) + mListener.onInputDuplicate(null, null, onComplete, onNegativeClick); } public SpedizioneViewModel setListeners(Listener listener) { @@ -2009,7 +2059,7 @@ public class SpedizioneViewModel { void onOrderClosed(); - void onInputDuplicate(RunnableArgs onComplete); + void onInputDuplicate(BigDecimal qtaTot, BigDecimal qtaEvasa, RunnableArgs onComplete, Runnable onNegativeClick); } } From 7b11f503d8cc0324d083936cf7038597f4415ac0 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 5 Jul 2024 17:58:49 +0200 Subject: [PATCH 14/19] -> v1.40.27 (444) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e23a1106..5f786a03 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 443 - def appVersionName = '1.40.26' + def appVersionCode = 444 + def appVersionName = '1.40.27' signingConfigs { release { From c548c6484f1c3082b9a39e200dfaf06633f4fee2 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 19 Jul 2024 17:55:14 +0200 Subject: [PATCH 15/19] Aggiunto suggerimento data scadenza in caso di partita esistente --- .../rest/consumers/MagazzinoRESTConsumer.java | 22 ++++++++++ .../MagazzinoRESTConsumerService.java | 7 ++- .../core/settings/DBSettingsModel.java | 11 +++++ .../core/settings/SettingsManager.java | 6 +++ .../gest/spedizione/SpedizioneActivity.java | 3 +- .../gest/spedizione/SpedizioneModule.java | 7 ++- .../gest/spedizione/SpedizioneViewModel.java | 32 ++++++++++++-- .../DialogInputQuantityV2DTO.java | 13 ++++++ .../DialogInputQuantityV2View.java | 6 ++- .../DialogInputQuantityV2ViewModel.java | 43 +++++++++++++++++++ 10 files changed, 137 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index af1b4f46..602ce4b0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -1,13 +1,19 @@ package it.integry.integrywmsnative.core.rest.consumers; +import androidx.annotation.NonNull; + +import java.util.Date; +import java.util.List; import java.util.concurrent.ExecutorService; import javax.inject.Singleton; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; import retrofit2.Callback; @@ -59,4 +65,20 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { } }); } + + public void retrieveAllPartitaMag(List codMarts, Date dataScad, RunnableArgs> onComplete, RunnableArgs onFailed) { + MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); + service.retrieveAllPartitaMag(codMarts, UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call>> call, @NonNull Response>> response) { + analyzeAnswer(response, "retrieveAllPartitaMag", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call>> call, @NonNull Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java index 2797ffee..60cd5dbd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumerService.java @@ -3,14 +3,12 @@ package it.integry.integrywmsnative.core.rest.consumers; import java.util.List; import it.integry.integrywmsnative.core.model.MtbPartitaMag; -import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.POST; -import retrofit2.http.Path; import retrofit2.http.Query; public interface MagazzinoRESTConsumerService { @@ -22,6 +20,7 @@ public interface MagazzinoRESTConsumerService { Call> retrievePartitaMag(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag); - - + @POST("wms/partita-magazzino/retrieveAllPartitaMag") + Call>> retrieveAllPartitaMag(@Body List codMarts, + @Query("dataScad") String dataScad); } 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 6e09f913..5f2448bb 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 @@ -82,6 +82,8 @@ public class DBSettingsModel { private boolean flagPickingLiberoEnableScanArt = false; private boolean flagAskDuplicateUDSSpedizione = false; + private boolean suggestDataScad = false; + public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; } @@ -684,4 +686,13 @@ public class DBSettingsModel { this.flagAskDuplicateUDSSpedizione = flagAskDuplicateUDSSpedizione; return this; } + + public boolean isSuggestDataScad() { + return suggestDataScad; + } + + public DBSettingsModel setSuggestDataScad(boolean suggestDataScad) { + this.suggestDataScad = suggestDataScad; + 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 0a722da0..7a85f68a 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 @@ -456,6 +456,12 @@ public class SettingsManager { .setKeySection("GENERA_DOC") .setSetter(dbSettingsModelIstance::setFlagGeneraDocumentoSpedizione) .setDefaultValue(false)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("SPEDIZIONE") + .setKeySection("SUGGEST_DATA_SCAD") + .setSetter(dbSettingsModelIstance::setSuggestDataScad) + .setDefaultValue(false)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("ACCETTAZIONE_BOLLA") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java index bc3b3aa6..2ca1a6a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java @@ -916,7 +916,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .setCanLUBeClosed(true) .setCanPartitaMagBeChanged(canPartitaMagBeChanged) .setStatoPartitaMag(pickingObjectDTO != null ? pickingObjectDTO.getStatoArticoloDTO() : null) - .setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus()); + .setNotifyProductLotStatus(SettingsManager.iDB().isNotifyLotStatus()) + .setMtbPartitaMagList(mViewmodel.getmPartitaMagList()); if (!mDialogInputQuantityV2View.isVisible()) mDialogInputQuantityV2View diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java index dad4a875..e2f150e2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java @@ -11,6 +11,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @@ -36,7 +37,8 @@ public class SpedizioneModule { ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, MagazzinoAutomaticoRESTConsumer magazzinoAutomaticoRESTConsumer, - ImballiRESTConsumer imballiRESTConsumer) { + ImballiRESTConsumer imballiRESTConsumer, + MagazzinoRESTConsumer magazzinoRESTConsumer) { return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, @@ -48,7 +50,8 @@ public class SpedizioneModule { colliSpedizioneRESTConsumer, colliLavorazioneRESTConsumer, magazzinoAutomaticoRESTConsumer, - imballiRESTConsumer); + imballiRESTConsumer, + magazzinoRESTConsumer); } } 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 df15bc45..52d48cfb 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 @@ -10,6 +10,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,6 +60,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsum import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @@ -105,6 +107,7 @@ public class SpedizioneViewModel { private List mTestateOrdini; private MutableLiveData> mPickingList = new MutableLiveData<>(); private List mColliRegistrati = new ArrayList<>(); + private List mPartitaMagList = new ArrayList<>(); private Listener mListener; @@ -143,6 +146,7 @@ public class SpedizioneViewModel { private final ImballiRESTConsumer mImballiRESTConsumer; private ColliScaricoRESTConsumerInterface mColliScaricoRESTConsumer; + private MagazzinoRESTConsumer magazzinoRESTConsumer; @Inject public SpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, @@ -156,7 +160,8 @@ public class SpedizioneViewModel { ColliSpedizioneRESTConsumer colliSpedizioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer, MagazzinoAutomaticoRESTConsumer mMagazzinoAutomaticoRESTConsumer, - ImballiRESTConsumer imballiRESTConsumer) { + ImballiRESTConsumer imballiRESTConsumer, + MagazzinoRESTConsumer magazzinoRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliDataRecoverService = colliDataRecoverService; @@ -169,6 +174,7 @@ public class SpedizioneViewModel { this.mColliLavorazioneRESTConsumer = colliLavorazioneRESTConsumer; this.mMagazzinoAutomaticoRESTConsumer = mMagazzinoAutomaticoRESTConsumer; this.mImballiRESTConsumer = imballiRESTConsumer; + this.magazzinoRESTConsumer = magazzinoRESTConsumer; } @@ -190,21 +196,35 @@ public class SpedizioneViewModel { if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { this.mPickingList.postValue(pickingObjectList); - this.sendOnLoadingEnded(); }, ex -> this.sendError(new OrdersLoadException(ex))); } else { getEmptyPickingList(pickingList, pickingObjectList -> { this.mPickingList.postValue(pickingObjectList); - this.sendOnLoadingEnded(); }); } + getPartitaMagList(pickingList, mtbPartitaMagList -> { + this.mPartitaMagList = mtbPartitaMagList; + this.sendOnLoadingEnded(); + }); + this.mDefaultGestioneOfUL = gestioneCol; this.mDefaultSegnoCol = segnoCol; this.initDefaultVars(); } + private void getPartitaMagList(List sitArtOrdList, RunnableArgs> onComplete) { + if (SettingsManager.iDB().isSuggestDataScad()) { + List codMarts = sitArtOrdList.stream() + .map(x -> x.getCodMart().trim()) + .collect(Collectors.toList()); + + this.magazzinoRESTConsumer.retrieveAllPartitaMag(codMarts, new Date(), onComplete, this::sendError); + } else { + onComplete.run(new ArrayList<>()); + } + } private void getEmptyPickingList(List sitArtOrdList, RunnableArgs> onComplete) { List codMarts = sitArtOrdList.stream() @@ -1653,7 +1673,7 @@ public class SpedizioneViewModel { } } - private void duplicateUDS(MtbColt savedMtbColt, Integer inputNumber, RunnableArgs> onComplete){ + private void duplicateUDS(MtbColt savedMtbColt, Integer inputNumber, RunnableArgs> onComplete) { var duplicateUDSRequestDTO = new DuplicateUDSRequestDTO() .setMtbColt(savedMtbColt) .setNumOfDuplicates(inputNumber); @@ -1982,6 +2002,10 @@ public class SpedizioneViewModel { return mPickingList; } + public List getmPartitaMagList() { + return mPartitaMagList; + } + public ArrayList getCreatedMtbColts() { return (ArrayList) this.mColliRegistrati; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index bc2df22e..84547c37 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -2,9 +2,11 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; import it.integry.integrywmsnative.core.expansion.RunnableArgsWithReturn; import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.model.MtbPartitaMag; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -57,6 +59,8 @@ public class DialogInputQuantityV2DTO { private String customArtDescription; + private List mtbPartitaMagList; + public MtbAart getMtbAart() { return mtbAart; } @@ -380,4 +384,13 @@ public class DialogInputQuantityV2DTO { this.warnOnQuantityOverflow = warnOnQuantityOverflow; return this; } + + public List getMtbPartitaMagList() { + return mtbPartitaMagList; + } + + public DialogInputQuantityV2DTO setMtbPartitaMagList(List mtbPartitaMagList) { + this.mtbPartitaMagList = mtbPartitaMagList; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java index 0aa33da3..ba92bce0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java @@ -27,6 +27,7 @@ import com.pedromassango.doubleclick.DoubleClickListener; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.util.Objects; import javax.inject.Inject; import javax.inject.Singleton; @@ -177,6 +178,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia .setSuggestPartitaMagRunnable(mDialogInputQuantityV2DTO.getSuggestPartitaMag()) .setDataScad(mDialogInputQuantityV2DTO.getDataScad()) .setDisableTracciabilitaCheck(mDialogInputQuantityV2DTO.isDisableTracciabilitaCheck()) + .setmPartitaMagList(mDialogInputQuantityV2DTO.getMtbPartitaMagList()) .setStatoArt(mDialogInputQuantityV2DTO.getStatoPartitaMag() != null ? mDialogInputQuantityV2DTO.getStatoPartitaMag().getStatoArt() : null); mBindings.setView(this); @@ -301,7 +303,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> { if (this.mEnableDataCallback) { - this.mViewModel.setPartitaMag(value); + this.mViewModel.setNewPartitaMag(value); } }); @@ -403,7 +405,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia UtilityObservable.addPropertyChanged(this.mViewModel.blockedQtaTot, (value) -> { toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value); - if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) { + if (Objects.requireNonNull(this.mViewModel.mtbAart.get()).isFlagQtaCnfFissaBoolean()) { this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value); } else { if (value) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 6b7af810..dc2f3a77 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -4,8 +4,13 @@ import androidx.databinding.ObservableField; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Optional; import java.util.concurrent.FutureTask; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Stream; import javax.inject.Inject; @@ -100,6 +105,8 @@ public class DialogInputQuantityV2ViewModel { private StatoPartitaMag statoArt; + private List mPartitaMagList; + @Inject public DialogInputQuantityV2ViewModel(BarcodeRESTConsumer barcodeRESTConsumer, MagazzinoRESTConsumer magazzinoRESTConsumer) { this.mBarcodeRESTConsumer = barcodeRESTConsumer; @@ -354,6 +361,11 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setmPartitaMagList(List mPartitaMagList) { + this.mPartitaMagList = mPartitaMagList; + return this; + } + public DialogInputQuantityV2ViewModel setWarnOnQuantityOverflow(boolean warnOnQuantityOverflow) { this.warnOnQuantityOverflow = warnOnQuantityOverflow; return this; @@ -378,6 +390,37 @@ public class DialogInputQuantityV2ViewModel { return this; } + public void setNewPartitaMag(String internalPartitaMag) { + this.internalPartitaMag = internalPartitaMag; + + if (mPartitaMagList != null && SettingsManager.iDB().isSuggestDataScad()){ + Optional partitaMag = mPartitaMagList.stream() + .filter(x -> x.getPartitaMag().equalsIgnoreCase(internalPartitaMag)) + .findFirst(); + + if (partitaMag.isPresent()){ + setNewDataScad(partitaMag.get().getDataScad()); + } else { + MtbAart localMtbAart = mtbAart.get(); + LocalDate dataScad = null; + + if (localMtbAart != null && localMtbAart.getGgScadPartita() != null && localMtbAart.getGgScadPartita() > 0) { + dataScad = UtilityDate.getNow(); + dataScad.plusDays(localMtbAart.getGgScadPartita()); + } + + setNewDataScad(dataScad); + } + } + + this.mListener.onDataChanged(); + } + + public void setNewDataScad(LocalDate internalDataScad) { + this.internalDataScad = internalDataScad; + this.mListener.onDataChanged(); + } + public DialogInputQuantityV2ViewModel setDataScad(LocalDate internalDataScad) { this.internalDataScad = internalDataScad; return this; From c6975badceaa0b3f96b3be6d4da13272517e2cb6 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Mon, 22 Jul 2024 09:09:27 +0200 Subject: [PATCH 16/19] -> v1.40.28 (445) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5f786a03..1f758b62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 444 - def appVersionName = '1.40.27' + def appVersionCode = 445 + def appVersionName = '1.40.28' signingConfigs { release { From 64e38ce05a114a165b70c5cf16897efb13d79bc1 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 26 Jul 2024 16:28:16 +0200 Subject: [PATCH 17/19] Aggiunto log eccezione in fase di ExportLog --- .../integrywmsnative/gest/settings/MainSettingsFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index 1e622974..1498835d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -18,6 +18,7 @@ import androidx.preference.PreferenceFragmentCompat; import androidx.sqlite.db.SimpleSQLiteQuery; import com.annimon.stream.Stream; +import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.harrysoft.androidbluetoothserial.BluetoothManager; import java.io.BufferedReader; @@ -294,6 +295,8 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null) .show(requireActivity().getSupportFragmentManager(), "tag"); }); + + FirebaseCrashlytics.getInstance().recordException(ex); } }); }) From 5a147fb0de9a5c588079b5be2c9d6b53e1c1bb4e Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 26 Jul 2024 16:55:57 +0200 Subject: [PATCH 18/19] Mini-improvement --- .../gest/settings/MainSettingsFragment.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java index 1498835d..03c4044b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java @@ -27,7 +27,9 @@ import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.List; import java.util.concurrent.ExecutorService; @@ -237,9 +239,10 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT File logFilePath = appContext.getLogFilePath(); var files = logFilePath.listFiles(); - var fileToShare = Stream.of(files) - .sortBy(x -> -1 * x.lastModified()) - .findFirstOrElse(null); + var fileToShare = Arrays.stream(files) + .sorted(Comparator.reverseOrder()) + .findFirst() + .orElse(null); try { List attachmentDTOList = new ArrayList<>(); From f65e69b745934738246c21c5dbcae2b0c07f2516 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Fri, 26 Jul 2024 16:58:10 +0200 Subject: [PATCH 19/19] -> v1.40.29 (446) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1f758b62..680b4b17 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 445 - def appVersionName = '1.40.28' + def appVersionCode = 446 + def appVersionName = '1.40.29' signingConfigs { release {