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