diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index d981c98a..b96c0bc9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -92,6 +92,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.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; import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent; @@ -166,6 +168,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr BottomSheetInventarioActionsModule.class, BottomSheetInventarioRowActionsModule.class, BottomSheetMtbColrEditModalModule.class, + DialogChooseArtsFromMtbAartListModule.class, + }) public interface MainApplicationComponent { @@ -279,6 +283,8 @@ public interface MainApplicationComponent { BottomSheetMtbColrEditModalComponent.Factory bottomSheetMtbColrEditModalComponent(); + DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java index 7bc7649f..3fc1c52f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java @@ -18,7 +18,6 @@ public class BindableBoolean implements Observable { this.mValue = startValue; } - @Override public void addOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) { synchronized (this) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java index 1e620a2d..4ccc6c0d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/OrdiniRESTConsumer.java @@ -46,9 +46,7 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { } public void getSuggestedPickingList(String codMdep, List sitArtOrdList, RunnableArgs> onComplete, RunnableArgs onFailed) { - OrdiniRESTConsumerService service = RESTBuilder.getService(OrdiniRESTConsumerService.class, 90); - service .getSuggestedPickingList(codMdep, sitArtOrdList) .enqueue(new Callback<>() { @@ -109,7 +107,6 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer { @Override public void onFailure(Call>> call, Throwable t) { - UtilityLogger.error(new Exception(t)); onFailed.run(new Exception(t)); } }); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickItemRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickItemRequestDTO.java index 684f3b41..6eb4335f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickItemRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickItemRequestDTO.java @@ -11,6 +11,10 @@ public class MagazzinoAutomaticoPickItemRequestDTO { private BigDecimal qtaCnf; private BigDecimal numCnf; + public MagazzinoAutomaticoPickItemRequestDTO(String codMart) { + this.codMart = codMart; + } + public String getCodMart() { return codMart; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickOrderRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickOrderRequestDTO.java index 2adb9b9a..18b1c4cb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickOrderRequestDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/magazzino_automatico/MagazzinoAutomaticoPickOrderRequestDTO.java @@ -4,6 +4,7 @@ import java.time.LocalDate; public class MagazzinoAutomaticoPickOrderRequestDTO { + private final String type = "dtb_ordr"; private LocalDate dataCons; private LocalDate dataOrd; private String gestione; @@ -35,4 +36,8 @@ public class MagazzinoAutomaticoPickOrderRequestDTO { this.dataCons = dataCons; return this; } + + public String getType() { + return type; + } } 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 bc4bdac2..ee067f9b 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 @@ -73,6 +73,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsView; +import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListView; import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView; import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLU; import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUView; @@ -409,7 +410,8 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo y.getRefMtbColr().getGestioneEnum().equals(mtbColrToDispatch.getGestioneEnum()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodMart(), mtbColrToDispatch.getCodMart()) && UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodTagl(), mtbColrToDispatch.getCodTagl()) && - UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/ y.getRefMtbColr().equals(mtbColrToDispatch)) + UtilityString.equalsIgnoreCase(y.getRefMtbColr().getCodCol(), mtbColrToDispatch.getCodCol())*/ + y.getRefMtbColr().equals(mtbColrToDispatch)) .map(MtbColr::getNumCnf) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -925,7 +927,16 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo @Override public void onCreateDocsRequest() { DialogYesNoView.newInstance("Chiusura ordine", "Vuoi creare i documenti per gli ordini selezionati?", result -> { - this.mViewmodel.onCreateDocsAnswered(result); + + switch (result) { + case YES: + this.mViewmodel.createDocs(); + break; + case NO: + this.onOrderClosed(); + break; + } + }).show(this.getSupportFragmentManager(), "tag"); } @@ -935,6 +946,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo .show(getSupportFragmentManager(), "tag"); } + @Override + public void onChooseArtsRequest(List artsList, RunnableArgs> onComplete) { + DialogChooseArtsFromMtbAartListView.newInstance(artsList, onComplete, this::onLoadingEnded) + .show(getSupportFragmentManager(), "tag"); + } + @Override public void onOrderClosed() { this.onLoadingEnded(); 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 c16f4665..c4f86cfb 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 @@ -7,13 +7,10 @@ import com.annimon.stream.Optional; import com.annimon.stream.Stream; import org.apache.commons.lang3.NotImplementedException; -import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -50,7 +47,6 @@ import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.dto.PickDataDTO; import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.report.ReportType; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer; @@ -67,6 +63,7 @@ import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.LoadColliDTO; import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; +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.magazzino_automatico.MagazzinoAutomaticoPickOrderRequestDTO; import it.integry.integrywmsnative.core.rest.model.uds.CanUDSBeDeletedRequestDTO; @@ -91,7 +88,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.DialogConsts; public class SpedizioneViewModel { @@ -275,6 +271,14 @@ public class SpedizioneViewModel { if (this.mListener != null) mListener.onCreateDocsRequest(); } + private void sendChooseArtRequest(List mtbAarts, RunnableArgs onComplete) { + if (this.mListener != null) mListener.onChooseArtRequest(mtbAarts, onComplete); + } + + private void sendChooseArtsRequest(List mtbAarts, RunnableArgs> onComplete) { + if (this.mListener != null) mListener.onChooseArtsRequest(mtbAarts, onComplete); + } + private void sendOnOrderClosed() { if (this.mListener != null) mListener.onOrderClosed(); } @@ -489,21 +493,7 @@ public class SpedizioneViewModel { if (foundPosizione.isMagazzinoAutomatico()) { //Eseguo picking da magazzino automatico - - - final List orders = this.mTestateOrdini.stream() - .map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd()) - .setDataCons(UtilityDate.toLocalDate(x.getDataConsD()))) - .collect(Collectors.toList()); - - var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO() - .setShouldCreateUDS(true) - .setDefaultGestioneOfNewUDS(mDefaultGestioneOfUL.getText()) - .setOrdersOfNewUDS(orders); - - mMagazzinoAutomaticoRESTConsumer.pickItems(magazzinoAutomaticoPickRequest, () -> { - - }, this::sendError); + executeMagazzinoAutomatico(foundPosizione, onComplete); return; } @@ -589,7 +579,7 @@ public class SpedizioneViewModel { if (mtbAartList.size() == 1) { this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); } else { - mListener.onChooseArtRequest(mtbAartList, art -> this.searchArtFromAnag(art, pickData, onComplete)); + this.sendChooseArtRequest(mtbAartList, art -> this.searchArtFromAnag(art, pickData, onComplete)); } } else { this.sendError(new NoResultFromBarcodeException(barcodeProd)); @@ -598,6 +588,54 @@ public class SpedizioneViewModel { }, this::sendError); } + private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) { + var magazzinoAutomaticoPickableArts = Stream.of(Objects.requireNonNull(this.mPickingList.getValue())) + .filter(x -> Stream.of(x.getMtbColts()).anyMatch(y -> y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione()))) + .toList(); + + var mtbAarts = Stream.of(magazzinoAutomaticoPickableArts) + .map(PickingObjectDTO::getMtbAart) + .toList(); + + this.sendChooseArtsRequest(mtbAarts, selectedArts -> { + + final List orders = Stream.of(this.mTestateOrdini) + .map(x -> new MagazzinoAutomaticoPickOrderRequestDTO(UtilityDate.toLocalDate(x.getDataOrdD()), x.getGestione(), x.getNumOrd()) + .setDataCons(UtilityDate.toLocalDate(x.getDataConsD()))) + .toList(); + + final List magazzinoAutomaticoPickItemRequestDTOList = new ArrayList<>(); + for (MtbAart selectedArt : selectedArts) { + final PickingObjectDTO pickingObjectDTO = Stream.of(magazzinoAutomaticoPickableArts) + .filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(selectedArt.getCodMart())) + .findFirst() + .orElse(null); + + final List mtbColrs = Stream.of(pickingObjectDTO.getMtbColts()) + .filter(x -> x.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) + .flatMap(x -> Stream.of(x.getMtbColr())) + .filter(x -> x.getCodMart().equalsIgnoreCase(selectedArt.getCodMart())) + .toList(); + + MagazzinoAutomaticoPickItemRequestDTO itemDto = new MagazzinoAutomaticoPickItemRequestDTO(selectedArt.getCodMart()) + .setQtaTot(Stream.of(mtbColrs).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add)) + .setNumCnf(Stream.of(mtbColrs).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add)) + .setUntMis(selectedArt.getUntMis()); + + magazzinoAutomaticoPickItemRequestDTOList.add(itemDto); + } + + + var magazzinoAutomaticoPickRequest = new MagazzinoAutomaticoPickItemsRequestDTO() + .setShouldCreateUDS(true) + .setDefaultGestioneOfNewUDS(mDefaultGestioneOfUL.getText()) + .setOrdersOfNewUDS(orders) + .setItemsToPick(magazzinoAutomaticoPickItemRequestDTOList); + + mMagazzinoAutomaticoRESTConsumer.pickItems(magazzinoAutomaticoPickRequest, onComplete, this::sendError); + }); + } + private void searchArtFromUL(MtbColt scannedUL, Runnable onComplete) { final List pickingList = mPickingList.getValue(); @@ -1749,45 +1787,6 @@ public class SpedizioneViewModel { this.mPrinterRESTConsumer.printClosedOrders(dto, SettingsManager.i().getUserSession().getDepo().getCodMdep(), onSuccess, onAbort); } - private void cyclicPrintPackingList(@NotNull Iterator sourceTestateOrdineVenditaIterator, Runnable onComplete, RunnableArgs onAbort) { - if (sourceTestateOrdineVenditaIterator.hasNext()) { - singlePrintPackingList(sourceTestateOrdineVenditaIterator.next(), () -> { - cyclicPrintPackingList(sourceTestateOrdineVenditaIterator, onComplete, onAbort); - }, onAbort); - } else { - onComplete.run(); - } - } - - private void cyclicPrintListEtichette(@NotNull Iterator sourceTestateOrdineVenditaIterator, Runnable onComplete, RunnableArgs onAbort) { - if (sourceTestateOrdineVenditaIterator.hasNext()) { - singlePrintListEtichette(sourceTestateOrdineVenditaIterator.next(), () -> { - cyclicPrintListEtichette(sourceTestateOrdineVenditaIterator, onComplete, onAbort); - }, onAbort); - } else { - onComplete.run(); - } - } - - private void singlePrintPackingList(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, Runnable onComplete, RunnableArgs onFailed) { - HashMap params = new HashMap<>(); - params.put("gestione", ordineUscitaInevasoDTO.getGestione()); - params.put("num_ord", ordineUscitaInevasoDTO.getNumOrd()); - params.put("data_ord", UtilityDate.formatDate(ordineUscitaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); - - this.mPrinterRESTConsumer.printReportType(ReportType.WMS_SPEDIZIONE_PACKING_LIST_ORD, SettingsManager.i().getUserSession().getDepo().getCodMdep(), ordineUscitaInevasoDTO.getCodAnagOrd(), params, onComplete, onFailed); - - } - - private void singlePrintListEtichette(OrdineUscitaInevasoDTO ordineUscitaInevasoDTO, Runnable onComplete, RunnableArgs onFailed) { - HashMap params = new HashMap<>(); - params.put("gestione", ordineUscitaInevasoDTO.getGestione()); - params.put("num_ord", ordineUscitaInevasoDTO.getNumOrd()); - params.put("data_ord", UtilityDate.formatDate(ordineUscitaInevasoDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_DASH)); - - this.mPrinterRESTConsumer.printReportType(ReportType.WMS_SPEDIZIONE_ETICHETTE_SSCC_ORD, SettingsManager.i().getUserSession().getDepo().getCodMdep(), ordineUscitaInevasoDTO.getCodAnagOrd(), params, onComplete, onFailed); - - } public MutableLiveData> getPickingList() { return mPickingList; @@ -1797,23 +1796,7 @@ public class SpedizioneViewModel { return (ArrayList) this.mColliRegistrati; } - public SpedizioneViewModel setListeners(Listener listener) { - this.mListener = listener; - return this; - } - - public void onCreateDocsAnswered(DialogConsts.Results result) { - switch (result) { - case YES: - this.createDocs(); - break; - case NO: - this.sendOnOrderClosed(); - break; - } - } - - private void createDocs() { + void createDocs() { var loadCollidto = new LoadColliDTO(); var codAnag = Stream.of(mTestateOrdini).map(OrdineUscitaInevasoDTO::getCodAnagOrd).withoutNulls().distinctBy(x -> x).findFirst().get(); @@ -1830,6 +1813,11 @@ public class SpedizioneViewModel { this.mDocumentiRESTConsumer.createDocFromColli(loadCollidto, doc -> this.sendOnOrderClosed(), this::sendError); } + public SpedizioneViewModel setListeners(Listener listener) { + this.mListener = listener; + return this; + } + public interface Listener extends ILUPrintListener, ILoadingListener, ILUBaseOperationsListener { void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete); @@ -1854,6 +1842,8 @@ public class SpedizioneViewModel { void onChooseArtRequest(List artsList, RunnableArgs onComplete); + void onChooseArtsRequest(List artsList, RunnableArgs> onComplete); + void onOrderClosed(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListComponent.java new file mode 100644 index 00000000..bb8ff761 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogChooseArtsFromMtbAartListComponent { + + @Subcomponent.Factory + interface Factory { + DialogChooseArtsFromMtbAartListComponent create(); + } + + void inject(DialogChooseArtsFromMtbAartListView dialogChooseArtsFromMtbAartListView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListItemModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListItemModel.java new file mode 100644 index 00000000..048a3591 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListItemModel.java @@ -0,0 +1,103 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.model.MtbAart; + +public class DialogChooseArtsFromMtbAartListItemModel { + + private BindableBoolean selected = new BindableBoolean(false); + private String codMart; + private String diacod; + private String descrizione; + private BigDecimal peso; + private String pesoUntMis; + private BigDecimal qta; + private String qtaUntMis; + + private MtbAart originalModel; + + + + public BindableBoolean getSelected() { + return selected; + } + + public DialogChooseArtsFromMtbAartListItemModel setSelected(BindableBoolean selected) { + this.selected = selected; + return this; + } + + public String getCodMart() { + return codMart; + } + + public DialogChooseArtsFromMtbAartListItemModel setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDiacod() { + return diacod; + } + + public DialogChooseArtsFromMtbAartListItemModel setDiacod(String diacod) { + this.diacod = diacod; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public DialogChooseArtsFromMtbAartListItemModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public BigDecimal getPeso() { + return peso; + } + + public DialogChooseArtsFromMtbAartListItemModel setPeso(BigDecimal peso) { + this.peso = peso; + return this; + } + + public String getPesoUntMis() { + return pesoUntMis; + } + + public DialogChooseArtsFromMtbAartListItemModel setPesoUntMis(String pesoUntMis) { + this.pesoUntMis = pesoUntMis; + return this; + } + + public BigDecimal getQta() { + return qta; + } + + public DialogChooseArtsFromMtbAartListItemModel setQta(BigDecimal qta) { + this.qta = qta; + return this; + } + + public String getQtaUntMis() { + return qtaUntMis; + } + + public DialogChooseArtsFromMtbAartListItemModel setQtaUntMis(String qtaUntMis) { + this.qtaUntMis = qtaUntMis; + return this; + } + + public MtbAart getOriginalModel() { + return originalModel; + } + + public DialogChooseArtsFromMtbAartListItemModel setOriginalModel(MtbAart originalModel) { + this.originalModel = originalModel; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListModule.java new file mode 100644 index 00000000..53ba8768 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogChooseArtsFromMtbAartListComponent.class) +public class DialogChooseArtsFromMtbAartListModule { + + @Provides + DialogChooseArtsFromMtbAartListViewModel providesDialogDialogDialogChooseArtsFromMtbAartListViewViewModel() { + return new DialogChooseArtsFromMtbAartListViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java new file mode 100644 index 00000000..ca1d490e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListView.java @@ -0,0 +1,121 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.annimon.stream.Stream; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.ravikoradiya.liveadapter.LiveAdapter; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.databinding.DialogChooseArtsFromMtbAartListLayoutBinding; + +public class DialogChooseArtsFromMtbAartListView extends BaseDialogFragment implements DialogInterface.OnShowListener { + + + @Inject + DialogChooseArtsFromMtbAartListViewModel mViewModel; + + private DialogChooseArtsFromMtbAartListLayoutBinding mBindings; + + private Context mContext; + + private final List mtbAarts; + private List artsItemModels = null; + private final RunnableArgs> onConfirmed; + private final Runnable onAbort; + + //Pass here all external parameters + public static DialogChooseArtsFromMtbAartListView newInstance(List mtbAarts, RunnableArgs> onConfirmed, Runnable onAbort) { + return new DialogChooseArtsFromMtbAartListView(mtbAarts, onConfirmed, onAbort); + } + + private DialogChooseArtsFromMtbAartListView(List mtbAarts, RunnableArgs> onConfirmed, Runnable onAbort) { + super(); + + this.mtbAarts = mtbAarts; + this.onConfirmed = onConfirmed; + this.onAbort = onAbort; + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogChooseArtsFromMtbAartListLayoutBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .dialogDialogDialogChooseArtsFromMtbAartListViewComponent() + .create() + .inject(this); + + + var cancelable = false; + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(cancelable) + .setPositiveButton(R.string.ok, (dialog, which) -> { + var selectedArts = Stream.of(this.artsItemModels) + .filter(x -> x.getSelected().get()) + .map(DialogChooseArtsFromMtbAartListItemModel::getOriginalModel) + .toList(); + + if(selectedArts.isEmpty()) { + if (this.onAbort != null) this.onAbort.run(); + return; + } + + if (this.onConfirmed != null) + this.onConfirmed.run(selectedArts); + }) + .setNegativeButton(R.string.abort, (dialog, which) -> { + if (this.onAbort != null) this.onAbort.run(); + }) + .create(); + + + + + alertDialog.setOnShowListener(this); + alertDialog.setCanceledOnTouchOutside(cancelable); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + this.initList(); + } + + private void initList() { + this.artsItemModels = Stream.of(this.mtbAarts) + .map(x -> new DialogChooseArtsFromMtbAartListItemModel() + .setCodMart(x.getCodMart()) + .setDescrizione(x.getDescrizioneEstesa()) + .setDiacod(x.getDiacod()) + .setOriginalModel(x)) + .toList(); + + new LiveAdapter(this.artsItemModels, BR.item) + .map(DialogChooseArtsFromMtbAartListItemModel.class, R.layout.dialog_choose_arts_from_mtb_aart_list__item_model) + .into(this.mBindings.listaArts); + } +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListViewModel.java new file mode 100644 index 00000000..4783700b --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_lista_arts/DialogChooseArtsFromMtbAartListViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts; + +public class DialogChooseArtsFromMtbAartListViewModel { + +} \ 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 c186b175..7c3da664 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 @@ -38,7 +38,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDialog; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding; +import it.integry.integrywmsnative.databinding.DialogChooseArtsFromMtbColrListLayoutBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment { @@ -51,7 +51,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment { private Context context; - private DialogChooseArtsFromListaArtsLayoutBinding mBindings; + private DialogChooseArtsFromMtbColrListLayoutBinding mBindings; private DialogChooseArtsFromMtbColrListAdapter currentAdapter; @@ -102,7 +102,7 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment { super.onCreateView(inflater, container, savedInstanceState); this.context = getActivity(); - mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_arts_from_lista_arts_layout, null, false); + mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_arts_from_mtb_colr_list_layout, null, false); mBindings.setLifecycleOwner(getViewLifecycleOwner()); MainApplication.appComponent diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrListAdapter.java index 7ac4563a..26d43ff2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_arts_from_mtbcolr_list/DialogChooseArtsFromMtbColrListAdapter.java @@ -20,7 +20,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsItemModelBinding; +import it.integry.integrywmsnative.databinding.DialogChooseArtsFromMtbColrListItemModelBinding; public class DialogChooseArtsFromMtbColrListAdapter extends RecyclerView.Adapter { @@ -64,10 +64,10 @@ public class DialogChooseArtsFromMtbColrListAdapter extends RecyclerView.Adapter public class ViewHolder extends RecyclerView.ViewHolder { - private DialogChooseArtsFromListaArtsItemModelBinding mViewDataBinding; + private DialogChooseArtsFromMtbColrListItemModelBinding mViewDataBinding; - public ViewHolder(DialogChooseArtsFromListaArtsItemModelBinding v) { + public ViewHolder(DialogChooseArtsFromMtbColrListItemModelBinding v) { super(v.getRoot()); mViewDataBinding = v; } @@ -100,7 +100,7 @@ public class DialogChooseArtsFromMtbColrListAdapter extends RecyclerView.Adapter @Override public DialogChooseArtsFromMtbColrListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view - DialogChooseArtsFromListaArtsItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_arts_from_lista_arts__item_model, parent, false); + DialogChooseArtsFromMtbColrListItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_arts_from_mtb_colr_list__item_model, parent, false); return new ViewHolder(viewDataBinding); } diff --git a/app/src/main/res/drawable/bg_checked_layout.xml b/app/src/main/res/drawable/bg_checked_layout.xml index bcfcf8c5..ee8af6f3 100644 --- a/app/src/main/res/drawable/bg_checked_layout.xml +++ b/app/src/main/res/drawable/bg_checked_layout.xml @@ -9,8 +9,5 @@ android:top="4dp" /> + android:radius="12dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list__item_model.xml b/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list__item_model.xml new file mode 100644 index 00000000..64ac8fcf --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list__item_model.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list_layout.xml b/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list_layout.xml new file mode 100644 index 00000000..2b62b71e --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_arts_from_mtb_aart_list_layout.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_arts_from_lista_arts__item_model.xml b/app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list__item_model.xml similarity index 100% rename from app/src/main/res/layout/dialog_choose_arts_from_lista_arts__item_model.xml rename to app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list__item_model.xml diff --git a/app/src/main/res/layout/dialog_choose_arts_from_lista_arts_layout.xml b/app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list_layout.xml similarity index 97% rename from app/src/main/res/layout/dialog_choose_arts_from_lista_arts_layout.xml rename to app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list_layout.xml index fcd78683..53f350a7 100644 --- a/app/src/main/res/layout/dialog_choose_arts_from_lista_arts_layout.xml +++ b/app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list_layout.xml @@ -57,7 +57,8 @@ + android:layout_height="wrap_content" + tools:listitem="@layout/dialog_choose_art_from_lista_art__item_model"/> diff --git a/gradle.properties b/gradle.properties index 3aeac783..743f49e2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,4 +34,4 @@ org.gradle.parallel=true org.gradle.caching=true # Increase memory allotted to JVM org.gradle.jvmargs=-Xmx4096m -#org.gradle.unsafe.configuration-cache=true \ No newline at end of file +org.gradle.unsafe.configuration-cache=true \ No newline at end of file