diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index a57d2db4..00000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 66f54154..0f3f0e8f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -67,8 +67,10 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamento import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloComponent; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloComponent; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloModule; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderComponent; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderModule; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent; @@ -175,7 +177,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogChooseArtsFromMtbAartListModule.class, MainSettingsModule.class, DialogInfoSituazioneArticoloModule.class, - DialogSelectDocRowsModule.class + DialogSelectArtToOrderModule.class }) public interface MainApplicationComponent { @@ -295,6 +297,8 @@ public interface MainApplicationComponent { DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent(); + DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index 347fbda3..16459e4d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -12,7 +12,6 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO; -import it.integry.integrywmsnative.core.exception.InvalidProductOrderedException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -91,10 +90,6 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { int i = 0; for (ArticoloOrdine art : articoli) { i++; - if (art.isInvalid()) { - onFailed.run(new InvalidProductOrderedException(art.getCodMart())); - return; - } artRows.add(convertArtToDTO(art, i)); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index 32f17940..172f84f3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -13,9 +13,11 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.LinearLayoutManager; +import com.annimon.stream.Stream; import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.Type; +import java.math.BigDecimal; import java.util.List; import javax.inject.Inject; @@ -36,7 +38,9 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding; -import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloView; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderItemListModel; +import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList.DialogSelectArtToOrderView; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.view.dialogs.DialogAskActionView; @@ -246,4 +250,34 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); } + @Override + public void confirmExportInvalidProducts(Runnable onConfirm) { + DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(), + Html.fromHtml(getResources().getString(R.string.confirm_export_invalid_product)), + null, + onConfirm + , + this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExportInvalidProducts"); + } + + @Override + public void chooseArtFromList(List listArticoli, RunnableArgs onArtChosen) { + List> dataset = + Stream.of(listArticoli) + .map(x -> new DialogSelectArtToOrderItemListModel<>() + .setCodMart(x.getCodMart()) + .setBarcode(x.getSelectedBarcode()) + .setOriginalModel(x) + .setNew(mViewModel.isArtInOrder(x)) + .setDescrizione(x.getDescrizione()) + .setQtaOrd(BigDecimal.valueOf(x.getQtaOrd())) + .setCodAlis(x.getCodAlis()) + .setUntMisOrd(x.getUntMis())) + .toList(); + + DialogSelectArtToOrderView.newInstance(dataset, + data -> onArtChosen.run((ArticoloOrdinabileDTO) data.getOriginalModel()), + this::onLoadingEnded) + .show(this.getSupportFragmentManager(), "dialogSelectDocRowsNew"); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index d5f75838..5fc16190 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -161,8 +161,8 @@ public class PVOrdineAcquistoEditViewModel { try { this.sendOnLoadingStarted(); - ArticoloOrdinabileDTO articoloDTO = getArticoloFromBarcode(barcode); - if (articoloDTO == null) { + List listArticoli = matchArticoliForBarcode(barcode); + if (listArticoli == null || listArticoli.isEmpty()) { if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) { this.mListener.confirmCheckForUnlistedProduct(barcode); return; @@ -170,11 +170,20 @@ public class PVOrdineAcquistoEditViewModel { throw new NoResultFromBarcodeException(barcode); } } - this.addArticoloToOrdine( - articoloDTO, - this::sendOnLoadingEnded, - this::sendError - ); + if (listArticoli.size() == 1) { + this.addArticoloToOrdine( + listArticoli.get(0), + this::sendOnLoadingEnded, + this::sendError + ); + } else { + this.mListener.chooseArtFromList(listArticoli, (art) -> { + this.addArticoloToOrdine( + art, + this::sendOnLoadingEnded, + this::sendError); + }); + } } catch (Exception e) { this.sendError(e); BarcodeManager.enable(); @@ -248,22 +257,20 @@ public class PVOrdineAcquistoEditViewModel { return articolo; } - public ArticoloOrdinabileDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException { + public List matchArticoliForBarcode(String barcode) throws NoArtsInGridException, MultipleResultFromBarcodeException, NoResultFromBarcodeException { if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) { throw new NoArtsInGridException(); } - ArticoloOrdinabileDTO art = Stream.of(mArticoliGriglia).filter(articolo -> + List articoli = Stream.of(mArticoliGriglia).filter(articolo -> articolo.getCodMart().equalsIgnoreCase(barcode) || articolo.getBarcode().contains(barcode) || articolo.getBarcode().contains(StringUtils.leftPad(barcode, 13, "0")) - ) + ).map((art) -> art.setSelectedBarcode(barcode)) // .sortBy(x -> x.getSortByBarcodeCondition(barcode)) - .findFirst().orElse(null); - if (art != null) { - art.setSelectedBarcode(barcode); - } - return art; + .toList(); + + return articoli; } @@ -318,19 +325,30 @@ public class PVOrdineAcquistoEditViewModel { this.sendError(new ExpiredProductListException()); return; } - if (mArticoli.getValue() == null) { + if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) { this.sendError(new EmptyOrderException()); return; } String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> { - mOrdineRepository.updateOrder(ordine, ord -> { - this.sendOnLoadingEnded(); - onComplete.run(); + Runnable saveOrdine = () -> { + pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> { + + mOrdineRepository.updateOrder(ordine, ord -> { + this.sendOnLoadingEnded(); + onComplete.run(); + }, this::sendError); + }, this::sendError); + }; + + if (Stream.of(mArticoli.getValue()).anyMatch(ArticoloOrdine::isInvalid)) { + + this.mListener.confirmExportInvalidProducts(saveOrdine); + return; + } + saveOrdine.run(); - }, this::sendError); } private void sendOnItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess) { @@ -353,12 +371,26 @@ public class PVOrdineAcquistoEditViewModel { this.sendOnLoadingStarted(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> { + + RunnableArgs addArtToOrder = (articolo) -> { + ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null); + if (existingArt != null) { + List barcodes = existingArt.getBarcode(); + barcodes.addAll(articolo.getBarcode()); + barcodes = Stream.of(barcodes).distinct().toList(); + existingArt.setBarcode(barcodes); + } else { + mArticoliGriglia.add(articolo); + } + this.processBarcode(barcode); + }; + if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) { this.sendError(new ArtNotFoundInGridException()); return; } if (grigliaDTO.getArticoli().size() > 1) { - this.sendError(new MultipleResultFromBarcodeException()); + this.mListener.chooseArtFromList(grigliaDTO.getArticoli(), addArtToOrder); return; } ArticoloOrdinabileDTO newArt = Stream.of(grigliaDTO.getArticoli()).findFirstOrElse(null); @@ -367,22 +399,19 @@ public class PVOrdineAcquistoEditViewModel { return; } - ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(newArt.getCodMart())).findFirstOrElse(null); - if (existingArt != null) { - List barcodes = existingArt.getBarcode(); - barcodes.addAll(newArt.getBarcode()); - barcodes = Stream.of(barcodes).distinct().toList(); - existingArt.setBarcode(barcodes); - } else { - mArticoliGriglia.add(newArt); - } - - this.processBarcode(barcode); + addArtToOrder.run(newArt); }, this::sendError); } + public boolean isArtInOrder(ArticoloOrdinabileDTO articolo) { + if (mArticoli.getValue() == null || mArticoli.getValue().isEmpty()) { + return false; + } + return Stream.of(mArticoli.getValue()).noneMatch(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())); + } + public interface Listener extends ILoadingListener { void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess); @@ -393,6 +422,10 @@ public class PVOrdineAcquistoEditViewModel { void onError(Exception ex); void confirmCheckForUnlistedProduct(String barcode); + + void confirmExportInvalidProducts(Runnable onConfirm); + + void chooseArtFromList(List listArticoli, RunnableArgs onArtChosen); } public PVOrdineAcquistoEditViewModel setListener(Listener listener) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloComponent.java similarity index 93% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloComponent.java index 66251c97..140a4491 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloComponent.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo; import dagger.Subcomponent; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloModule.java similarity index 95% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloModule.java index 200bc6e3..944c6608 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloModule.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo; import dagger.Module; import dagger.Provides; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloView.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloView.java index d38fdb3a..84df33c9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloView.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo; import android.content.DialogInterface; import android.graphics.Color; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloViewModel.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloViewModel.java index ad04117d..09e26fe1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/edit_articolo/DialogEditArticoloViewModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog; +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo; import java.math.BigDecimal; import java.math.RoundingMode; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderComponent.java new file mode 100644 index 00000000..e4cf8227 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSelectArtToOrderComponent { + + @Subcomponent.Factory + interface Factory { + DialogSelectArtToOrderComponent create(); + } + + void inject(DialogSelectArtToOrderView DialogSelectArtView); +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderItemListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderItemListModel.java new file mode 100644 index 00000000..0ab6e628 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderItemListModel.java @@ -0,0 +1,101 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList; + +import java.math.BigDecimal; + +import it.integry.integrywmsnative.core.di.BindableBoolean; + +public class DialogSelectArtToOrderItemListModel { + + private String codMart; + private String descrizione; + private BigDecimal qtaOrd; + private String untMisOrd; + private String barcode; + + private String codAlis; + private boolean isNew; + private T originalModel; + private BindableBoolean checked = new BindableBoolean(false); + + + public String getCodMart() { + return codMart; + } + + public DialogSelectArtToOrderItemListModel setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public DialogSelectArtToOrderItemListModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public BigDecimal getQtaOrd() { + return qtaOrd; + } + + public DialogSelectArtToOrderItemListModel setQtaOrd(BigDecimal qtaOrd) { + this.qtaOrd = qtaOrd; + return this; + } + + public String getUntMisOrd() { + return untMisOrd; + } + + public DialogSelectArtToOrderItemListModel setUntMisOrd(String untMisOrd) { + this.untMisOrd = untMisOrd; + return this; + } + + public String getBarcode() { + return barcode; + } + + public DialogSelectArtToOrderItemListModel setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public boolean isNew() { + return isNew; + } + + public DialogSelectArtToOrderItemListModel setNew(boolean aNew) { + isNew = aNew; + return this; + } + + public T getOriginalModel() { + return originalModel; + } + + public DialogSelectArtToOrderItemListModel setOriginalModel(T originalModel) { + this.originalModel = originalModel; + return this; + } + + public BindableBoolean getChecked() { + return checked; + } + + public DialogSelectArtToOrderItemListModel setChecked(BindableBoolean checked) { + this.checked = checked; + return this; + } + + public String getCodAlis() { + return codAlis; + } + + public DialogSelectArtToOrderItemListModel setCodAlis(String codAlis) { + this.codAlis = codAlis; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderModule.java new file mode 100644 index 00000000..63354e2f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderModule.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList; + +import dagger.Module; +import dagger.Provides; + +@Module(subcomponents = DialogSelectArtToOrderComponent.class) +public class DialogSelectArtToOrderModule { + + @Provides + DialogSelectArtToOrderViewModel providesDialogSelectArtNewViewModel() { + return new DialogSelectArtToOrderViewModel(); + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderView.java new file mode 100644 index 00000000..44aae64a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderView.java @@ -0,0 +1,130 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.annimon.stream.Stream; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.ravikoradiya.liveadapter.LiveAdapter; +import com.ravikoradiya.liveadapter.Type; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderBinding; +import it.integry.integrywmsnative.databinding.DialogSelectArtToOrderItemModelBinding; + +/** + * @noinspection rawtypes + */ +public class DialogSelectArtToOrderView extends BaseDialogFragment { + + + @Inject + DialogSelectArtToOrderViewModel mViewModel; + + private DialogSelectArtToOrderBinding mBindings; + private Context mContext; + + private final List> listArts; + private final RunnableArgs onConfirm; + private final Runnable onAbort; + + //Pass here all external parameters + public static DialogSelectArtToOrderView newInstance(List> listArts, + RunnableArgs onConfirm, + Runnable onAbort) { + return new DialogSelectArtToOrderView(listArts, onConfirm, onAbort); + } + + private DialogSelectArtToOrderView(List> listArts, + RunnableArgs onConfirm, + Runnable onAbort) { + super(); + + this.listArts = listArts; + this.onConfirm = onConfirm; + this.onAbort = onAbort; + } + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + this.mContext = requireContext(); + + mBindings = DialogSelectArtToOrderBinding.inflate(LayoutInflater.from(this.mContext), null, false); + mBindings.setLifecycleOwner(this); + + MainApplication.appComponent + .dialogSelectArtToOrderNewComponent() + .create() + .inject(this); + + setCancelable(false); + + var alertDialog = new MaterialAlertDialogBuilder(this.mContext) + .setView(mBindings.getRoot()) + .setCancelable(isCancelable()) + .setPositiveButton(R.string.confirm, (dialog, which) -> { + final DialogSelectArtToOrderItemListModel selectedItem = Stream.of(listArts) + .filter(x -> x.getChecked().get()) + .findFirstOrElse(null); + + if (selectedItem != null) + this.onConfirm.run(selectedItem); + }) + .setNegativeButton(R.string.abort, (dialog, which) -> { + if (this.onAbort != null) this.onAbort.run(); + }) + .create(); + + alertDialog.setCanceledOnTouchOutside(isCancelable()); + alertDialog.setOnShowListener(this); + return alertDialog; + } + + @Override + public void onShow(DialogInterface dialogInterface) { + super.onShow(dialogInterface); + + this.listArts.get(0).getChecked().set(true); + this.initRecyclerView(); + } + + + private void initRecyclerView() { + var itemType = new Type(R.layout.dialog_select_art_to_order__item_model, BR.row); +// itemType.areItemSame((oldItem, newItem) -> Objects.equals(oldItem.getId(), newItem.getId())); + itemType.areContentsTheSame(DialogSelectArtToOrderItemListModel::equals); + itemType.onClick(x -> { + resetChecks(); + x.getBinding().getRow().getChecked().set(true); + + return null; + }); + + new LiveAdapter(listArts) + .map(DialogSelectArtToOrderItemListModel.class, itemType) + .into(this.mBindings.itemList); + } + + private void resetChecks() { + for (var item : listArts) { + item.getChecked().set(false); + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderViewModel.java new file mode 100644 index 00000000..4964d71f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/selectArtFromList/DialogSelectArtToOrderViewModel.java @@ -0,0 +1,5 @@ +package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArtFromList; + +public class DialogSelectArtToOrderViewModel { + +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml index 8b5326da..a0cdec6c 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -16,7 +16,7 @@ + type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.edit_articolo.DialogEditArticoloView" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_art_to_order__item_model.xml b/app/src/main/res/layout/dialog_select_art_to_order__item_model.xml new file mode 100644 index 00000000..f40b1f05 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_art_to_order__item_model.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 802aaace..ec5ef2bd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -214,7 +214,7 @@ Il barcode scansionato non ha fornito alcun risultato Il codice articolo non ha fornito alcun risultato - Il barcode scansionato ha fornito multipli risultati + Il barcode scansionato ha fornito molteplici risultati Nessun tipo documento selezionato Filtro articoli applicato @@ -447,6 +447,7 @@ Quantità massima superata Vuoi cotinuare comunque con il salvataggio?]]>\ Vuoi provare a cercarlo comunque nel sistema?]]> - L\'ordine presenta un articolo non valido per la lista selezionata! + L\'ordine presenta uno o più articoli non validi per la lista selezionata! + Sei sicuro di voler continuare?]]> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 885a5285..9072d54c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -455,5 +455,6 @@ Do you wish to continue?]]> Do you want to search for it regardless?]]> One or more ordered products are not available in the selected list! + Do you wish to continue?]]>