From 77e3d00bef51108c890d9003f35a54a5355cbfb7 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 7 Aug 2023 13:01:37 +0200 Subject: [PATCH] =?UTF-8?q?Implementata=20gestione=20che=20aggancia=20un?= =?UTF-8?q?=20barcode=20imballo=20ad=20un=20articolo=20gi=C3=A0=20esistent?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainApplicationComponent.java | 7 +- .../rest/consumers/ArticoloRESTConsumer.java | 63 ++++++--- .../ArticoloRESTConsumerService.java | 11 +- .../SearchArticoloByBarcodeRequestDTO.java | 25 ++++ .../SearchArticoloByBarcodeResponseDTO.java | 20 +++ .../UpdateBarcodeImballoRequestDTO.java | 26 ++++ .../AccettazioneBollaPickingActivity.java | 8 ++ .../AccettazioneBollaPickingViewModel.java | 16 ++- .../AccettazioneOrdiniPickingViewModel.java | 2 +- .../PickingLiberoViewModel.java | 2 +- .../RettificaGiacenzeViewModel.java | 2 +- .../gest/spedizione/SpedizioneViewModel.java | 2 +- ...indProductBarcodeWithPackageComponent.java | 14 ++ ...ogBindProductBarcodeWithPackageModule.java | 15 +++ ...alogBindProductBarcodeWithPackageView.java | 121 ++++++++++++++++++ ...indProductBarcodeWithPackageViewModel.java | 56 ++++++++ .../DialogChooseArtsFromMtbColrList.java | 2 +- .../scan_art/DialogScanArtViewModel.java | 2 +- .../DialogScanOrCreateLUViewModel.java | 2 +- ...alog_bind_product_barcode_with_package.xml | 74 +++++++++++ 20 files changed, 440 insertions(+), 30 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeRequestDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeResponseDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/UpdateBarcodeImballoRequestDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageViewModel.java create mode 100644 app/src/main/res/layout/dialog_bind_product_barcode_with_package.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index e3d62631..69e967c2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -102,6 +102,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.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent; +import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent; @@ -183,7 +185,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogInfoSituazioneArticoloModule.class, DialogSelectArtToOrderModule.class, MainAccettazioneBollaElencoModule.class, - AccettazioneBollaPickingModule.class + AccettazioneBollaPickingModule.class, + DialogBindProductBarcodeWithPackageModule.class }) public interface MainApplicationComponent { @@ -309,6 +312,8 @@ public interface MainApplicationComponent { AccettazioneBollaPickingComponent.Factory accettazioneBollaPickingComponent(); + DialogBindProductBarcodeWithPackageComponent.Factory dialogBindProductBarcodeWithPackageComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java index 26a6e35c..0dad8b69 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java @@ -19,6 +19,9 @@ import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeRequestDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeResponseDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.UpdateBarcodeImballoRequestDTO; import it.integry.integrywmsnative.core.utility.UtilityQuery; import retrofit2.Call; import retrofit2.Callback; @@ -33,23 +36,28 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { this.systemRESTConsumer = systemRESTConsumer; } - public void getByBarcodeProd(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void searchByBarcode(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) { ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); - articoloRESTConsumerService.getByBarcodeProd(barcodeProd).enqueue(new Callback<>() { - @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "getByBarcodeProd", (m) -> { - List aartList = response.body().getEntityList(); - aartList = aartList != null ? Stream.of(aartList).filter(x -> x.getFlagStato().equalsIgnoreCase("A")).toList() : null; - onComplete.run(aartList); - }, onFailed); - } - @Override - public void onFailure(Call> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); + var request = new SearchArticoloByBarcodeRequestDTO() + .setBarcode(barcodeProd) + .setOnlyActive(true); + + articoloRESTConsumerService + .searchByBarcode(request) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "searchByBarcode", (m) -> { + onComplete.run(response.body().getDto().getArts()); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); } @@ -191,4 +199,29 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer { onComplete.run(inputMtbAart); }, onFailed); } + + + public void updateBarcodeImballo(String codMart, String newBarcodeImballo, Runnable onComplete, RunnableArgs onFailed) { + ArticoloRESTConsumerService articoloRESTConsumerService = RESTBuilder.getService(ArticoloRESTConsumerService.class); + + var request = new UpdateBarcodeImballoRequestDTO() + .setCodMart(codMart) + .setNewBarcodeImballo(newBarcodeImballo); + + articoloRESTConsumerService + .updateBarcodeImballo(request) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "updateBarcodeImballo", m -> { + onComplete.run(); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumerService.java index 61cca9b4..f872a169 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumerService.java @@ -6,6 +6,9 @@ import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCodMartRequestDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeRequestDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeResponseDTO; +import it.integry.integrywmsnative.core.rest.model.articolo.UpdateBarcodeImballoRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -14,13 +17,15 @@ import retrofit2.http.Query; public interface ArticoloRESTConsumerService { - - @POST("SM2getArticoloByBarcode") - Call> getByBarcodeProd(@Query("barcode") String barcodeProd); + @POST("wms/articolo/searchByBarcode") + Call> searchByBarcode(@Body() SearchArticoloByBarcodeRequestDTO searchArticoloByBarcodeRequest); @POST("wms/articolo/retrieveByCodMart") Call> getByCodMart(@Body RetrieveArticoloByCodMartRequestDTO retrieveArticoloByCodMartRequest); + @POST("wms/articolo/updateBarcodeImballo") + Call> updateBarcodeImballo(@Body UpdateBarcodeImballoRequestDTO updateBarcodeImballoRequest); + @GET("getProductLotStatus") Call>> getStatoPartita(@Query("codMart") String codMart, @Query("partitaMag") String partitaMag); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeRequestDTO.java new file mode 100644 index 00000000..d7f58f79 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeRequestDTO.java @@ -0,0 +1,25 @@ +package it.integry.integrywmsnative.core.rest.model.articolo; + +public class SearchArticoloByBarcodeRequestDTO { + + private String barcode; + private boolean onlyActive; + + public String getBarcode() { + return barcode; + } + + public SearchArticoloByBarcodeRequestDTO setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public boolean isOnlyActive() { + return onlyActive; + } + + public SearchArticoloByBarcodeRequestDTO setOnlyActive(boolean onlyActive) { + this.onlyActive = onlyActive; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeResponseDTO.java new file mode 100644 index 00000000..c55fe7ef --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/SearchArticoloByBarcodeResponseDTO.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.core.rest.model.articolo; + + +import java.util.List; + +import it.integry.integrywmsnative.core.model.MtbAart; + +public class SearchArticoloByBarcodeResponseDTO { + + private List arts; + + public List getArts() { + return arts; + } + + public SearchArticoloByBarcodeResponseDTO setArts(List arts) { + this.arts = arts; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/UpdateBarcodeImballoRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/UpdateBarcodeImballoRequestDTO.java new file mode 100644 index 00000000..dc20d0bd --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/articolo/UpdateBarcodeImballoRequestDTO.java @@ -0,0 +1,26 @@ +package it.integry.integrywmsnative.core.rest.model.articolo; + +public class UpdateBarcodeImballoRequestDTO { + + private String codMart; + + private String newBarcodeImballo; + + public String getCodMart() { + return codMart; + } + + public UpdateBarcodeImballoRequestDTO setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getNewBarcodeImballo() { + return newBarcodeImballo; + } + + public UpdateBarcodeImballoRequestDTO setNewBarcodeImballo(String newBarcodeImballo) { + this.newBarcodeImballo = newBarcodeImballo; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java index a161c8d6..fc48ae86 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingActivity.java @@ -61,6 +61,7 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; import it.integry.integrywmsnative.view.dialogs.ask_should_versamento_automatico_ul.DialogAskShouldVersamentoAutomaticoULView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; +import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageView; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View; @@ -538,6 +539,13 @@ public class AccettazioneBollaPickingActivity extends BaseActivity implements Ac }); } + @Override + public void onUnknownBarcodeScanned(String barcode) { + DialogBindProductBarcodeWithPackageView + .newInstance(barcode, null) + .show(getSupportFragmentManager(), DialogBindProductBarcodeWithPackageView.class.getName()); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); 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 f2f9bf1c..bf4d2c55 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 @@ -19,7 +19,6 @@ import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.exception.AlreadyUsedAnonymousLabelException; import it.integry.integrywmsnative.core.exception.LUScanNotGrantedException; import it.integry.integrywmsnative.core.exception.NoArtsFoundException; -import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; @@ -30,6 +29,7 @@ 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.MtbTCol; +import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; @@ -55,7 +55,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.SitBollaAccettazioneDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; -import it.integry.integrywmsnative.core.model.dto.AlreadyRegisteredUDCDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.accettazione_bolla_picking.rest.AccettazioneBollaPickingRESTConsumer; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.HistoryMtbAartDTO; @@ -307,12 +306,14 @@ public class AccettazioneBollaPickingViewModel { } private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); } else { - this.sendError(new NoResultFromBarcodeException(barcodeProd)); +// this.sendError(new NoResultFromBarcodeException(barcodeProd)); + onComplete.run(); + this.sendOnUnknownBarcodeScanned(barcodeProd); } }, this::sendError); @@ -890,6 +891,11 @@ public class AccettazioneBollaPickingViewModel { mListener.onULVersata(versamentoAutomaticoULResponseDTO, onComplete); } + private void sendOnUnknownBarcodeScanned(String barocde) { + if (this.mListener != null) + mListener.onUnknownBarcodeScanned(barocde); + } + public AccettazioneBollaPickingViewModel setListeners(Listener listener) { this.mListener = listener; return this; @@ -932,6 +938,8 @@ public class AccettazioneBollaPickingViewModel { void onULVersata(VersamentoAutomaticoULResponseDTO versamentoAutomaticoULResponseDTO, Runnable onComplete); + void onUnknownBarcodeScanned(String barcode); + } } \ No newline at end of file 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 08b6b78a..096d0659 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 @@ -323,7 +323,7 @@ public class AccettazioneOrdiniPickingViewModel { } private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); 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 f74233f3..56132e10 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 @@ -254,7 +254,7 @@ public class PickingLiberoViewModel { } private void loadArticolo(String barcodeProd, Ean128Model ean128Model, Runnable onComplete) { - mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { MtbAart articolo = mtbAartList.get(0); MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index e523473f..a0050f42 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -164,7 +164,7 @@ public class RettificaGiacenzeViewModel { } private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (onComplete != null) onComplete.run(); if (mtbAartList != null && mtbAartList.size() > 0) { 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 60c39ebe..c693062e 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 @@ -595,7 +595,7 @@ public class SpedizioneViewModel { } private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList.size() == 1) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageComponent.java new file mode 100644 index 00000000..a888b487 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogBindProductBarcodeWithPackageComponent { + + @Subcomponent.Factory + interface Factory { + DialogBindProductBarcodeWithPackageComponent create(); + } + + void inject(DialogBindProductBarcodeWithPackageView dialogBindProductBarcodeWithPackageView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageModule.java new file mode 100644 index 00000000..cc834d12 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageModule.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; + +@Module(subcomponents = DialogBindProductBarcodeWithPackageComponent.class) +public class DialogBindProductBarcodeWithPackageModule { + + @Provides + DialogBindProductBarcodeWithPackageViewModel providesDialogBindProductBarcodeWithPackageViewModel(ArticoloRESTConsumer articoloRESTConsumer) { + return new DialogBindProductBarcodeWithPackageViewModel(articoloRESTConsumer); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageView.java new file mode 100644 index 00000000..129eb719 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageView.java @@ -0,0 +1,121 @@ +package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogBindProductBarcodeWithPackageBinding; + +public class DialogBindProductBarcodeWithPackageView extends BaseDialogFragment { + + + @Inject + DialogBindProductBarcodeWithPackageViewModel mViewModel; + + private DialogBindProductBarcodeWithPackageBinding mBindings; + private Context mContext; + + private final String unknownBarcode; + private final Runnable onAbort; + + + private int mBarcodeScannerIstanceID; + + //Pass here all external parameters + public static DialogBindProductBarcodeWithPackageView newInstance(String unknownBarcode,Runnable onAbort) { + return new DialogBindProductBarcodeWithPackageView(unknownBarcode, onAbort); + } + + private DialogBindProductBarcodeWithPackageView(String unknownBarcode, Runnable onAbort) { + super(); + + this.unknownBarcode = unknownBarcode; + this.onAbort = onAbort; + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogBindProductBarcodeWithPackageBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + setCancelable(false); + + MainApplication.appComponent + .dialogBindProductBarcodeWithPackageComponent() + .create() + .inject(this); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setNegativeButton(R.string.abort, (dialogInterface, i) -> { + if(this.onAbort != null) onAbort.run(); + }) + .setCancelable(isCancelable()) + .create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + + initBarcode(); + mViewModel.init(unknownBarcode); + + return alertDialog; + } + + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + BarcodeManager.removeCallback(mBarcodeScannerIstanceID); + BarcodeManager.enable(); + super.onDismiss(dialog); + } + + + + + private void initBarcode() { + mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessful(onScanSuccessfull) + .setOnScanFailed(this::onError)); + BarcodeManager.enable(); + setBarcodeListener(true); + } + + + private final RunnableArgs onScanSuccessfull = data -> { + this.onLoadingStarted(); + + this.mViewModel.processBarcodeDTO(data, () -> { + this.onLoadingEnded(); + + dismiss(); + }, this::onError); + }; + + + @Override + public void onError(Exception ex) { + super.onError(ex); + BarcodeManager.enable(); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageViewModel.java new file mode 100644 index 00000000..a93784e3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/bind_product_barcode_with_package/DialogBindProductBarcodeWithPackageViewModel.java @@ -0,0 +1,56 @@ +package it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; + +public class DialogBindProductBarcodeWithPackageViewModel { + + private ArticoloRESTConsumer articoloRESTConsumer; + + private String unknownBarcode; + + @Inject + public DialogBindProductBarcodeWithPackageViewModel(ArticoloRESTConsumer articoloRESTConsumer) { + this.articoloRESTConsumer = articoloRESTConsumer; + } + + public void init(String unknownBarcode) { + this.unknownBarcode = unknownBarcode; + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete, RunnableArgs onFailed) { + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO) || + UtilityBarcode.isEtichettaPosizione(barcodeScanDTO) || + UtilityBarcode.isEtichetta128(barcodeScanDTO) || + UtilityBarcode.isEanPeso(barcodeScanDTO)) { + + onFailed.run(new Exception("E' necessario scansionare un'etichetta EAN13 per procedere")); + } else { + this.loadArticolo(barcodeScanDTO.getStringValue(), onComplete, onFailed); + + } + } + + private void loadArticolo(String stringValue, Runnable onComplete, RunnableArgs onFailed) { + this.articoloRESTConsumer.searchByBarcode(stringValue, mtbAarts -> { + + if(mtbAarts == null || mtbAarts.isEmpty()) { + onFailed.run(new Exception("Nessun articolo trovato con il barcode: " + stringValue)); + return; + } + + if(mtbAarts.size() > 1) { + onFailed.run(new Exception("Sono stati trovati " + mtbAarts.size() + " articoli agganciati al barcode: " + stringValue)); + return; + } + + var mtbAart = mtbAarts.get(0); + + articoloRESTConsumer.updateBarcodeImballo(mtbAart.getCodMart(), unknownBarcode, onComplete, onFailed); + }, onFailed); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java index 1036456a..e2bc9c39 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrList.java @@ -294,7 +294,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen private void loadArticolo(String barcodeProd, Ean128Model ean128Model) { - this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.articoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { MtbAart articolo = mtbAartList.get(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java index ba67634f..964fb7b3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java @@ -179,7 +179,7 @@ public class DialogScanArtViewModel { private void loadArticolo(@NotNull String barcodeProd, Ean128Model ean128Model, RunnableArgssss> onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeProd, mtbAartList -> { if (mtbAartList != null && mtbAartList.size() > 0) { MtbAart firstArt = mtbAartList.get(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java index aec8e6c4..0c3c77b3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUViewModel.java @@ -168,7 +168,7 @@ public class DialogScanOrCreateLUViewModel { } private void executeEAN13(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - this.mArticoloRESTConsumer.getByBarcodeProd(barcodeScanDTO.getStringValue(), articoli -> { + this.mArticoloRESTConsumer.searchByBarcode(barcodeScanDTO.getStringValue(), articoli -> { if (articoli != null && articoli.size() == 1) { MtbAart articolo = articoli.get(0); MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione()); diff --git a/app/src/main/res/layout/dialog_bind_product_barcode_with_package.xml b/app/src/main/res/layout/dialog_bind_product_barcode_with_package.xml new file mode 100644 index 00000000..295405d7 --- /dev/null +++ b/app/src/main/res/layout/dialog_bind_product_barcode_with_package.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file