From 44b9bc3fc1ff93501de31499091669966595a706 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 3 Sep 2024 10:19:07 +0200 Subject: [PATCH 1/7] Migliorato documento di reso quando effettuano le perdite --- .../rest/consumers/DocumentRESTConsumer.java | 4 +- .../DocumentiRESTConsumerService.java | 5 +- .../core/settings/DBSettingsModel.java | 12 ++++- .../core/settings/SettingsManager.java | 6 +++ .../DocInterniViewModel.java | 51 ++++++++++--------- .../dialog/DialogSelectDocInfoViewModel.java | 7 ++- 6 files changed, 54 insertions(+), 31 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 fc6643db..10ebd3ea 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 @@ -51,9 +51,9 @@ public class DocumentRESTConsumer extends _BaseRESTConsumer { }); } - public void checkFrumaDocument(String fornitore, String numDoc, String dataDoc, RunnableArgs onComplete, RunnableArgs onFailed) { + public void checkDocument(String fornitore, String numDoc, String dataDoc, String tipoDoc, RunnableArgs onComplete, RunnableArgs onFailed) { var inventarioRESTConsumerService = RESTBuilder.getService(DocumentiRESTConsumerService.class); - inventarioRESTConsumerService.checkFrumaDoc(fornitore, numDoc, dataDoc) + inventarioRESTConsumerService.checkDocument(fornitore, numDoc,tipoDoc, dataDoc) .enqueue(new Callback<>() { @Override public void onResponse(@NonNull Call> call, @NonNull Response> response) { 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 bfd9d899..615efda1 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 @@ -21,10 +21,11 @@ public interface DocumentiRESTConsumerService { @POST("createDocFromColli") Call> createDocFromColli(@Body LoadColliDTO listColli); - @GET("wms/documento/checkFruma") - Call> checkFrumaDoc( + @GET("wms/documento/checkDoc") + Call> checkDocument( @Query("fornitore") String fornitore, @Query("numDoc") String numDoc, + @Query("tipoDoc") String tipoDoc, @Query("dataDoc") String dataDoc); @GET("wms/documento/arts") 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 5f2448bb..aaec3140 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 @@ -76,13 +76,12 @@ public class DBSettingsModel { private boolean flagProduzioneShowInfo = false; private boolean flagAccettazioneBollaUseQtaOrd = true; private boolean flagWarningNewPartitaMag = false; - private boolean flagTracciamentoImballiCaricoEnabled = false; private boolean flagTracciamentoImballiScaricoEnabled = false; private boolean flagPickingLiberoEnableScanArt = false; private boolean flagAskDuplicateUDSSpedizione = false; - private boolean suggestDataScad = false; + private String docInterniRequestNumDoc; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -695,4 +694,13 @@ public class DBSettingsModel { this.suggestDataScad = suggestDataScad; return this; } + + public String getDocInterniRequestNumDoc() { + return docInterniRequestNumDoc; + } + + public DBSettingsModel setDocInterniRequestNumDoc(String docInterniRequestNumDoc) { + this.docInterniRequestNumDoc = docInterniRequestNumDoc; + 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 7a85f68a..af8b9d70 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 @@ -557,6 +557,12 @@ public class SettingsManager { dbSettingsModelIstance.setFlagTracciamentoImballiScaricoEnabled(!UtilityString.isNullOrEmpty(data)); })); + stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) + .setGestName("PVM") + .setSection("DOC_INTERNI") + .setKeySection("REQUEST_NUM_DOC") + .setSetter(dbSettingsModelIstance::setDocInterniRequestNumDoc)); + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); 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 ffcda8a5..f050a63c 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 @@ -105,31 +105,34 @@ public class DocInterniViewModel { this.numDoc = selection.getNumDoc() != null ? selection.getNumDoc().toString() : null; this.note = selection.getNote(); - 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); - }); + String codAnag = null; + if (fornitore != null){ + codAnag = fornitore.getCodAnag(); } + + String codDtip = null; + if (dtbTipi != null){ + codDtip = dtbTipi.getCodDtip(); + } + + documentRESTConsumer.checkDocument( + codAnag, + numDoc, + UtilityDate.formatDate(dataDoc, "yyyy/MM/dd"), + codDtip, + 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 + ); } public void fetchProducts(Runnable onComplete) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java index 3edb1a81..ec74bfa4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dialog/DialogSelectDocInfoViewModel.java @@ -3,10 +3,13 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.dialog; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.DocumentRequiredException; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.exception.FornitoreRequiredException; @@ -33,9 +36,11 @@ public class DialogSelectDocInfoViewModel extends ViewModel { private final MutableLiveData noteRequired = new MutableLiveData<>(false); public DialogSelectDocInfoViewModel() { + List requestNumDocList = Arrays.asList(SettingsManager.iDB().getDocInterniRequestNumDoc().split("\\|")); + tipoDoc.observeForever(val -> fornitoreRequired.postValue(val != null && (val.getGestioneDoc().equals("T") || val.getGestioneDoc().equals("A") || (val.getGestioneDoc().equals("P") && !val.getGestione().equals("L"))))); - tipoDoc.observeForever(val -> documentRequired.postValue(val != null && val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L"))); + tipoDoc.observeForever(val -> documentRequired.postValue(val != null && (val.getGestioneDoc().equalsIgnoreCase("P") && !val.getGestione().equalsIgnoreCase("L")) || requestNumDocList.contains(Objects.requireNonNull(val).getCodDtip()))); tipoDoc.observeForever(val -> noteRequired.postValue(val != null && val.getGestioneDoc().equals("P") && val.getGestione().equals("L"))); } From d897c83165beadc542b5697a892d5f313ab93a10 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Wed, 4 Sep 2024 12:56:24 +0200 Subject: [PATCH 2/7] Cambiato messaggio di warning per check documenti interni --- .../gest/contab_doc_interni/DocInterniViewModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f050a63c..075a84af 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 @@ -122,7 +122,7 @@ public class DocInterniViewModel { codDtip, data -> { if (!data) { - this.sendWarning(UtilityResources.getString(R.string.no_doc_found_message), this::init); + this.sendWarning("Documento di riferimento non trovato!", this::init); } else { action.run(); this.sendOnLoadingStarted(); From 7b1f58412ab1147188a666f627ae84172238f3ff Mon Sep 17 00:00:00 2001 From: MarcoE Date: Fri, 13 Sep 2024 09:42:38 +0200 Subject: [PATCH 3/7] -> v1.40.30 (447) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 680b4b17..898a04a4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 446 - def appVersionName = '1.40.29' + def appVersionCode = 447 + def appVersionName = '1.40.30' signingConfigs { release { From 4e95f4f9c9a38907c8aa72b99f183f95d6ba2351 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Mon, 16 Sep 2024 09:32:36 +0200 Subject: [PATCH 4/7] =?UTF-8?q?Aggiunto=20dialog=20per=20il=20suggerimento?= =?UTF-8?q?=20dei=20lotti=20gi=C3=A0=20esistenti=20nei=20documenti=20inter?= =?UTF-8?q?ni?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainApplicationComponent.java | 4 + .../dto/RetrieveLottiDTO.java | 37 ++++++ .../contab_doc_interni/dto/TipoDocDTO.java | 10 ++ .../edit_form/DocInterniEditFormActivity.java | 26 ++++ .../DocInterniEditFormViewModel.java | 12 +- .../DialogSelectLottiComponent.java | 14 ++ .../DialogSelectLottiItemListModel.java | 54 ++++++++ .../selectLotti/DialogSelectLottiModule.java | 14 ++ .../selectLotti/DialogSelectLottiView.java | 123 ++++++++++++++++++ .../DialogSelectLottiViewModel.java | 5 + .../rest/DocInterniRESTConsumer.java | 20 +++ .../rest/DocInterniRESTConsumerService.java | 8 ++ .../main/res/layout/dialog_select_lotti.xml | 43 ++++++ .../dialog_select_lotti__item_model.xml | 79 +++++++++++ 14 files changed, 448 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/RetrieveLottiDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiItemListModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiViewModel.java create mode 100644 app/src/main/res/layout/dialog_select_lotti.xml create mode 100644 app/src/main/res/layout/dialog_select_lotti__item_model.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 40a6eb59..13acc45b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -29,6 +29,8 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniE import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiComponent; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiModule; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; import it.integry.integrywmsnative.gest.inventario.ElencoInventariComponent; @@ -186,6 +188,7 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc DialogSelectDocInfoModule.class, DocInterniEditFormModule.class, DialogSelectDocRowsModule.class, + DialogSelectLottiModule.class, DialogAskClienteModule.class, DialogEditArticoloModule.class, DialogPrintOrderSSCCListModule.class, @@ -332,6 +335,7 @@ public interface MainApplicationComponent { DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent(); DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent(); + DialogSelectLottiComponent.Factory dialogSelectLottiComponent(); DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/RetrieveLottiDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/RetrieveLottiDTO.java new file mode 100644 index 00000000..48a72886 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/RetrieveLottiDTO.java @@ -0,0 +1,37 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dto; + +import java.util.Date; + +public class RetrieveLottiDTO { + + private String codProd; + private String partitaMag; + private Date dataScad; + + public String getCodProd() { + return codProd; + } + + public RetrieveLottiDTO setCodProd(String codProd) { + this.codProd = codProd; + return this; + } + + public String getPartitaMag() { + return partitaMag; + } + + public RetrieveLottiDTO setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public Date getDataScad() { + return dataScad; + } + + public RetrieveLottiDTO setDataScad(Date dataScad) { + this.dataScad = dataScad; + return this; + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java index 9bdc17a5..e039c42e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/TipoDocDTO.java @@ -8,6 +8,7 @@ public class TipoDocDTO { private String gestioneDoc; private boolean flagChkTracciabilita; private boolean requireNote = false; + private boolean suggestLotti; public String getCodDtip() { return codDtip; @@ -62,4 +63,13 @@ public class TipoDocDTO { this.flagChkTracciabilita = flagChkTracciabilita; return this; } + + public boolean isSuggestLotti() { + return suggestLotti; + } + + public TipoDocDTO setSuggestLotti(boolean suggestLotti) { + this.suggestLotti = suggestLotti; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index df254bd2..818c5109 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -42,6 +42,8 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDT import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsItemListModel; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiItemListModel; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView; import it.integry.integrywmsnative.view.dialogs.DialogCommon; @@ -302,6 +304,30 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter .setFlagDig(isUntMisDig ? "S" : "N"); mtbAart.setMtbUntMis(Collections.singletonList(mtbUntMis)); + if (this.viewModel.getTipoDoc().isSuggestLotti()) { + this.viewModel.retrieveLotti(row.getCodMart(), lotti -> { + var dataSet = + Stream.of(lotti) + .map(x -> new DialogSelectLottiItemListModel<>() + .setPartitaMag(x.getPartitaMag()) + .setDataScad(UtilityDate.toLocalDate(x.getDataScad())) + .setOriginalModel(x) + ) + .toList(); + + DialogSelectLottiView.newInstance(dataSet, data -> { + row.setPartitaMag(data.getPartitaMag()); + row.setDataScad(data.getDataScad()); + + openInputQuantity(mtbAart, row, flagTracciabilita); + }, () -> {}).show(this.getSupportFragmentManager(), "dialogSelectLotti");; + }); + } else { + openInputQuantity(mtbAart, row, flagTracciabilita); + } + } + + private void openInputQuantity(MtbAart mtbAart, SqlMtbColr row, boolean flagTracciabilita) { DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() .setMtbAart(mtbAart) .setInitialNumCnf(BigDecimal.valueOf(row.getNumCnf())) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index c8133c7e..5bc2e564 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -19,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSour import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.exception.NoResultFromCodMartException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; @@ -32,6 +33,7 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dto.CheckFornitoreDTO import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; 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.RetrieveLottiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipoDocDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; @@ -126,7 +128,7 @@ public class DocInterniEditFormViewModel { } public void loadArticoloByCodMartOrBarcode(String codMart) { - if(productsList == null) { + if (productsList == null) { this.sendError(new NoResultFromCodMartException(codMart)); return; } @@ -372,6 +374,10 @@ public class DocInterniEditFormViewModel { } } + public void retrieveLotti(String codProd, RunnableArgs> onComplete) { + docInterniRESTConsumer.retrieveLotti(codProd, onComplete, this::sendError); + } + public void deleteRow(SqlMtbColr sqlMtbColr) { mtbColrRepository.delete(sqlMtbColr, this::fetchDocumentRows, this::sendError); } @@ -397,6 +403,10 @@ public class DocInterniEditFormViewModel { return this; } + public TipoDocDTO getTipoDoc() { + return tipoDoc; + } + public boolean isNotesMandatory() { return this.tipoDoc != null && this.tipoDoc.isRequireNote(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiComponent.java new file mode 100644 index 00000000..a9fba546 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSelectLottiComponent { + + @Subcomponent.Factory + interface Factory { + DialogSelectLottiComponent create(); + } + + void inject(DialogSelectLottiView dialogSelectLottiView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiItemListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiItemListModel.java new file mode 100644 index 00000000..30c23c15 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiItemListModel.java @@ -0,0 +1,54 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti; + +import java.time.LocalDate; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.utility.UtilityDate; + +public class DialogSelectLottiItemListModel { + + private String partitaMag; + private LocalDate dataScad; + private T originalModel; + private BindableBoolean checked = new BindableBoolean(false); + + public String getPartitaMag() { + return partitaMag; + } + + public DialogSelectLottiItemListModel setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public LocalDate getDataScad() { + return dataScad; + } + + public String getDataScadText() { + return UtilityDate.formatDate(this.dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH); + } + + public DialogSelectLottiItemListModel setDataScad(LocalDate dataScad) { + this.dataScad = dataScad; + return this; + } + + public T getOriginalModel() { + return originalModel; + } + + public DialogSelectLottiItemListModel setOriginalModel(T originalModel) { + this.originalModel = originalModel; + return this; + } + + public BindableBoolean getChecked() { + return checked; + } + + public DialogSelectLottiItemListModel setChecked(BindableBoolean checked) { + this.checked = checked; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiModule.java new file mode 100644 index 00000000..f66deab7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogSelectLottiComponent.class) +public class DialogSelectLottiModule { + + @Provides + DialogSelectLottiViewModel providesDialogSelectLottiViewModel() { + return new DialogSelectLottiViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiView.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiView.java new file mode 100644 index 00000000..18a4c9ff --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiView.java @@ -0,0 +1,123 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.annimon.stream.Stream; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.ravikoradiya.liveadapter.LiveAdapter; +import com.ravikoradiya.liveadapter.Type; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogSelectLottiBinding; +import it.integry.integrywmsnative.databinding.DialogSelectLottiItemModelBinding; + +/** + * @noinspection rawtypes + */ +public class DialogSelectLottiView extends BaseDialogFragment { + @Inject + DialogSelectLottiViewModel mViewModel; + + private DialogSelectLottiBinding mBindings; + private Context mContext; + + private final List> listLotti; + private final RunnableArgs onConfirm; + private final Runnable onAbort; + + public static DialogSelectLottiView newInstance(List> listLotti, + RunnableArgs onConfirm, + Runnable onAbort) { + return new DialogSelectLottiView(listLotti, onConfirm, onAbort); + } + + private DialogSelectLottiView(List> listLotti, + RunnableArgs onConfirm, + Runnable onAbort) { + super(); + + this.listLotti = listLotti; + this.onConfirm = onConfirm; + this.onAbort = onAbort; + } + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogSelectLottiBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .dialogSelectLottiComponent() + .create() + .inject(this); + + setCancelable(false); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + final DialogSelectLottiItemListModel selectedItem = Stream.of(listLotti) + .filter(x -> x.getChecked().get()) + .findFirstOrElse(null); + if (selectedItem != null) + this.onConfirm.run(selectedItem); + }) + .setNegativeButton(R.string.abort, (dialog, which) -> { + if (this.onAbort != null) this.onAbort.run(); + }) + .create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + this.listLotti.get(0).getChecked().set(true); + this.initRecyclerView(); + } + + private void initRecyclerView() { + var itemType = new Type(R.layout.dialog_select_lotti__item_model, BR.row); + itemType.areContentsTheSame(DialogSelectLottiItemListModel::equals); + itemType.onClick(x -> { + resetChecks(); + x.getBinding().getRow().getChecked().set(true); + + return null; + }); + + new LiveAdapter(listLotti) + .map(DialogSelectLottiItemListModel.class, itemType) + .into(this.mBindings.itemList); + } + + private void resetChecks() { + for (var item : listLotti) { + item.getChecked().set(false); + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiViewModel.java new file mode 100644 index 00000000..04ec8824 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectLotti/DialogSelectLottiViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti; + +public class DialogSelectLottiViewModel { + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java index a51de127..d9bb33a5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java @@ -1,5 +1,9 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.rest; +import androidx.annotation.NonNull; + +import java.util.List; + import javax.inject.Singleton; import it.integry.integrywmsnative.core.exception.RestException; @@ -9,6 +13,7 @@ import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.RetrieveLottiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; import retrofit2.Callback; @@ -38,6 +43,21 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer { }); } + public void retrieveLotti(String codProd, RunnableArgs> onComplete, RunnableArgs onFailed) { + DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class); + service.retrieveLotti(codProd) + .enqueue(new Callback<>() { + @Override + public void onResponse(@NonNull Call>> call, @NonNull Response>> response) { + analyzeAnswer(response, "retrieveLotti", onComplete, onFailed); + } + + @Override + public void onFailure(@NonNull Call>> call, @NonNull Throwable t) { + onFailed.run(new RestException(t.getMessage())); + } + }); + } public void saveDoc(SaveDTO saveDTO, Runnable onComplete, RunnableArgs onFailed) { magazzinoRESTConsumer.saveTerminalinoWMS(saveDTO, onComplete, onFailed); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumerService.java index 03ac0727..5c2798bd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumerService.java @@ -1,9 +1,14 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.rest; +import java.util.List; + import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.documento.RetrieveDocumentoArtsResponseDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.RetrieveLottiDTO; import retrofit2.Call; import retrofit2.http.GET; +import retrofit2.http.Query; public interface DocInterniRESTConsumerService { @@ -11,4 +16,7 @@ public interface DocInterniRESTConsumerService { @GET("getDocInterniSetup") Call> getSetupDocInterni(); + @GET("wms/documento/retrieveLotti") + Call>> retrieveLotti( + @Query("codProd") String codProd); } diff --git a/app/src/main/res/layout/dialog_select_lotti.xml b/app/src/main/res/layout/dialog_select_lotti.xml new file mode 100644 index 00000000..6055b875 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_lotti.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_lotti__item_model.xml b/app/src/main/res/layout/dialog_select_lotti__item_model.xml new file mode 100644 index 00000000..af077969 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_lotti__item_model.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 34e1ba8f9552cf5b9bc9220ebe99f250e7e73250 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 17 Sep 2024 18:33:22 +0200 Subject: [PATCH 5/7] -> v1.41.00 (448) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 898a04a4..3e33d4d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 447 - def appVersionName = '1.40.30' + def appVersionCode = 448 + def appVersionName = '1.41.00' signingConfigs { release { From 03e2f4390bdc1ee8b5123a94ed0115e9782ef531 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 3 Oct 2024 16:41:40 +0200 Subject: [PATCH 6/7] Cambiato oggetto email log --- .../integrywmsnative/gest/settings/MainSettingsFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 03c4044b..5590dbd4 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 @@ -279,8 +279,8 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT var mailRequest = new MailRequestDTO() .setTo("developer@integry.it") - .setMsgText("Questo è una mail che contiene il log del WMS") - .setSubject("U vuemmeess") + .setMsgText("Questa è una mail contenente il log del WMS") + .setSubject("Internal WMS log") .setAttachments(attachmentDTOList); From 7c14688ef35f886804af3263576015c29362569a Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 3 Oct 2024 16:44:57 +0200 Subject: [PATCH 7/7] -> v1.41.01 (449) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3e33d4d7..197a06ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 448 - def appVersionName = '1.41.00' + def appVersionCode = 449 + def appVersionName = '1.41.01' signingConfigs { release {