From 7ee59ea81498b3cf697ad91fd9fd7445f72fe298 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 16 Sep 2024 10:33:59 +0200 Subject: [PATCH] Implementata richiesta commessa in PickingLibero di Lavorazione. Implementato servizio di spostamento arts tra UL in PickingLibero. Implementata generazione documenti in CloseUDS in PickingLibero. --- .idea/deploymentTargetSelector.xml | 8 + app/build.gradle | 14 +- .../MainApplicationComponent.java | 7 +- .../configs/MenuConfiguration.java | 8 +- .../integrywmsnative/core/model/JtbComt.java | 10 + .../consumers/ColliMagazzinoRESTConsumer.java | 58 +-- .../ColliMagazzinoRESTConsumerService.java | 3 +- .../rest/model/CriterioDistribuzioneEnum.java | 42 ++ .../rest/model/SpostaArtsTraULRequestDTO.java | 10 + .../model/SpostaArtsTraULResponseDTO.java | 18 + .../rest/model/uds/CloseUDSRequestDTO.java | 43 ++ .../rest/model/uds/CloseUDSResponseDTO.java | 6 + .../model/uds/InsertUDSRowRequestDTO.java | 11 + .../core/settings/DBSettingsModel.java | 50 +++ .../core/settings/SettingsManager.java | 29 ++ .../AccettazioneBollaPickingViewModel.java | 383 ++++-------------- .../AccettazioneOrdiniPickingActivity.java | 6 +- .../AccettazioneOrdiniPickingViewModel.java | 81 ++-- .../AccettazioneOrdiniPickingListAdapter.java | 12 +- .../picking_libero/PickingLiberoFragment.java | 15 +- .../PickingLiberoViewModel.java | 116 +++--- .../ProdRecuperoMaterialeFragment.java | 1 + .../ProdRecuperMaterialeRESTConsumer.java | 17 +- .../ui/HistoryULsListAdapter.java | 8 +- .../ui/HistoryULsListModel.java | 10 + .../ProdRientroMerceViewModel.java | 12 +- .../ProdRientroMerceOrderDetailFragment.java | 21 +- .../ProdRientroMerceOrderDetailViewModel.java | 53 ++- .../ImportColliDaProduzioneRequestDTO.java | 7 +- .../ProdRiposizionamentoDaProdViewModel.java | 13 +- .../gest/spedizione/SpedizioneActivity.java | 11 +- .../gest/spedizione/SpedizioneViewModel.java | 63 ++- .../spedizione/ui/SpedizioneListAdapter.java | 19 +- .../VersamentoMerceViewModel.java | 3 +- ...leAutoCompleteTwoLinesDropdownAdapter.java | 45 +- ...AutoCompleteTwoLinesDropdownListModel.java | 5 + ...AskCliente_Page1_Cliente_ArrayAdapter.java | 2 +- .../DialogAskCommessaComponent.java | 14 + .../ask_commessa/DialogAskCommessaModule.java | 15 + .../ask_commessa/DialogAskCommessaView.java | 168 ++++++++ .../DialogAskCommessaViewModel.java | 69 ++++ .../DialogInputLUProdTipoColloAdapter.java | 14 +- app/src/main/res/drawable/ic_puzzle.xml | 9 + .../main/res/layout/dialog_ask_commessa.xml | 100 +++++ ...ropdown_simple_item_w_subtitle_bottom.xml} | 0 ...agment_prod_rientro_merce_order_detail.xml | 33 +- .../prod_recupero_materiale_list_item.xml | 101 +++-- app/src/main/res/values/custom_colors.xml | 4 + barcode_base_android_library/build.gradle | 2 +- build.gradle | 8 +- gradle/wrapper/gradle-wrapper.properties | 2 +- honeywellscannerlibrary/build.gradle | 2 +- keyobardemulatorscannerlibrary/build.gradle | 2 +- pointmobilescannerlibrary/build.gradle | 2 +- zebrascannerlibrary/build.gradle | 2 +- 55 files changed, 1166 insertions(+), 601 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java create mode 100644 app/src/main/res/drawable/ic_puzzle.xml create mode 100644 app/src/main/res/layout/dialog_ask_commessa.xml rename app/src/main/res/layout/{dropdown_simple_item_w_subtitle.xml => dropdown_simple_item_w_subtitle_bottom.xml} (100%) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef36..f23a4811 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/app/build.gradle b/app/build.gradle index 898a04a4..1a514540 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,7 +92,7 @@ android { } dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2' implementation fileTree(include: ['*.jar'], dir: 'libs') androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', { exclude group: 'com.android.support', module: 'support-annotations' @@ -103,16 +103,16 @@ dependencies { //Firebase // Import the Firebase BoM - implementation platform('com.google.firebase:firebase-bom:32.8.1') + implementation platform('com.google.firebase:firebase-bom:33.2.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-crashlytics' implementation 'com.google.firebase:firebase-perf' - implementation 'com.google.android.gms:play-services-basement:18.3.0' + implementation 'com.google.android.gms:play-services-basement:18.4.0' - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.3.2' @@ -127,12 +127,12 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.annimon:stream:1.2.2' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.5' // implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'org.apache.commons:commons-text:1.9' //MVVM - def dagger2_version = '2.46.1' + def dagger2_version = '2.49' api "com.google.dagger:dagger:$dagger2_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version" api "com.google.dagger:dagger-android:$dagger2_version" diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 40a6eb59..b7c4950a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -110,6 +110,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaComponent; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaModule; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule; import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent; @@ -215,7 +217,8 @@ import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracc DialogInfoGiacenzaModule.class, ArticoliInGiacenzaModule.class, DialogTracciamentoImballiModule.class, - DialogAskVettoreModule.class + DialogAskVettoreModule.class, + DialogAskCommessaModule.class }) public interface MainApplicationComponent { @@ -361,6 +364,8 @@ public interface MainApplicationComponent { DialogAskVettoreComponent.Factory dialogAskVettoreComponent(); + DialogAskCommessaComponent.Factory dialogAskCommessaComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 64edbc2a..f5319e45 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -88,7 +88,8 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.free_picking) .setTitleIcon(R.drawable.ic_dashboard_picking_libero) .setDrawerIcon(R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA, + SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, false))) .addItem(new MenuItem() .setID(R.id.nav_resi_cliente) @@ -124,7 +125,8 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.free_lav_picking) .setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero) .setDrawerIcon(R.drawable.ic_black_barcode_scanner) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE, + SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, SettingsManager.iDB().isFlagAskCommessaInPickingLiberoLav()))) .addItem(new MenuItem() .setID(R.id.nav_prod_posizionamento_da_ord) @@ -180,7 +182,7 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setTitleText(R.string.prod_versamento_su_ordine_title_fragment) .setTitleIcon(R.drawable.ic_dashboard_prod_versamento_su_ord) .setDrawerIcon(R.drawable.ic_black_external) - .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true))) + .setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true, false))) .addItem(new MenuItem() .setID(R.id.nav_prod_riposizionamento_da_ord) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java index 444ddfb4..b1b7dd54 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/JtbComt.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.model; public class JtbComt extends EntityBase { private String codJcom; + private String codAnag; private String codJfas; private String codJflav; private String descrizione; @@ -20,6 +21,15 @@ public class JtbComt extends EntityBase { return this; } + public String getCodAnag() { + return codAnag; + } + + public JtbComt setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + public String getCodJfas() { return codJfas; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index 4249e1fc..05308af2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -31,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -497,38 +498,37 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destMtbColt, Runnable onComplete, RunnableArgs onFailed) { - new Thread(() -> { - MtbColt mtbColtToMoveClone = (MtbColt) sourceMtbColt.clone(); - MtbColt mtbColtDestClone = (MtbColt) destMtbColt.clone(); + public void spostaArtsTraUL(MtbColt sourceMtbColt, MtbColt destMtbColt, boolean flagForceUseRefs, RunnableArgs> onComplete, RunnableArgs onFailed) { + MtbColt mtbColtToMoveClone = (MtbColt) sourceMtbColt.clone(); + MtbColt mtbColtDestClone = (MtbColt) destMtbColt.clone(); - for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { - mtbColtToMoveClone.getMtbColr().get(i) - .setMtbAart(null) - .setMtbPartitaMag(null); + for (int i = 0; i < mtbColtToMoveClone.getMtbColr().size(); i++) { + mtbColtToMoveClone.getMtbColr().get(i) + .setMtbAart(null) + .setMtbPartitaMag(null); + } + + mtbColtDestClone.setMtbColr(null); + + SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO = new SpostaArtsTraULRequestDTO() + .setSourceMtbColt(mtbColtToMoveClone) + .setDestinationMtbColt(mtbColtDestClone) + .setFlagForceUseRefs(flagForceUseRefs); + + ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); + colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "spostaArtsTraUL", data -> { + onComplete.run(data.getGeneratedMtbColr()); + }, onFailed); } - mtbColtDestClone.setMtbColr(null); - - SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO = new SpostaArtsTraULRequestDTO() - .setSourceMtbColt(mtbColtToMoveClone) - .setDestinationMtbColt(mtbColtDestClone); - - ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); - colliMagazzinoRESTConsumerService.spostaArtsTraUL(spostaArtsTraULRequestDTO).enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "spostaArtsTraUL", data -> { - onComplete.run(); - }, onFailed); - } - - @Override - public void onFailure(Call> call, Throwable t) { - if (onFailed != null) onFailed.run(new Exception(t)); - } - }); - }).start(); + @Override + public void onFailure(Call> call, Throwable t) { + if (onFailed != null) onFailed.run(new Exception(t)); + } + }); } public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs onFailed) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java index 1e13a7d0..d8c1589d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java @@ -7,6 +7,7 @@ import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.rest.model.RettificaULDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULRequestDTO; +import it.integry.integrywmsnative.core.rest.model.SpostaArtsTraULResponseDTO; import it.integry.integrywmsnative.core.rest.model.VersamentoAutomaticoULResponseDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanULBeDeletedRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; @@ -35,7 +36,7 @@ public interface ColliMagazzinoRESTConsumerService { Call> spostaULInPosizione(@Query("codMdep") String codMdep, @Query("posizione") String posizione, @Body MtbColt mtbColtToMove); @POST("wms/spostaArtsTraUL") - Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); + Call> spostaArtsTraUL(@Body SpostaArtsTraULRequestDTO spostaArtsTraULRequestDTO); @POST("wms/assegnaLottoSuColloScarico") Call> assegnaLottoSuColloScarico(@Body MtbColt mtbColt); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java new file mode 100644 index 00000000..a65b3a67 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/CriterioDistribuzioneEnum.java @@ -0,0 +1,42 @@ +package it.integry.integrywmsnative.core.rest.model; + +import com.google.gson.annotations.SerializedName; + +public enum CriterioDistribuzioneEnum { + @SerializedName("U") + U("U"), //AGGIORNA IL COLLO ESISTENTE + + @SerializedName("O") + O("O"), //DIVIDE IL COLLO INIZIALE PER ORDINE + + @SerializedName("G") + G("G"), //DIVIDE IL COLLO INIZIALE PER IL GRUPPO BOLLA DEGLI ARTICOLI + + @SerializedName("UP") + UP("UP"), //SI TRATTA DI UN COLLO DI LAVORAZIONE CHE HA SULLE RIGHE I RIFERIMENTI DELL'ORDINE DI PRODUZIONE (GESTIONE_RIF = 'A') + //E VIENE LANCIATA LA NORMALE DISTRIBUZIONE MA NELL'AGGIORNARE IL COLLO VENGONO LETTI I RIFERIMENTI DELL'ORDINE DI LAVORAZIOKNE + // A CUI LA CHIAVE DATA,NUMERO E RIGA ORDINE FANNO RIFERIMENTO + + + @SerializedName("FASE") + FASE("FASE"); + + private final String text; + + CriterioDistribuzioneEnum(String text) { + this.text = text; + } + + + public String getText() { + return this.text; + } + + public static CriterioDistribuzioneEnum fromString(String text) { + for (CriterioDistribuzioneEnum b : CriterioDistribuzioneEnum.values()) { + if (b.text.equalsIgnoreCase(text)) return b; + } + return null; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java index bb1adb64..a658f79c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULRequestDTO.java @@ -9,6 +9,8 @@ public class SpostaArtsTraULRequestDTO { private MtbColt destinationMtbColt; + private boolean flagForceUseRefs; + public MtbColt getSourceMtbColt() { return sourceMtbColt; } @@ -27,4 +29,12 @@ public class SpostaArtsTraULRequestDTO { return this; } + public boolean isFlagForceUseRefs() { + return flagForceUseRefs; + } + + public SpostaArtsTraULRequestDTO setFlagForceUseRefs(boolean flagForceUseRefs) { + this.flagForceUseRefs = flagForceUseRefs; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java new file mode 100644 index 00000000..457864bd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SpostaArtsTraULResponseDTO.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.rest.model; + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbColr; + +public class SpostaArtsTraULResponseDTO { + private List generatedMtbColr; + + public List getGeneratedMtbColr() { + return generatedMtbColr; + } + + public SpostaArtsTraULResponseDTO setGeneratedMtbColr(List generatedMtbColr) { + this.generatedMtbColr = generatedMtbColr; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java index f53ca7ea..7277828c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSRequestDTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.core.rest.model.uds; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.rest.model.CriterioDistribuzioneEnum; public class CloseUDSRequestDTO { @@ -8,6 +9,20 @@ public class CloseUDSRequestDTO { private String orderCodMdep; private MtbColt mtbColt; + private boolean createDocument; + private String documentCodDtip; + private String documentCodAnag; + + private CriterioDistribuzioneEnum criterioDistribuzione; + + public boolean isCreateDocument() { + return createDocument; + } + + public String getDocumentCodDtip() { + return documentCodDtip; + } + public boolean isPrintSSCC() { return printSSCC; } @@ -34,4 +49,32 @@ public class CloseUDSRequestDTO { this.mtbColt = mtbColt; return this; } + + public CloseUDSRequestDTO setCreateDocument(boolean createDocument) { + this.createDocument = createDocument; + return this; + } + + public CloseUDSRequestDTO setDocumentCodDtip(String documentCodDtip) { + this.documentCodDtip = documentCodDtip; + return this; + } + + public String getDocumentCodAnag() { + return documentCodAnag; + } + + public CloseUDSRequestDTO setDocumentCodAnag(String documentCodAnag) { + this.documentCodAnag = documentCodAnag; + return this; + } + + public CriterioDistribuzioneEnum getCriterioDistribuzione() { + return criterioDistribuzione; + } + + public CloseUDSRequestDTO setCriterioDistribuzione(CriterioDistribuzioneEnum criterioDistribuzione) { + this.criterioDistribuzione = criterioDistribuzione; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java index d24f43f7..c925374e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/CloseUDSResponseDTO.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.model.uds; import java.util.List; +import it.integry.integrywmsnative.core.model.DtbDoct; import it.integry.integrywmsnative.core.model.MtbColt; public class CloseUDSResponseDTO { @@ -9,6 +10,7 @@ public class CloseUDSResponseDTO { private boolean deleted; private List generatedMtbColts; + private DtbDoct generatedDocument; public boolean isSaved() { return saved; @@ -21,4 +23,8 @@ public class CloseUDSResponseDTO { public List getGeneratedMtbColts() { return generatedMtbColts; } + + public DtbDoct getGeneratedDocument() { + return generatedDocument; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java index 4e704c4d..a239437c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/uds/InsertUDSRowRequestDTO.java @@ -18,6 +18,8 @@ public class InsertUDSRowRequestDTO { private String partitaMag; private LocalDate dataScad; + private String codJcom; + public MtbColr getSourceMtbColr() { return sourceMtbColr; } @@ -89,4 +91,13 @@ public class InsertUDSRowRequestDTO { this.dataScad = dataScad; return this; } + + public String getCodJcom() { + return codJcom; + } + + public InsertUDSRowRequestDTO setCodJcom(String codJcom) { + this.codJcom = codJcom; + 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 aaec3140..cadafa1c 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 @@ -21,6 +21,7 @@ public class DBSettingsModel { private boolean flagMultiClienteOrdV; private boolean flagUseCodAnagAziendale; private boolean flagAskClienteInPickingLibero; + private boolean flagAskCommessaInPickingLiberoLav; private boolean flagPickLiberoAllowEmptyCliente; private boolean flagCanAddExtraItemSpedizione; @@ -82,6 +83,10 @@ public class DBSettingsModel { private boolean flagAskDuplicateUDSSpedizione = false; private boolean suggestDataScad = false; private String docInterniRequestNumDoc; + private String produzioneCodDtipCar; + private boolean produzioneGeneraDocCar; + private String produzioneCodDtipScar; + private boolean produzioneGeneraDocScar; public boolean isFlagSpedizioneEnableFakeGiacenza() { return flagSpedizioneEnableFakeGiacenza; @@ -172,6 +177,15 @@ public class DBSettingsModel { return this; } + public boolean isFlagAskCommessaInPickingLiberoLav() { + return flagAskCommessaInPickingLiberoLav; + } + + public DBSettingsModel setFlagAskCommessaInPickingLiberoLav(boolean flagAskCommessaInPickingLiberoLav) { + this.flagAskCommessaInPickingLiberoLav = flagAskCommessaInPickingLiberoLav; + return this; + } + public boolean isFlagPickLiberoAllowEmptyCliente() { return flagPickLiberoAllowEmptyCliente; } @@ -703,4 +717,40 @@ public class DBSettingsModel { this.docInterniRequestNumDoc = docInterniRequestNumDoc; return this; } + + public String getProduzioneCodDtipCar() { + return produzioneCodDtipCar; + } + + public DBSettingsModel setProduzioneCodDtipCar(String produzioneCodDtipCar) { + this.produzioneCodDtipCar = produzioneCodDtipCar; + return this; + } + + public boolean isProduzioneGeneraDocCar() { + return produzioneGeneraDocCar; + } + + public DBSettingsModel setProduzioneGeneraDocCar(boolean produzioneGeneraDocCar) { + this.produzioneGeneraDocCar = produzioneGeneraDocCar; + return this; + } + + public String getProduzioneCodDtipScar() { + return produzioneCodDtipScar; + } + + public DBSettingsModel setProduzioneCodDtipScar(String produzioneCodDtipScar) { + this.produzioneCodDtipScar = produzioneCodDtipScar; + return this; + } + + public boolean isProduzioneGeneraDocScar() { + return produzioneGeneraDocScar; + } + + public DBSettingsModel setProduzioneGeneraDocScar(boolean produzioneGeneraDocScar) { + this.produzioneGeneraDocScar = produzioneGeneraDocScar; + 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 af8b9d70..c390e572 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 @@ -228,6 +228,11 @@ public class SettingsManager { .setSection("PICKING_LIBERO") .setKeySection("FLAG_ASK_CLIENTE") .setSetter(dbSettingsModelIstance::setFlagAskClienteInPickingLibero)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PICKING_LIBERO") + .setKeySection("FLAG_ASK_COMMESSA_LAV") + .setSetter(dbSettingsModelIstance::setFlagAskCommessaInPickingLiberoLav)); stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) .setGestName("PICKING") .setSection("PICKING_LIBERO") @@ -563,6 +568,30 @@ public class SettingsManager { .setKeySection("REQUEST_NUM_DOC") .setSetter(dbSettingsModelIstance::setDocInterniRequestNumDoc)); + stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) + .setGestName("W_PORDI_RC") + .setSection("SETUP_DOCUMENTI") + .setKeySection("COD_DTIP_CAR") + .setSetter(dbSettingsModelIstance::setProduzioneCodDtipCar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PRODUZIONE") + .setKeySection("FLAG_GENERA_DOC_CAR") + .setSetter(dbSettingsModelIstance::setProduzioneGeneraDocCar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(String.class) + .setGestName("W_PORDI_RC") + .setSection("SETUP_DOCUMENTI") + .setKeySection("COD_DTIP_SCAR") + .setSetter(dbSettingsModelIstance::setProduzioneCodDtipScar)); + + stbGestSetupReaderList.add(new StbGestSetupReader<>(Boolean.class) + .setGestName("PICKING") + .setSection("PRODUZIONE") + .setKeySection("FLAG_GENERA_DOC_SCAR") + .setSetter(dbSettingsModelIstance::setProduzioneGeneraDocScar)); + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); 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 6e8b80eb..8acd56d4 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 @@ -92,13 +92,7 @@ public class AccettazioneBollaPickingViewModel { private final List mHistoryUsedAarts = new ArrayList<>(); @Inject - public AccettazioneBollaPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, - BarcodeRESTConsumer barcodeRESTConsumer, - ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, - PrinterRESTConsumer printerRESTConsumer, - AccettazioneBollaPickingRESTConsumer accettazioneBollaPickingRESTConsumer, - ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, - ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { + public AccettazioneBollaPickingViewModel(ArticoloRESTConsumer articoloRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, AccettazioneBollaPickingRESTConsumer accettazioneBollaPickingRESTConsumer, ColliAccettazioneRESTConsumer colliAccettazioneRESTConsumer, ColliLavorazioneRESTConsumer colliLavorazioneRESTConsumer) { this.mArticoloRESTConsumer = articoloRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; @@ -112,20 +106,14 @@ public class AccettazioneBollaPickingViewModel { this.mBolle = bolle; this.mUseQtaBolla = useQtaOrd; - List mSitArts = Stream.of(sitArts) - .filter(x -> - UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO)) - .toList(); + List mSitArts = Stream.of(sitArts).filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaAccettare(), BigDecimal.ZERO)).toList(); getEmptyPickingList(mSitArts, this.mPickingList::postValue); defaultGestioneOfUL = GestioneEnum.ACQUISTO; - var availableCodAnags = bolle.stream() - .map(TestataBollaAccettazioneDTO::getCodAnag) - .distinct() - .collect(Collectors.toList()); + var availableCodAnags = bolle.stream().map(TestataBollaAccettazioneDTO::getCodAnag).distinct().collect(Collectors.toList()); defaultCodAnag = availableCodAnags.size() == 1 ? availableCodAnags.get(0) : null; switch (defaultGestioneOfUL) { @@ -136,27 +124,21 @@ public class AccettazioneBollaPickingViewModel { private void getEmptyPickingList(List sitBolleList, RunnableArgs> onComplete) { - List codMarts = Stream.of(sitBolleList) - .map(SitBollaAccettazioneDTO::getCodMart) - .toList(); + List codMarts = Stream.of(sitBolleList).map(SitBollaAccettazioneDTO::getCodMart).toList(); this.mArticoloRESTConsumer.getByCodMarts(codMarts, listMtbAarts -> { - List pickingList = Stream.of(sitBolleList) - .map(sitBolla -> { - MtbAart mtbAart = null; + List pickingList = Stream.of(sitBolleList).map(sitBolla -> { + MtbAart mtbAart = null; - for (MtbAart mtbAartItem : listMtbAarts) { - if (mtbAartItem.getCodMart().equalsIgnoreCase(sitBolla.getCodMart())) { - mtbAart = mtbAartItem; - break; - } - } + for (MtbAart mtbAartItem : listMtbAarts) { + if (mtbAartItem.getCodMart().equalsIgnoreCase(sitBolla.getCodMart())) { + mtbAart = mtbAartItem; + break; + } + } - return new PickingObjectDTO() - .setSitBollaAccettazione(sitBolla) - .setMtbAart(mtbAart); - }) - .toList(); + return new PickingObjectDTO().setSitBollaAccettazione(sitBolla).setMtbAart(mtbAart); + }).toList(); onComplete.run(pickingList); }, this::sendError); @@ -219,9 +201,7 @@ public class AccettazioneBollaPickingViewModel { try { numCollo = UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()); - this.createNewLU( - numCollo, - CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete); + this.createNewLU(numCollo, CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, true, onComplete); } catch (Exception ex) { this.sendError(ex); } @@ -234,11 +214,7 @@ public class AccettazioneBollaPickingViewModel { } private void processBarcodeNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - this.createNewLU( - null, - null, - false, - () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); + this.createNewLU(null, null, false, () -> processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete)); } private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -301,9 +277,7 @@ public class AccettazioneBollaPickingViewModel { private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - var optionalPos = Stream.of(SettingsManager.iDB().getAvailablePosizioni()) - .filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())) - .findFirst(); + var optionalPos = Stream.of(SettingsManager.iDB().getAvailablePosizioni()).filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue())).findFirst(); this.sendFilterPosizioneApplied(optionalPos.get().getPosizione()); onComplete.run(); @@ -325,9 +299,7 @@ public class AccettazioneBollaPickingViewModel { private void searchArtFromAnag(MtbAart mtbAart, PickDataDTO pickData, Runnable onComplete) { final List pickingList = mPickingList.getValue(); - List matchPickingObject = Stream.of(pickingList) - .filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())) - .toList(); + List matchPickingObject = Stream.of(pickingList).filter(x -> UtilityString.equalsIgnoreCase(mtbAart.getCodMart(), x.getSitBollaAccettazione().getCodMart())).toList(); for (PickingObjectDTO pickingObjectDTO : matchPickingObject) { pickingObjectDTO.setTempPickData(pickData); @@ -344,11 +316,7 @@ public class AccettazioneBollaPickingViewModel { this.manageDispatchBollaRow(matchedRows.get(0)); } else { //So che il codMart sarà solo 1 - var firstCodMart = Stream.of(matchedRows) - .map(x -> x.getSitBollaAccettazione().getCodMart()) - .distinct() - .findFirst() - .get(); + var firstCodMart = Stream.of(matchedRows).map(x -> x.getSitBollaAccettazione().getCodMart()).distinct().findFirst().get(); this.sendFilterCodMartApplied(firstCodMart); } @@ -359,14 +327,7 @@ public class AccettazioneBollaPickingViewModel { if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownBarcodes()) { //TODO: Implementare popup che richiede delle note aggiuntive sul barcode scansionato this.sendOnUnknownBarcodeScanned(barcode, notes -> { - this.manageDispatchBollaRow(new PickingObjectDTO() - .setMtbAart(new MtbAart() - .setDescrizione(notes) - .setDescrizioneEstesa(notes) - .setFlagTracciabilita("N") - .setFlagQtaCnfFissa("S") - .setQtaCnf(BigDecimal.ONE) - .setBarCode(barcode))); + this.manageDispatchBollaRow(new PickingObjectDTO().setMtbAart(new MtbAart().setDescrizione(notes).setDescrizioneEstesa(notes).setFlagTracciabilita("N").setFlagQtaCnfFissa("S").setQtaCnf(BigDecimal.ONE).setBarCode(barcode))); onComplete.run(); }, onComplete); } else { @@ -378,29 +339,19 @@ public class AccettazioneBollaPickingViewModel { private void manageNoArtFound(MtbAart mtbAart, PickDataDTO pickDataDTO) { if (SettingsManager.iDB().isFlagAccettazioneBollaCanAddUnknownItems()) { - this.manageDispatchBollaRow(new PickingObjectDTO() - .setMtbAart(mtbAart) - .setTempPickData(pickDataDTO)); - } else - this.sendError(new NoArtsFoundException()); + this.manageDispatchBollaRow(new PickingObjectDTO().setMtbAart(mtbAart).setTempPickData(pickDataDTO)); + } else this.sendError(new NoArtsFoundException()); } public void createNewLU(Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { this.manageInfoAggiuntiveRequest((additionalNotes, tCol) -> { - final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO() - .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) - .setAnnotazioni(additionalNotes) - .setCodTcol(tCol != null ? tCol.getCodTcol() : null) - .setNumCollo(customNumCollo) - .setSerCollo(customSerCollo) - .setCodAnag(defaultCodAnag); + final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO().setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()).setAnnotazioni(additionalNotes).setCodTcol(tCol != null ? tCol.getCodTcol() : null).setNumCollo(customNumCollo).setSerCollo(customSerCollo).setCodAnag(defaultCodAnag); this.mColliCaricoRESTConsumer.createUDC(createUDCRequestDTO, createdUDS -> { this.mCurrentMtbColt = createdUDS; - this.mCurrentMtbColt.setMtbColr(new ObservableArrayList<>()) - .setDisablePrint(disablePrint); + this.mCurrentMtbColt.setMtbColr(new ObservableArrayList<>()).setDisablePrint(disablePrint); if (onComplete != null) onComplete.run(); this.sendLUOpened(createdUDS); @@ -429,13 +380,7 @@ public class AccettazioneBollaPickingViewModel { } if (SettingsManager.iDB().isFlagAccettazioneBollaEnableFastPick()) { - this.saveNewRow(pickingObjectDTO, - BigDecimal.ONE, - pickingObjectDTO.getMtbAart().getQtaCnf(), - pickingObjectDTO.getMtbAart().getQtaCnf(), - partitaMag, - null, - false); + this.saveNewRow(pickingObjectDTO, BigDecimal.ONE, pickingObjectDTO.getMtbAart().getQtaCnf(), pickingObjectDTO.getMtbAart().getQtaCnf(), partitaMag, null, false); return; } @@ -443,21 +388,20 @@ 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) { + public void dispatchBollaRow(final PickingObjectDTO pickingObjectDTO, boolean executeImmediately) { if (this.mCurrentMtbColt == null) return; AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); - Stream.of(pickingObjectDTO.getWithdrawMtbColrs()) - .forEach(row -> { - numCnfWithdrawRows.addAndGet(row.getNumCnf()); - qtaColWithdrawRows.addAndGet(row.getQtaCol()); - }); + pickingObjectDTO.getWithdrawMtbColrs().forEach(row -> { + numCnfWithdrawRows.addAndGet(row.getNumCnf()); + qtaColWithdrawRows.addAndGet(row.getQtaCol()); + }); BigDecimal totalQtaDoc = null; BigDecimal totalNumCnfDoc = null; @@ -555,11 +499,10 @@ public class AccettazioneBollaPickingViewModel { } if (!this.mUseQtaBolla) { - if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && - UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { + if (UtilityBigDecimal.greaterThan(pickingObjectDTO.getMtbAart().getColliPedana(), BigDecimal.ZERO) && UtilityBigDecimal.greaterThan(initialNumCnf, pickingObjectDTO.getMtbAart().getColliPedana())) { initialNumCnf = pickingObjectDTO.getMtbAart().getColliPedana(); initialQtaTot = initialNumCnf.multiply(initialQtaCnf); - } else if(UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { + } else if (UtilityBigDecimal.greaterThan(initialNumCnf, BigDecimal.ONE) && pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) { initialNumCnf = BigDecimal.ONE; initialQtaTot = initialNumCnf.multiply(initialQtaCnf); } @@ -571,10 +514,7 @@ public class AccettazioneBollaPickingViewModel { } if (partitaMag == null && dataScad == null) { - HistoryMtbAartDTO historyMtbAartDTO = - pickingObjectDTO.getMtbAart().getCodMart() != null ? - this.getHistoryItemByCodMartIfExists(pickingObjectDTO.getMtbAart().getCodMart()) : - this.getHistoryItemByBarcodeIfExists(pickingObjectDTO.getMtbAart().getBarCode()); + HistoryMtbAartDTO historyMtbAartDTO = pickingObjectDTO.getMtbAart().getCodMart() != null ? this.getHistoryItemByCodMartIfExists(pickingObjectDTO.getMtbAart().getCodMart()) : this.getHistoryItemByBarcodeIfExists(pickingObjectDTO.getMtbAart().getBarCode()); if (historyMtbAartDTO != null) { partitaMag = historyMtbAartDTO.getPartitaMag(); @@ -582,48 +522,18 @@ public class AccettazioneBollaPickingViewModel { } } - 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); - }); + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, initialNumCnf, initialQtaCnf, initialQtaTot, partitaMag, dataScad, false); } else { - this.saveNewRow( - pickingObjectDTO, - initialNumCnf, - initialQtaCnf, - initialQtaTot, - partitaMag, - dataScad, - false); + 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); + }); } } - public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal - qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { resetMatchedRows(); @@ -640,31 +550,16 @@ public class AccettazioneBollaPickingViewModel { var sitBolla = pickingObjectDTO.getSitBollaAccettazione(); var firstAvailableBolla = mBolle.get(0); - var insertUDCRowRequestDto = new InsertUDCRowRequestDTO() - .setCodMart(pickingObjectDTO.getMtbAart().getCodMart()) - .setDescrizione(pickingObjectDTO.getMtbAart().getCodMart() == null ? pickingObjectDTO.getMtbAart().getDescrizione() : null) - .setBarcode(pickingObjectDTO.getMtbAart().getBarCode()) - .setQtaTot(qtaTot) - .setQtaCnf(qtaCnf) - .setNumCnf(numCnf) - .setPartitaMag(partitaMag) + var insertUDCRowRequestDto = new InsertUDCRowRequestDTO().setCodMart(pickingObjectDTO.getMtbAart().getCodMart()).setDescrizione(pickingObjectDTO.getMtbAart().getCodMart() == null ? pickingObjectDTO.getMtbAart().getDescrizione() : null).setBarcode(pickingObjectDTO.getMtbAart().getBarCode()).setQtaTot(qtaTot).setQtaCnf(qtaCnf).setNumCnf(numCnf).setPartitaMag(partitaMag) // .setCodJcom(pickingObjectDTO.getSitBollaAccettazione().getCodJcom()) - .setDataDoc(sitBolla != null ? sitBolla.getDataDoc() : firstAvailableBolla.getDataDoc()) - .setNumDoc(sitBolla != null ? sitBolla.getNumDoc() : firstAvailableBolla.getNumDoc()) - .setCodDtip(sitBolla != null ? sitBolla.getCodDtip() : firstAvailableBolla.getCodDtip()) - .setSerDoc(sitBolla != null ? sitBolla.getSerDoc() : firstAvailableBolla.getSerDoc()) - .setTargetMtbColt(clonedTargetMtbColt); + .setDataDoc(sitBolla != null ? sitBolla.getDataDoc() : firstAvailableBolla.getDataDoc()).setNumDoc(sitBolla != null ? sitBolla.getNumDoc() : firstAvailableBolla.getNumDoc()).setCodDtip(sitBolla != null ? sitBolla.getCodDtip() : firstAvailableBolla.getCodDtip()).setSerDoc(sitBolla != null ? sitBolla.getSerDoc() : firstAvailableBolla.getSerDoc()).setTargetMtbColt(clonedTargetMtbColt); - if (dataScad != null) - insertUDCRowRequestDto - .setDataScad(dataScad); + if (dataScad != null) insertUDCRowRequestDto.setDataScad(dataScad); mColliCaricoRESTConsumer.insertUDCRow(insertUDCRowRequestDto, insertedMtbColr -> { this.addHistoryItem(insertedMtbColr); - insertedMtbColr - .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) - .setMtbAart(pickingObjectDTO.getMtbAart()); + insertedMtbColr.setUntMis(pickingObjectDTO.getMtbAart().getUntMis()).setMtbAart(pickingObjectDTO.getMtbAart()); pickingObjectDTO.getWithdrawMtbColrs().add(insertedMtbColr); mCurrentMtbColt.getMtbColr().add(insertedMtbColr); @@ -682,66 +577,32 @@ public class AccettazioneBollaPickingViewModel { } public void dispatchRowEdit(MtbColr mtbColrToEdit) { - final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO() - .setMtbAart(mtbColrToEdit.getMtbAart()); + final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO().setMtbAart(mtbColrToEdit.getMtbAart()); - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - mtbColrToEdit.getNumCnf(), - mtbColrToEdit.getQtaCnf(), - mtbColrToEdit.getQtaCol(), - null, - null, - null, - null, null, null, - null, null, null, - mtbColrToEdit.getPartitaMag(), - mtbColrToEdit.getDataScadPartita(), - true, - (pickedQuantityDTO, shouldCloseLU) -> { + this.sendOnItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), mtbColrToEdit.getNumCnf(), mtbColrToEdit.getQtaCnf(), mtbColrToEdit.getQtaCol(), null, null, null, null, null, null, null, null, null, mtbColrToEdit.getPartitaMag(), mtbColrToEdit.getDataScadPartita(), true, (pickedQuantityDTO, shouldCloseLU) -> { - this.saveEditedRow(mtbColrToEdit, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); + this.saveEditedRow(mtbColrToEdit, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + }); } - private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal - qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { this.sendOnLoadingStarted(); MtbColr mtbColrClone = (MtbColr) mtbColrToUpdate.clone(); - mtbColrClone.setMtbAart(null) - .setMtbPartitaMag(null); + mtbColrClone.setMtbAart(null).setMtbPartitaMag(null); - var editUDCRowRequest = new EditUDCRowRequestDTO() - .setSourceMtbColr(mtbColrClone) - .setNewNumCnf(numCnf) - .setNewQtaCnf(qtaCnf) - .setNewQtaTot(qtaTot) - .setNewPartitaMag(partitaMag); + var editUDCRowRequest = new EditUDCRowRequestDTO().setSourceMtbColr(mtbColrClone).setNewNumCnf(numCnf).setNewQtaCnf(qtaCnf).setNewQtaTot(qtaTot).setNewPartitaMag(partitaMag); - if (dataScad != null) - editUDCRowRequest - .setNewDataScad(dataScad); + if (dataScad != null) editUDCRowRequest.setNewDataScad(dataScad); this.mColliCaricoRESTConsumer.editUDCRow(editUDCRowRequest, (editedMtbColr) -> { this.addHistoryItem(editedMtbColr); - Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) - .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate)) - .findSingle(); + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToUpdate)).findSingle(); - editedMtbColr - .setUntMis(mtbColrToUpdate.getUntMis()) - .setMtbAart(mtbColrToUpdate.getMtbAart()); + editedMtbColr.setUntMis(mtbColrToUpdate.getUntMis()).setMtbAart(mtbColrToUpdate.getMtbAart()); if (pickingObjectDTO.isPresent()) { pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate); @@ -764,30 +625,25 @@ public class AccettazioneBollaPickingViewModel { public void deleteRow(MtbColr mtbColrToDelete) { this.sendMtbColrDeleteRequest(shouldDelete -> { - if (!shouldDelete) - return; + if (!shouldDelete) return; this.sendOnLoadingStarted(); - var deleteUDCRowRequest = new DeleteUDCRowRequestDTO() - .setMtbColrToDelete(mtbColrToDelete); + var deleteUDCRowRequest = new DeleteUDCRowRequestDTO().setMtbColrToDelete(mtbColrToDelete); - this.mColliCaricoRESTConsumer.deleteUDCRow(deleteUDCRowRequest, - () -> { - Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) - .filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete)) - .findSingle(); + this.mColliCaricoRESTConsumer.deleteUDCRow(deleteUDCRowRequest, () -> { + Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()).filter(x -> Stream.of(x.getWithdrawMtbColrs()).anyMatch(y -> y == mtbColrToDelete)).findSingle(); - if (pickingObjectDTO.isPresent()) { - pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); - } + if (pickingObjectDTO.isPresent()) { + pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToDelete); + } - this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); + this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete); - this.resetMatchedRows(); - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); - }, this::sendError); + this.resetMatchedRows(); + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + }, this::sendError); }); } @@ -804,8 +660,7 @@ public class AccettazioneBollaPickingViewModel { this.sendOnLoadingEnded(); }); } else { - CloseUDCRequestDTO closeUDCRequestDTO = new CloseUDCRequestDTO() - .setMtbColt(mCurrentMtbColt); + CloseUDCRequestDTO closeUDCRequestDTO = new CloseUDCRequestDTO().setMtbColt(mCurrentMtbColt); mColliCaricoRESTConsumer.closeUDC(closeUDCRequestDTO, closeUDCResponse -> { Runnable onVersamentoCompleted = () -> { @@ -859,11 +714,9 @@ public class AccettazioneBollaPickingViewModel { MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); cloneMtbColt.setGestione(cloneMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE ? GestioneEnum.PRODUZIONE : cloneMtbColt.getGestioneEnum()); - var printUDSRequestDto = new PrintULRequestDTO() - .setMtbColt(cloneMtbColt); + var printUDSRequestDto = new PrintULRequestDTO().setMtbColt(cloneMtbColt); - this.mColliMagazzinoRESTConsumer.printUL(printUDSRequestDto, onComplete, - ex -> this.sendLUPrintError(ex, onComplete)); + this.mColliMagazzinoRESTConsumer.printUL(printUDSRequestDto, onComplete, ex -> this.sendLUPrintError(ex, onComplete)); } private void postCloseOperations() { @@ -873,8 +726,7 @@ public class AccettazioneBollaPickingViewModel { } private void deleteLU(Runnable onComplete) { - DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO() - .setMtbColt(this.mCurrentMtbColt); + DeleteULRequestDTO deleteULRequestDTO = new DeleteULRequestDTO().setMtbColt(this.mCurrentMtbColt); mColliMagazzinoRESTConsumer.deleteUL(deleteULRequestDTO, () -> { this.mCurrentMtbColt = null; @@ -885,44 +737,30 @@ public class AccettazioneBollaPickingViewModel { public void resetMatchedRows() { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { - pickingObjectDTO - .setTempPickData(null); + pickingObjectDTO.setTempPickData(null); } this.mPickingList.postValue(this.mPickingList.getValue()); } private void addHistoryItem(@NonNull MtbColr mtbColr) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) || - (x.getCodMart() == null && x.getBarcode().equalsIgnoreCase(mtbColr.getCodBarre()))) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> (x.getCodMart() != null && x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())) || (x.getCodMart() == null && x.getBarcode().equalsIgnoreCase(mtbColr.getCodBarre()))).findFirst(); if (optional.isPresent()) { - optional.get() - .setPartitaMag(mtbColr.getPartitaMag()) - .setDataScad(mtbColr.getDataScadPartita()); + optional.get().setPartitaMag(mtbColr.getPartitaMag()).setDataScad(mtbColr.getDataScadPartita()); } else { - this.mHistoryUsedAarts.add(new HistoryMtbAartDTO() - .setCodMart(mtbColr.getCodMart()) - .setBarcode(mtbColr.getCodBarre()) - .setPartitaMag(mtbColr.getPartitaMag()) - .setDataScad(mtbColr.getDataScadPartita())); + this.mHistoryUsedAarts.add(new HistoryMtbAartDTO().setCodMart(mtbColr.getCodMart()).setBarcode(mtbColr.getCodBarre()).setPartitaMag(mtbColr.getPartitaMag()).setDataScad(mtbColr.getDataScadPartita())); } } private HistoryMtbAartDTO getHistoryItemByCodMartIfExists(@NonNull String codMart) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> x.getCodMart().equalsIgnoreCase(codMart)) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> x.getCodMart().equalsIgnoreCase(codMart)).findFirst(); return optional.isPresent() ? optional.get() : null; } private HistoryMtbAartDTO getHistoryItemByBarcodeIfExists(@NonNull String barcode) { - Optional optional = Stream.of(this.mHistoryUsedAarts) - .filter(x -> x.getBarcode().equalsIgnoreCase(barcode)) - .findFirst(); + Optional optional = Stream.of(this.mHistoryUsedAarts).filter(x -> x.getBarcode().equalsIgnoreCase(barcode)).findFirst(); return optional.isPresent() ? optional.get() : null; } @@ -963,43 +801,9 @@ public class AccettazioneBollaPickingViewModel { if (this.mListener != null) mListener.onLUPrintError(ex, onComplete); } - private void sendOnItemDispatched(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, - RunnableArgss onComplete) { - if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO, - mtbAart, - initialNumCnf, - initialQtaCnf, - initialQtaTot, - totalQtaOrd, - totalNumCnfOrd, - qtaCnfOrd, - totalQtaToBeTaken, - totalNumCnfToBeTaken, - qtaCnfToBeTaken, - totalQtaAvailable, - totalNumCnfAvailable, - qtaCnfAvailable, - partitaMag, - dataScad, - canPartitaMagBeChanged, - true, - onComplete); + private void sendOnItemDispatched(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, RunnableArgss onComplete) { + if (this.mListener != null) + mListener.onItemDispatched(pickingObjectDTO, mtbAart, initialNumCnf, initialQtaCnf, initialQtaTot, totalQtaOrd, totalNumCnfOrd, qtaCnfOrd, totalQtaToBeTaken, totalNumCnfToBeTaken, qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, canPartitaMagBeChanged, true, onComplete); } @@ -1019,16 +823,13 @@ public class AccettazioneBollaPickingViewModel { if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete); } - private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO - versamentoAutomaticoULResponseDTO, Runnable onComplete) { + private void notifyVersamentoAutomaticoResult(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete) { if (this.mListener != null) mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete); } - private void sendOnUnknownBarcodeScanned(String - barocde, RunnableArgs onComplete, Runnable onAbort) { - if (this.mListener != null) - mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort); + private void sendOnUnknownBarcodeScanned(String barocde, RunnableArgs onComplete, Runnable onAbort) { + if (this.mListener != null) mListener.onUnknownBarcodeScanned(barocde, onComplete, onAbort); } public AccettazioneBollaPickingViewModel setListeners(Listener listener) { @@ -1045,25 +846,7 @@ public class AccettazioneBollaPickingViewModel { void onError(Exception ex); - 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, - RunnableArgss onComplete); + 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, RunnableArgss onComplete); void onFilterCodMartApplied(String codMartToFilter); 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 78f42a9e..617a3b2a 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 @@ -355,7 +355,11 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A }); accettazioneOrdiniPickingListAdapter.setOnItemClicked(clickedItem -> { - this.mViewModel.dispatchOrdineRow(clickedItem); + this.mViewModel.dispatchOrdineRow(clickedItem, false); + }); + + accettazioneOrdiniPickingListAdapter.setOnItemLongClicked(clickedItem -> { + this.mViewModel.dispatchOrdineRow(clickedItem, true); }); } 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 68bff77b..ab14ce33 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 @@ -141,7 +141,7 @@ public class AccettazioneOrdiniPickingViewModel { .distinct() .collect(Collectors.toList()); - if(codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0); + if (codAnagsOrd.size() == 1) foundCodAnag = codAnagsOrd.get(0); //Definizione della gestione collo di default @@ -248,7 +248,7 @@ public class AccettazioneOrdiniPickingViewModel { Ean128Model ean128Model = mEan128Service.decode(barcodeScanDTO); mColliAccettazioneRESTConsumer.checkBarcodeUl(ean128Model.Sscc, result -> { - if (result){ + if (result) { this.sendWarning("Barcode ul già registrato!", onComplete); } else { //Nel caso trovo un SSCC lo aggiungo @@ -395,13 +395,13 @@ public class AccettazioneOrdiniPickingViewModel { } private void loadMatchedRows(List matchedRows) { - if (matchedRows == null || matchedRows.size() == 0) { + if (matchedRows == null || matchedRows.isEmpty()) { this.sendError(new NoArtsFoundException()); } else if (matchedRows.size() == 1) { - this.dispatchOrdineRow(matchedRows.get(0)); + this.dispatchOrdineRow(matchedRows.get(0), false); } else { //So che il codMart sarà solo 1 - var firstCodMart = Stream.of(matchedRows) + var firstCodMart = matchedRows.stream() .map(x -> x.getSitArtOrdDTO().getCodMart()) .distinct() .findFirst() @@ -414,7 +414,7 @@ public class AccettazioneOrdiniPickingViewModel { public void createNewLU(String customSSCC, Integer customNumCollo, String customSerCollo, boolean disablePrint, Runnable onComplete) { this.sendOnInfoAggiuntiveRequest((additionalNotes, tCol) -> { - final List orders = Stream.of(this.mOrders) + final List orders = this.mOrders.stream() .map(x -> { final CreateUDCRequestOrderDTO createUDCRequestOrderDTO = new CreateUDCRequestOrderDTO() .setDataCons(x.getDataConsD() != null ? UtilityDate.toLocalDate(x.getDataConsD()) : null) @@ -432,7 +432,7 @@ public class AccettazioneOrdiniPickingViewModel { return createUDCRequestOrderDTO; }) - .toList(); + .collect(Collectors.toList()); final CreateUDCRequestDTO createUDCRequestDTO = new CreateUDCRequestDTO() .setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep()) @@ -457,7 +457,7 @@ public class AccettazioneOrdiniPickingViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, boolean executeImmediately) { if (this.mCurrentMtbColt == null) return; BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); @@ -467,7 +467,7 @@ public class AccettazioneOrdiniPickingViewModel { AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); - Stream.of(pickingObjectDTO.getWithdrawMtbColrs()) + pickingObjectDTO.getWithdrawMtbColrs() .forEach(row -> { numCnfWithdrawRows.addAndGet(row.getNumCnf()); qtaColWithdrawRows.addAndGet(row.getQtaCol()); @@ -568,33 +568,42 @@ public class AccettazioneOrdiniPickingViewModel { } } - this.sendOnItemDispatched( - pickingObjectDTO, - pickingObjectDTO.getMtbAart(), - initialNumCnf, initialQtaCnf, initialQtaTot, - qtaDaEvadere, - numCnfDaEvadere, - qtaCnfDaEvadere, - qtaColDaPrelevare, - numCnfDaPrelevare, - qtaCnfDaPrelevare, - null, - null, - null, - partitaMag, - dataScad, - true, - pickingObjectDTO.getSitArtOrdDTO().getDescrizioneEstesaOrd(), - (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, - pickedQuantityDTO.getNumCnf(), - pickedQuantityDTO.getQtaCnf(), - pickedQuantityDTO.getQtaTot(), - pickedQuantityDTO.getPartitaMag(), - pickedQuantityDTO.getDataScad(), - shouldCloseLU); - }); - + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + qtaColDaPrelevare, + partitaMag, + dataScad, + false); + } else { + this.sendOnItemDispatched( + pickingObjectDTO, + pickingObjectDTO.getMtbAart(), + initialNumCnf, initialQtaCnf, initialQtaTot, + qtaDaEvadere, + numCnfDaEvadere, + qtaCnfDaEvadere, + qtaColDaPrelevare, + numCnfDaPrelevare, + qtaCnfDaPrelevare, + null, + null, + null, + partitaMag, + dataScad, + true, + pickingObjectDTO.getSitArtOrdDTO().getDescrizioneEstesaOrd(), + (pickedQuantityDTO, shouldCloseLU) -> { + this.saveNewRow(pickingObjectDTO, + pickedQuantityDTO.getNumCnf(), + pickedQuantityDTO.getQtaCnf(), + pickedQuantityDTO.getQtaTot(), + pickedQuantityDTO.getPartitaMag(), + pickedQuantityDTO.getDataScad(), + shouldCloseLU); + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java index be2a0554..eb21ba04 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/ui/AccettazioneOrdiniPickingListAdapter.java @@ -21,7 +21,6 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.AccettazioneOrdineInevasoMainListGroupHeaderBinding; @@ -35,6 +34,7 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA private final List mDataset = new ArrayList<>(); private RunnableArgs mOnItemClicked; + private RunnableArgs mOnItemLongClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -77,6 +77,10 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA this.mOnItemClicked = onItemClicked; } + public void setOnItemLongClicked(RunnableArgs onItemLongClicked) { + this.mOnItemLongClicked = onItemLongClicked; + } + @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -154,6 +158,12 @@ public class AccettazioneOrdiniPickingListAdapter extends SectionedRecyclerViewA 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 diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index 2b10d80b..fd94aff5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -38,6 +38,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; @@ -54,6 +55,7 @@ import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalView; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView; +import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaView; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdView; import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.dto.DialogAskLineaProdResponse; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; @@ -90,12 +92,13 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme private GestioneEnum mCurrentGestione; private boolean mAskCliente; private boolean mAskLineaProd; + private boolean mAskCommessa; public PickingLiberoFragment() { // Required empty public constructor } - public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd) { + public static PickingLiberoFragment newInstance(@StringRes int title, GestioneEnum gestioneEnum, boolean askCliente, boolean askLineaProd, boolean flagAskCommessaInPickingLiberoLav) { PickingLiberoFragment fragment = new PickingLiberoFragment(); Bundle args = new Bundle(); @@ -103,6 +106,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme args.putString("gestione", gestioneEnum.getText()); args.putBoolean("askCliente", askCliente); args.putBoolean("askLineaProd", askLineaProd); + args.putBoolean("askCommessa", flagAskCommessaInPickingLiberoLav); fragment.setArguments(args); return fragment; @@ -121,6 +125,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme mCurrentGestione = GestioneEnum.fromString(getArguments().getString("gestione")); mAskCliente = getArguments().getBoolean("askCliente"); mAskLineaProd = getArguments().getBoolean("askLineaProd"); + mAskCommessa = getArguments().getBoolean("askCommessa"); mToolbarTitleText.setText(getText(getArguments().getInt("title")).toString()); @@ -150,7 +155,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme this.initRecyclerView(); - mViewModel.init(mAskCliente, mAskLineaProd, mCurrentGestione); + mViewModel.init(mAskCliente, mAskLineaProd, mAskCommessa, mCurrentGestione); return mBindings.getRoot(); } @@ -303,6 +308,12 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme .show(getParentFragmentManager(), DialogAskLineaProdView.class.getName()); } + @Override + public void onLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort) { + DialogAskCommessaView.newInstance(onComplete, onAbort) + .show(getParentFragmentManager(), DialogAskCommessaView.class.getName()); + } + @Override public void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { DialogChooseArtsFromMtbColrList 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 8ea43452..e946dea0 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 @@ -24,12 +24,14 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario; import it.integry.integrywmsnative.core.model.VtbDest; +import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -45,6 +47,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemRequestDTO; import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPickItemsRequestDTO; +import it.integry.integrywmsnative.core.rest.model.uds.CloseUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CreateUDSRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.DeleteULRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -76,8 +79,11 @@ public class PickingLiberoViewModel { private boolean mFlagAskCliente; private boolean mFlagAskLineaProd; + private boolean mFlagAskCommessa; private GestioneEnum mDefaultGestione; + private JtbComt mDefaultCommessa; + private Listener mListener; @@ -102,9 +108,10 @@ public class PickingLiberoViewModel { } - public void init(boolean flagAskCliente, boolean flagAskLineaProd, GestioneEnum defaultGestione) { + public void init(boolean flagAskCliente, boolean flagAskLineaProd, boolean flagAskCommessa, GestioneEnum defaultGestione) { this.mFlagAskCliente = defaultGestione == GestioneEnum.VENDITA && flagAskCliente; this.mFlagAskLineaProd = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskLineaProd; + this.mFlagAskCommessa = defaultGestione == GestioneEnum.LAVORAZIONE && flagAskCommessa; this.mDefaultGestione = defaultGestione; @@ -142,7 +149,7 @@ public class PickingLiberoViewModel { //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); - } else if (SettingsManager.iDB().isFlagPickingLiberoEnableScanArt()){ + } 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 { @@ -316,9 +323,7 @@ public class PickingLiberoViewModel { if (this.mFlagAskCliente) { this.sendLUClienteRequired((vtbDest, codJcom) -> { createNewLU_PostClienteAsk(customNumCollo, customSerCollo, vtbDest, onComplete); - }, () -> { - - }); + }, this::sendOnLoadingEnded); } else { createNewLU_PostClienteAsk(customNumCollo, customSerCollo, null, onComplete); } @@ -329,15 +334,25 @@ public class PickingLiberoViewModel { this.sendLULineaProdRequired(response -> { createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, response.getPosizione(), response.getIdLotto(), onComplete); - }, () -> { - this.sendOnLoadingEnded(); - }); + }, this::sendOnLoadingEnded); } else { createNewLU_PostLineaProdAsk(customNumCollo, customSerCollo, vtbDest, null, null, onComplete); } } - private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, Runnable onComplete) { + private void createNewLU_PostLineaProdAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String posizione, Integer idLotto, Runnable onComplete) { + if (this.mFlagAskCommessa) { + this.sendLUCommessaRequired(response -> { + createNewLU_PostCommessaAsk(customNumCollo, customSerCollo, vtbDest, posizione, idLotto, response, onComplete); + + }, this::sendOnLoadingEnded); + } else { + createNewLU_PostCommessaAsk(customNumCollo, customSerCollo, vtbDest, null, null, null, onComplete); + } + } + + private void createNewLU_PostCommessaAsk(Integer customNumCollo, String customSerCollo, VtbDest vtbDest, String codJfas, Integer idLotto, JtbComt codJcom, Runnable onComplete) { + this.mDefaultCommessa = codJcom; this.sendOnLoadingStarted(); @@ -536,61 +551,23 @@ public class PickingLiberoViewModel { if (!pickedAarts.isEmpty()) { askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> { if (!destNewMtbColr.isEmpty()) { - MtbColt clonedTestata = (MtbColt) this.mCurrentMtbColt.clone(); - clonedTestata.setOperation(CommonModelConsts.OPERATION.UPDATE); - ObservableArrayList mtbColrObservableField = new ObservableArrayList<>(); + destNewMtbColr.forEach(x -> x.setCodJcom(this.mDefaultCommessa.getCodJcom())); - for (int i = 0; i < destNewMtbColr.size(); i++) { - MtbColr cloneMtbColr = (MtbColr) destNewMtbColr.get(i).clone(); + MtbColt clonedTestata = (MtbColt) sourceMtbColt.clone(); + clonedTestata.getMtbColr().clear(); + clonedTestata.getMtbColr().addAll(destNewMtbColr); - cloneMtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + mColliMagazzinoRESTConsumer.spostaArtsTraUL(clonedTestata, + this.mCurrentMtbColt, true, (generatedMtbColrs) -> { - cloneMtbColr - .setGestioneRif(cloneMtbColr.getGestione()) - .setGestione((String) null) + mCurrentMtbColt.getMtbColr().addAll(generatedMtbColrs); - .setSerColloRif(cloneMtbColr.getSerCollo()) - .setSerCollo(null) + this.sendOnRowSaved(); + this.sendOnLoadingEnded(); + onComplete.run(); + }, this::sendError); - .setNumColloRif(cloneMtbColr.getNumCollo()) - .setNumCollo(null) - - .setDataColloRif(cloneMtbColr.getDataColloS()) - .setDataCollo((String) null) - - .setPesoLordoKg(null) - .setPesoNettoKg(null); - - mtbColrObservableField.add(cloneMtbColr); - } - - clonedTestata.setMtbColr(mtbColrObservableField); - - new Thread(() -> { - mColliMagazzinoRESTConsumer.saveCollo(clonedTestata, value -> { - for (int i = 0; i < mtbColrObservableField.size(); i++) { - MtbColr initialMtbColr = mtbColrObservableField.get(i); - var startIdx = (value.getMtbColr().size() - mtbColrObservableField.size()); - - initialMtbColr - .setDataCollo(value.getDataColloS()) - .setNumCollo(value.getNumCollo()) - .setGestione(value.getGestione()) - .setSerCollo(value.getSerCollo()); - - initialMtbColr.setRiga(value.getMtbColr().get(startIdx + i).getRiga()); - mCurrentMtbColt.getMtbColr().add(mtbColrObservableField.get(i)); - } - - this.sendOnRowSaved(); - this.sendOnLoadingEnded(); - - onComplete.run(); - - }, this::sendError); - - }).start(); } }, onComplete); } else { @@ -675,7 +652,8 @@ public class PickingLiberoViewModel { .setQtaCnf(qtaCnf) .setNumCnf(numCnf) .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) - .setDatetimeRow(UtilityDate.getDateInstance()); + .setDatetimeRow(UtilityDate.getDateInstance()) + .setCodJcom(this.mDefaultCommessa.getCodJcom()); mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -888,6 +866,7 @@ public class PickingLiberoViewModel { } this.sendOnLoadingStarted(); + this.mDefaultCommessa = null; mColliMagazzinoRESTConsumer.canULBeDeleted(mCurrentMtbColt, canBeDeleted -> { if (canBeDeleted) { @@ -901,7 +880,18 @@ public class PickingLiberoViewModel { } else { this.mColliMagazzinoRESTConsumer.assegnaLottoSuColloScarico(mCurrentMtbColt, () -> { - this.mColliMagazzinoRESTConsumer.updateDataFine(mCurrentMtbColt, () -> { + + var closeUDSRequest = new CloseUDSRequestDTO() + .setMtbColt(mCurrentMtbColt); + + if (this.mDefaultGestione == GestioneEnum.LAVORAZIONE) { + closeUDSRequest + .setCreateDocument(SettingsManager.iDB().isProduzioneGeneraDocScar()) + .setDocumentCodDtip(SettingsManager.iDB().getProduzioneCodDtipScar()) + .setDocumentCodAnag(SettingsManager.iDB().getInternalCodAnags().stream().filter(InternalCodAnagsDTO::isFornitore).findFirst().get().getCodAnag()); + } + + this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequest, response -> { this.sendLUClosed(); this.sendOnLoadingEnded(); @@ -956,6 +946,10 @@ public class PickingLiberoViewModel { if (this.mListener != null) mListener.onLULineaProdRequired(onComplete, onAbort); } + private void sendLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort) { + if (this.mListener != null) mListener.onLUCommessaRequired(onComplete, onAbort); + } + private void sendArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort) { if (this.mListener != null) mListener.onArtSelectionRequest(mtbColrsToPick, mtbAart, onComplete, onAbort); @@ -1014,6 +1008,8 @@ public class PickingLiberoViewModel { void onLULineaProdRequired(RunnableArgs onComplete, Runnable onAbort); + void onLUCommessaRequired(RunnableArgs onComplete, Runnable onAbort); + void onArtSelectionRequest(List mtbColrsToPick, MtbAart mtbAart, RunnableArgs> onComplete, Runnable onAbort); void onItemDispatched(PickingObjectDTO pickingObjectDTO, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java index f33cbcce..7999621e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeFragment.java @@ -208,6 +208,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl .setDescrizione(x.getDescrizioneArt()) .setNumCollo(x.getNumColloRif()) .setPartitaMag(x.getPartitaMag()) + .setCodJcom(x.getCodJcom()) .setQtaVersata(x.getQtaCol()) .setUntMisVersata(x.getUntMis()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java index bfa6841a..adfa25e9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java @@ -67,9 +67,10 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { " dtb_ord_steps.gestione as gestione_ord, " + " dtb_ord_steps.hr_num as hr, " + " mtb_colr.riga_ord, " + - " CONVERT(INTEGER, ROUND((CAST(dtb_ord_steps.hr_num AS DECIMAL(20, 5)) / " + - " SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo)) * 100, " + - " 0)) as percentage_hr " + + " CONVERT(INTEGER, ROUND((CAST(dtb_ord_steps.hr_num AS DECIMAL(20, 5)) /\n" + + " IIF(SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo) = 0, 1,\n" + + " SUM(dtb_ord_steps.hr_num) OVER (PARTITION BY mtb_colr.num_collo))) * 100,\n" + + " 0)) AS percentage_hr " + " FROM mtb_colr " + " INNER JOIN mtb_colt ON mtb_colr.num_collo = mtb_colt.num_collo " + " AND mtb_colr.data_collo = mtb_colt.data_collo " + @@ -249,8 +250,10 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { .setCodJfas(restDTO.getCodJfas()) .setDescrizioneArt(restDTO.getDescrizioneArt()) .setDescrizioneFase(restDTO.getDescrizioneFase()) - .setQtaCol(qtaColTot) - .setNumCnf(numCnfColTot) + .setQtaCol(restDTO.getQtaCol()) + .setNumCnf(restDTO.getNumCnf()) +// .setQtaCol(qtaColTot) +// .setNumCnf(numCnfColTot) .setPartitaMag(restDTO.getPartitaMag()) .setCodJcom(restDTO.getCodJcom()) .setDatetimeRow(restDTO.getDatetimeRow()) @@ -273,7 +276,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { this.mArticoloRESTConsumer.getByCodMarts(codMarts, arts -> { - if (arts != null && arts.size() > 0) { + if (arts != null && !arts.isEmpty()) { for (HistoryVersamentoProdULDTO value : newUlList) { MtbAart foundMtbAart = null; @@ -281,7 +284,7 @@ public class ProdRecuperMaterialeRESTConsumer extends _BaseRESTConsumer { List mtbAartStream = Stream.of(arts) .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); - if (mtbAartStream != null && mtbAartStream.size() > 0) { + if (mtbAartStream != null && !mtbAartStream.isEmpty()) { foundMtbAart = mtbAartStream.get(0); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java index fd503ac2..1e881e3f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ui/HistoryULsListAdapter.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.prod_recupero_materiale.ui; import android.content.Context; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; @@ -98,7 +99,12 @@ public class HistoryULsListAdapter extends ExtendedSectionedRecyclerView { List filteredList = null; - if(ordiniLavorazioneList != null) - filteredList = Stream.of(ordiniLavorazioneList) - .filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO) - .toList(); + filteredList = ordiniLavorazioneList; +// if(ordiniLavorazioneList != null) +// filteredList = ordiniLavorazioneList.stream() +// .filter(x -> x.getStatoEnum() != OrdineLavorazioneStatoEnum.PROGRAMMATO) +// .collect(Collectors.toList()); this.mOrdiniLavorazioneAperti.postValue(filteredList); this.sendOnOrdersLoadingEnded(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java index 7962a280..15bde7f6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java @@ -87,7 +87,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements public ObservableField sumNetKG = new ObservableField<>(BigDecimal.ZERO); public ObservableField sumGrossKG = new ObservableField<>(BigDecimal.ZERO); public ObservableField progress = new ObservableField<>(0); - public boolean isOrderColli = false; + public ObservableField isOrderColli = new ObservableField<>(false); public ProdRientroMerceOrderDetailFragment() { // Required empty public constructor @@ -121,7 +121,6 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements if (currentOrder.getValue() != null) { refreshOrder(); - isOrderColli = currentOrder.getValue().getQtaCnf().compareTo(BigDecimal.ONE) == 0; } this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList); @@ -200,9 +199,15 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements } private void refreshOrder() { + OrdineLavorazioneDTO currentOrd = currentOrder.getValue(); + + if(currentOrd != null) { + isOrderColli.set(currentOrd.getQtaCnf().compareTo(BigDecimal.ONE) == 0); + } + if (mBindings != null) mBindings.invalidateAll(); if (mAdapter != null) mAdapter.clearDataset(); - if (mViewModel != null) mViewModel.setOrder(currentOrder.getValue()); + if (mViewModel != null) mViewModel.setOrder(currentOrd); } private void refreshList(List mtbColts) { @@ -402,6 +407,16 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements return ContextCompat.getDrawable(requireActivity(), R.drawable.label_primary_text); } + public Drawable getUntMisIcon() { + if (currentOrder.getValue() != null) { + if(currentOrder.getValue().getUntOrd().equalsIgnoreCase("KG")) + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_weight_kg); + else + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_puzzle); + } else + return ContextCompat.getDrawable(requireActivity(), R.drawable.ic_weight_kg); + } + public Integer getOrderStatusLabelTextColor() { if (currentOrder.getValue() != null) { switch (currentOrder.getValue().getStatoEnum()) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java index 152f96a3..1c68cd95 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java @@ -5,7 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Optional; import com.annimon.stream.Stream; -import java.util.Date; +import java.time.LocalDate; import java.util.HashMap; import java.util.List; @@ -68,36 +68,33 @@ public class ProdRientroMerceOrderDetailViewModel { public void createLU(ProdRientroMerceOrderDetailPickedQuantityDTO pickedQuantityDTO) { - new Thread(this::sendOnLoadingStarted).start(); + this.sendOnLoadingStarted(); - new Thread(() -> { + ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO = + new ImportColliDaProduzioneRequestDTO() + .setColliBancale(pickedQuantityDTO.getNumCnf().intValue()) + .setQtaCnf(pickedQuantityDTO.getPesoCollo()) + .setQtaCol(pickedQuantityDTO.getPesoNetto()) + .setCodJcom(currentOrder.getCodJcom()) +// .setCodJfas("OFF") + .setCodJfas(pickedQuantityDTO.getJtbFasi() != null ? pickedQuantityDTO.getJtbFasi().getCodJfas() : null) + .setCodMart(currentOrder.getCodProd()) + .setCodTcol(pickedQuantityDTO.getMtbTCol() != null ? pickedQuantityDTO.getMtbTCol().getCodTcol() : null) + .setDataCollo(LocalDate.now()) + .setDataOrd(currentOrder.getDataOrdD()) + .setNumOrd(currentOrder.getNumOrd()) + .setGestione(currentOrder.getGestione()) + .setPartitaMag(currentOrder.getPartitaMag()) + .setFornitore(currentOrder.getRagSocAnag()) + .setPesoLordo(pickedQuantityDTO.getPesoLordo()) + .setPesoNetto(pickedQuantityDTO.getPesoNetto()); - ImportColliDaProduzioneRequestDTO importColliDaProduzioneRequestDTO = - new ImportColliDaProduzioneRequestDTO() - .setColliBancale(pickedQuantityDTO.getNumCnf().intValue()) - .setQtaCnf(pickedQuantityDTO.getPesoCollo()) - .setQtaCol(pickedQuantityDTO.getPesoNetto()) - .setCodJcom(currentOrder.getCodJcom()) - .setCodJfas(pickedQuantityDTO.getJtbFasi() != null ? pickedQuantityDTO.getJtbFasi().getCodJfas() : null) - .setCodMart(currentOrder.getCodProd()) - .setCodTcol(pickedQuantityDTO.getMtbTCol() != null ? pickedQuantityDTO.getMtbTCol().getCodTcol() : null) - .setDataCollo(new Date()) - .setDataOrd(currentOrder.getDataOrdD()) - .setNumOrd(currentOrder.getNumOrd()) - .setGestione(currentOrder.getGestione()) - .setPartitaMag(currentOrder.getPartitaMag()) - .setFornitore(currentOrder.getRagSocAnag()) - .setPesoLordo(pickedQuantityDTO.getPesoLordo()) - .setPesoNetto(pickedQuantityDTO.getPesoNetto()); + this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> { + synchronized (this.mtbColtsOfOrder) { + this.mListener.onDataSaved(mtbColtSaved); + } + }, this::sendError); - this.mProdRientroMerceOrderDetailRESTConsumer.importColloDaProduzione(importColliDaProduzioneRequestDTO, mtbColtSaved -> { - synchronized (this.mtbColtsOfOrder) { - this.mListener.onDataSaved(mtbColtSaved); - } - }, this::sendError); - - - }).start(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java index e7e53d50..da274fa6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/dto/ImportColliDaProduzioneRequestDTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.rest.dto; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; public class ImportColliDaProduzioneRequestDTO { @@ -15,7 +16,7 @@ public class ImportColliDaProduzioneRequestDTO { private int colliBancale; private BigDecimal qtaCnf; - private Date dataCollo; + private LocalDate dataCollo; private Date dataOrd; private int numOrd; @@ -107,11 +108,11 @@ public class ImportColliDaProduzioneRequestDTO { return this; } - public Date getDataCollo() { + public LocalDate getDataCollo() { return dataCollo; } - public ImportColliDaProduzioneRequestDTO setDataCollo(Date dataCollo) { + public ImportColliDaProduzioneRequestDTO setDataCollo(LocalDate dataCollo) { this.dataCollo = dataCollo; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index f08c9147..d3544ba3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -229,15 +229,20 @@ public class ProdRiposizionamentoDaProdViewModel { } public void loadData() { - List posizioni = Arrays.asList(SettingsManager.iDB().getViewPosizioni().split("\\|")); + String posizioniToSee = SettingsManager.iDB().getViewPosizioni(); + if(posizioniToSee == null || posizioniToSee.isEmpty()) { + this.sendOnInventoriesLoadingEnded(); + return; + } + + List posizioni = Arrays.asList(posizioniToSee.split("\\|")); this.mGiacenzaRESTConsumer.getGiacenzeInPosizione(posizioni, true, availableItems -> { - availableItems = Stream.of(availableItems) + availableItems = availableItems.stream() .sorted(Comparator.comparing(ArtsInGiacenzaDTO::getPosizione)) - .toList(); + .collect(Collectors.toList()); itemsInventario.postValue(availableItems); - this.sendOnInventoriesLoadingEnded(); }, this::sendError); } 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 2ca1a6a5..34757538 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 @@ -39,6 +39,7 @@ import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgsss; +import it.integry.integrywmsnative.core.expansion.RunnableArgssss; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; @@ -81,7 +82,6 @@ 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; @@ -319,15 +319,18 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); - spedizioneListAdapter.setOnItemClicked((clickedItem, refMtbColt, refMtbColr) -> { + RunnableArgssss onItemClicked = (clickedItem, refMtbColt, refMtbColr, executeImmediately) -> { if (!noLUPresent.get() && ((SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) || clickedItem.getTempPickData() != null)) { this.mViewmodel.dispatchOrdineRow(clickedItem, refMtbColt, refMtbColr, - SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()); + SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale(), executeImmediately); } - }); + }; + + spedizioneListAdapter.setOnItemClicked(onItemClicked); + spedizioneListAdapter.setOnItemLongClicked(onItemClicked); } 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 52d48cfb..34bfd90b 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,6 +1,5 @@ package it.integry.integrywmsnative.gest.spedizione; -import androidx.annotation.IntegerRes; import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; @@ -11,18 +10,15 @@ 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; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; -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; @@ -65,6 +61,7 @@ import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.interfaces.ColliScaricoRESTConsumerInterface; +import it.integry.integrywmsnative.core.rest.model.CriterioDistribuzioneEnum; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.LoadColliDTO; @@ -89,7 +86,6 @@ 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; @@ -99,7 +95,6 @@ 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 { @@ -882,7 +877,7 @@ public class SpedizioneViewModel { refMtbColt = matchedItem.getTempPickData().getSourceMtbColt(); } MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; - this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null); + this.dispatchOrdineRow(matchedItem, refMtbColt, refMtbColr, refMtbColr == null, false); } } else { @@ -901,7 +896,7 @@ public class SpedizioneViewModel { } - public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged) { + public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) { //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta // MtbColr refMtbColr = refMtbColt != null ? refMtbColt.getMtbColr().get(0) : null; @@ -962,20 +957,20 @@ public class SpedizioneViewModel { .findFirst() .orElse(null); - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColr, canPartitaMagBeChanged, executeImmediately); } }); } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColrs.get(0), canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, scannedMtbColrs.get(0), canPartitaMagBeChanged, executeImmediately); } } else { - dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged); + dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, refMtbColr, null, canPartitaMagBeChanged, executeImmediately); } } - private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) { + private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr refMtbColr, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged, boolean executeImmediately) { BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd(); BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd(); BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd(); @@ -1104,10 +1099,14 @@ public class SpedizioneViewModel { 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(), 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); - }); + if (executeImmediately) { + this.saveNewRow(pickingObjectDTO, refMtbColt, numCnfDaPrelevare, qtaCnfDaPrelevare, qtaColDaPrelevare, partitaMag, dataScad, false, false); + } else { + MtbColt finalRefMtbColt = refMtbColt; + 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, true); + }); + } } 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 canOverflowOrderQuantity, boolean canPartitaMagBeChanged, RunnableArgss onComplete) { @@ -1230,7 +1229,7 @@ public class SpedizioneViewModel { MtbColt finalRefMtbColt = refMtbColt; this.onItemDispatched(pickingObjectDTO, pickingObjectDTO.getMtbAart(), initialNumCnf, initialQtaCnf, initialQtaTot, null, null, null, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, partitaMag, dataScad, mCanOverflowOrderQuantity, true, (pickedQuantityDTO, shouldCloseLU) -> { - this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU); + this.saveNewRow(pickingObjectDTO, finalRefMtbColt, pickedQuantityDTO.getNumCnf(), pickedQuantityDTO.getQtaCnf(), pickedQuantityDTO.getQtaTot(), pickedQuantityDTO.getPartitaMag(), pickedQuantityDTO.getDataScad(), shouldCloseLU, true); }); } @@ -1391,7 +1390,7 @@ public class SpedizioneViewModel { }, this::sendError); } - public void saveNewRow(PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU) { + public void saveNewRow(PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, LocalDate dataScad, boolean shouldCloseLU, boolean removeFilters) { this.sendOnLoadingStarted(); //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta @@ -1453,7 +1452,7 @@ public class SpedizioneViewModel { if (refMtbColt != null) { - MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && refMtbColt.getMtbColr().size() > 0 ? refMtbColt.getMtbColr().get(0) : null; + MtbColr originalRefMtbColr = refMtbColt.getMtbColr() != null && !refMtbColt.getMtbColr().isEmpty() ? refMtbColt.getMtbColr().get(0) : null; if (originalRefMtbColr != null) { refMtbColr.setId(originalRefMtbColr.getId()); @@ -1468,7 +1467,11 @@ public class SpedizioneViewModel { } //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei - resetMatchedRows(); + if (removeFilters) + resetMatchedRows(); + else + //Refresh della lista forzato + this.mPickingList.postValue(this.mPickingList.getValue()); this.sendOnRowSaved(); this.sendOnLoadingEnded(); @@ -1620,6 +1623,23 @@ public class SpedizioneViewModel { //.setPrintSSCC(shouldPrint) .setOrderCodMdep(codMdep); + if (this.mColliScaricoRESTConsumer instanceof ColliLavorazioneRESTConsumer && !mIsOrdTrasf) { + closeUDSRequestDto.setCriterioDistribuzione(CriterioDistribuzioneEnum.FASE); + + var codAnag = mTestateOrdini.stream() + .map(OrdineUscitaInevasoDTO::getCodAnagOrd) + .filter(Objects::nonNull) + .distinct() + .findFirst() + .get(); + closeUDSRequestDto.setDocumentCodAnag(codAnag); + + closeUDSRequestDto + .setCreateDocument(SettingsManager.iDB().isProduzioneGeneraDocScar()) + .setDocumentCodDtip(SettingsManager.iDB().getProduzioneCodDtipScar()); + + } + this.mColliScaricoRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> { onComplete.run(closeResponse.getGeneratedMtbColts()); }, this::sendError); @@ -2017,7 +2037,8 @@ public class SpedizioneViewModel { void createDocs() { var loadCollidto = new LoadColliDTO(); - var codAnag = mTestateOrdini.stream().map(OrdineUscitaInevasoDTO::getCodAnagOrd) + var codAnag = mTestateOrdini.stream() + .map(OrdineUscitaInevasoDTO::getCodAnagOrd) .filter(Objects::nonNull) .distinct() .findFirst() diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java index b466f34c..88e2bab4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/ui/SpedizioneListAdapter.java @@ -25,7 +25,7 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; -import it.integry.integrywmsnative.core.expansion.RunnableArgsss; +import it.integry.integrywmsnative.core.expansion.RunnableArgssss; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; @@ -43,7 +43,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter mDataset = new ArrayList<>(); - private RunnableArgsss mOnItemClicked; + private RunnableArgssss mOnItemClicked; + private RunnableArgssss mOnItemLongClicked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -83,10 +84,14 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter onItemClicked) { + public void setOnItemClicked(RunnableArgssss onItemClicked) { this.mOnItemClicked = onItemClicked; } + public void setOnItemLongClicked(RunnableArgssss onItemLongClicked) { + this.mOnItemLongClicked = onItemLongClicked; + } + @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { @@ -179,7 +184,13 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { if (this.mOnItemClicked != null) - this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr()); + this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr(), false); + }); + + holder.mBinding.getRoot().setOnLongClickListener(v -> { + if (this.mOnItemLongClicked != null) + this.mOnItemLongClicked.run(pickingObjectDTO.getOriginalModel(), pickingObjectDTO.getSourceMtbColt(), pickingObjectDTO.getSourceMtbColr(), true); + return true; }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java index 8edf5632..e2919259 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java @@ -239,7 +239,8 @@ public class VersamentoMerceViewModel { this.mColliMagazzinoRESTConsumer.spostaArtsTraUL( clonedSourceTestata, destMtbColt, - () -> { + false, + (generatedMtbColrs) -> { this.sendOnDataSaved(); onComplete.run(); }, diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java index 54f9078d..100d3a04 100644 --- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownAdapter.java @@ -11,23 +11,25 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.databinding.ArrayAdapterTwoLinesItemBinding; public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> { private List> mObjects; + private RunnableArgs onTextChanged; public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource) { super(context, resource); } - public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull SimpleAutoCompleteTwoLinesDropdownListModel[] objects) { - super(context, R.layout.array_adapter_two_lines_item, objects); - mObjects = Arrays.asList(objects); + public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, int resource, @NonNull List> objects) { + super(context, resource, objects); + mObjects = objects; } public SimpleAutoCompleteTwoLinesDropdownAdapter(@NonNull Context context, @NonNull List> objects) { @@ -35,10 +37,15 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter setOnTextChanged(RunnableArgs onTextChanged) { + this.onTextChanged = onTextChanged; + return this; + } + @NonNull @Override public Filter getFilter() { - return new StringFilter(mObjects); + return new StringFilter(mObjects, this.onTextChanged); } @@ -67,9 +74,12 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> sourceObjects; + private final RunnableArgs onTextChanged; - public StringFilter(List> objects) { - if(objects == null) return; + public StringFilter(List> objects, RunnableArgs onTextChanged) { + this.onTextChanged = onTextChanged; + + if (objects == null) return; sourceObjects = new ArrayList<>(); synchronized (this) { @@ -79,17 +89,16 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter> filter = new ArrayList<>(); + List> filter = sourceObjects.parallelStream() + .filter(x -> x.getDescription().toLowerCase().contains(filterSeq) || + x.getTitle().toLowerCase().contains(filterSeq)) + .collect(Collectors.toList()); - for (SimpleAutoCompleteTwoLinesDropdownListModel object : sourceObjects) { - // the filtering itself: - if (object.getDescription().toLowerCase().contains(filterSeq) || - object.getTitle().toLowerCase().contains(filterSeq)) - filter.add(object); - } result.count = filter.size(); result.values = filter; @@ -108,13 +117,11 @@ public class SimpleAutoCompleteTwoLinesDropdownAdapter extends ArrayAdapter 2) { + if (constraint != null && constraint.length() > 2) { ArrayList> filtered = (ArrayList>) results.values; - notifyDataSetChanged(); clear(); - for (int i = 0, l = filtered.size(); i < l; i++) - add(filtered.get(i)); - notifyDataSetInvalidated(); + addAll(filtered); + notifyDataSetChanged(); } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java index 9b3bbe4f..3500208d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteTwoLinesDropdownListModel.java @@ -33,4 +33,9 @@ public class SimpleAutoCompleteTwoLinesDropdownListModel { this.originalModel = originalModel; return this; } + + @Override + public String toString() { + return getTitle() + " - " + getDescription(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java index 6d7f1218..26ada95a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/viewmodel/DialogAskCliente_Page1_Cliente_ArrayAdapter.java @@ -37,7 +37,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter onComplete; + private final Runnable onAbort; + + private DialogAskCommessaBinding mBindings; + private Context mContext; + + private int mBarcodeScannerIstanceID; + + private JtbComt selectedJtbComt; + + //Pass here all external parameters + public static DialogAskCommessaView newInstance(RunnableArgs onComplete, Runnable onAbort) { + return new DialogAskCommessaView(onComplete, onAbort); + } + + private DialogAskCommessaView(RunnableArgs onComplete, Runnable onAbort) { + super(); + + this.onComplete = onComplete; + this.onAbort = onAbort; + + MainApplication.appComponent + .dialogAskCommessaComponent() + .create() + .inject(this); + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogAskCommessaBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(false); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .setNeutralButton(R.string.action_close, null) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + //Volutamente vuoto + }) + .create(); + + + alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + var alertDialog = ((AlertDialog) dialogInterface); + + var positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); + positiveButton.setOnClickListener(view -> { + if (selectedJtbComt != null) { + this.onComplete.run(this.selectedJtbComt); + alertDialog.dismiss(); + } else { + Snackbar.make(mContext, mBindings.getRoot(), "Seleziona una commessa prima di procedere", Snackbar.LENGTH_LONG).show(); + } + }); + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + + BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + } + + @Override + public void onInit(DialogInterface dialogInterface) { + this.initBarcode(); + + this.mViewModel.setListener(this); + this.mViewModel.init(); + } + + private void initBarcode() { + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessful) + .setOnScanFailed(this::onError)); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); +// this.mViewModel.processBarcodeDTO(data, BarcodeManager::enable); + }; + + @Override + public void onCommesseLoaded(List dataList) { + requireActivity().runOnUiThread(() -> { + + var listModel = dataList.stream() + .map(x -> new SimpleAutoCompleteTwoLinesDropdownListModel() + .setTitle(x.getCodJcom()) + .setDescription(x.getDescrizione()) + .setOriginalModel(x)) + .collect(Collectors.toList()); + + + var adapter = new SimpleAutoCompleteTwoLinesDropdownAdapter<>(requireActivity(), listModel); + mBindings.dropdownCommessa.setAdapter(adapter); + + mBindings.inputCliente.getEditText().addTextChangedListener(new TextWatcherAdapter() { + @Override + public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { + selectedJtbComt = null; + } + }); + + mBindings.dropdownCommessa.setOnItemClickListener((parent, view, position, id) -> { + selectedJtbComt = Objects.requireNonNull(adapter.getItem(position)).getOriginalModel(); + }); + + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java new file mode 100644 index 00000000..09fefc23 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_commessa/DialogAskCommessaViewModel.java @@ -0,0 +1,69 @@ +package it.integry.integrywmsnative.view.dialogs.ask_commessa; + +import com.google.common.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.JtbComt; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; + +public class DialogAskCommessaViewModel { + + private final SystemRESTConsumer systemRESTConsumer; + + private Listener mListener; + + @Inject + public DialogAskCommessaViewModel(SystemRESTConsumer systemRESTConsumer) { + this.systemRESTConsumer = systemRESTConsumer; + } + + + + public void init() { + Type jtbComtListType = new TypeToken>() {}.getType(); + + this.systemRESTConsumer.>processSql("SELECT * " + + "FROM jtb_comt " + + "WHERE ISNULL(stato_commessa, '') <> 'CHIUSA'", jtbComtListType, data -> { + + this.sendOnCommesseLoaded(data); + + }, this::sendError); + } + + + + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendOnCommesseLoaded(List commesseList) { + if (this.mListener != null) mListener.onCommesseLoaded(commesseList); + } + + public DialogAskCommessaViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + interface Listener extends ILoadingListener { + void onCommesseLoaded(List dataList); + + void onError(Exception ex); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java index c5e85b6e..03e949d1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java @@ -6,9 +6,9 @@ import android.widget.ArrayAdapter; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; -import com.annimon.stream.Stream; - +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import it.integry.integrywmsnative.core.model.MtbTCol; @@ -20,10 +20,12 @@ public class DialogInputLUProdTipoColloAdapter extends ArrayAdapter { - mDataset = Stream.of(data) - .map(x -> new DialogInputLUProdTipoColloListModel() - .setOriginalModel(x)) - .toList(); + if (data != null) + mDataset = data.stream() + .map(x -> new DialogInputLUProdTipoColloListModel() + .setOriginalModel(x)) + .collect(Collectors.toList()); + else mDataset = new ArrayList<>(); clear(); addAll(mDataset); diff --git a/app/src/main/res/drawable/ic_puzzle.xml b/app/src/main/res/drawable/ic_puzzle.xml new file mode 100644 index 00000000..e275ad09 --- /dev/null +++ b/app/src/main/res/drawable/ic_puzzle.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/dialog_ask_commessa.xml b/app/src/main/res/layout/dialog_ask_commessa.xml new file mode 100644 index 00000000..482543f4 --- /dev/null +++ b/app/src/main/res/layout/dialog_ask_commessa.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml b/app/src/main/res/layout/dropdown_simple_item_w_subtitle_bottom.xml similarity index 100% rename from app/src/main/res/layout/dropdown_simple_item_w_subtitle.xml rename to app/src/main/res/layout/dropdown_simple_item_w_subtitle_bottom.xml diff --git a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml index 2679d28e..339b5918 100644 --- a/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml +++ b/app/src/main/res/layout/fragment_prod_rientro_merce_order_detail.xml @@ -7,6 +7,7 @@ + @@ -301,8 +302,8 @@ + android:layout_weight="1" + android:orientation="vertical"> + android:layout_gravity="end" + android:orientation="horizontal"> + android:orientation="vertical" + android:visibility="@{view.isOrderColli ? View.GONE : View.VISIBLE}"> + android:textStyle="bold" + tools:text="KG" /> + android:textColor="@android:color/black" + tools:text="KG" /> @@ -490,16 +492,16 @@ + android:layout_weight="1" + android:orientation="vertical"> diff --git a/app/src/main/res/layout/prod_recupero_materiale_list_item.xml b/app/src/main/res/layout/prod_recupero_materiale_list_item.xml index 8611989c..87c9bf05 100644 --- a/app/src/main/res/layout/prod_recupero_materiale_list_item.xml +++ b/app/src/main/res/layout/prod_recupero_materiale_list_item.xml @@ -10,7 +10,7 @@ android:paddingVertical="8dp" android:paddingEnd="8dp"> - - + - + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:layout_gravity="center_vertical"> - - + + + android:layout_toEndOf="@id/cod_mart"> + + + @@ -99,16 +115,49 @@ - + - + + + + + + + + + + diff --git a/app/src/main/res/values/custom_colors.xml b/app/src/main/res/values/custom_colors.xml index 230b4313..77a8b4a3 100644 --- a/app/src/main/res/values/custom_colors.xml +++ b/app/src/main/res/values/custom_colors.xml @@ -93,6 +93,10 @@ #0277BD + #FFCC80 + #FFB74D + #FFA726 + #FF9800 #88FB8C00 #FB8C00 #F57C00 diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle index 71604865..00510dd7 100644 --- a/barcode_base_android_library/build.gradle +++ b/barcode_base_android_library/build.gradle @@ -32,5 +32,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' } diff --git a/build.gradle b/build.gradle index d0fd349c..69f6067d 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.9.20' - agp_version = '8.4.0' + agp_version = '8.6.0' } repositories { @@ -13,12 +13,12 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:$agp_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.4.1' + classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.firebase:perf-plugin:1.4.2' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' + classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -40,7 +40,7 @@ allprojects { // } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0b456dee..69d0c2a3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Feb 13 15:14:43 CET 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle index 56891476..0fab9d4d 100644 --- a/honeywellscannerlibrary/build.gradle +++ b/honeywellscannerlibrary/build.gradle @@ -33,6 +33,6 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation project(":honeywellsdk") - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(path: ':barcode_base_android_library') } diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle index 6b05d719..7137d320 100644 --- a/keyobardemulatorscannerlibrary/build.gradle +++ b/keyobardemulatorscannerlibrary/build.gradle @@ -32,6 +32,6 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(':barcode_base_android_library') } diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle index b084ab91..d42abd4d 100644 --- a/pointmobilescannerlibrary/build.gradle +++ b/pointmobilescannerlibrary/build.gradle @@ -30,6 +30,6 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation project(':barcode_base_android_library') } diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle index 7d952295..798703e1 100644 --- a/zebrascannerlibrary/build.gradle +++ b/zebrascannerlibrary/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' testImplementation 'junit:junit:4.13.2' implementation project(path: ':barcode_base_android_library') }