diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java index e7b2cbe5..8527e334 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java @@ -41,6 +41,7 @@ public class DialogVenditaFiltroAvanzato { private Predicate currentClientePredicate = null; private Predicate currentDataConsPredicate = null; private Predicate currentTermConsPredicate = null; + private Predicate currentVettorePredicate = null; private Predicate currentAutomezzoPredicate = null; private boolean firstInit = true; @@ -105,6 +106,7 @@ public class DialogVenditaFiltroAvanzato { viewModel.cliente.set(null); viewModel.dataConsegna.set(null); viewModel.terminiConsegna.set(null); + viewModel.vettore.set(null); viewModel.automezzo.set(null); } @@ -146,6 +148,21 @@ public class DialogVenditaFiltroAvanzato { }); + bindings.inputVettore.setOnClickListener(view -> { + + AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); + builderSingle.setTitle(R.string.carrier); + + final ArrayAdapter arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice); + arrayAdapter.addAll(getAvailableVettori()); + + builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> { + viewModel.vettore.set(arrayAdapter.getItem(i)); + }); + builderSingle.show(); + + }); + bindings.inputAutomezzo.setOnClickListener(view -> { AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext); @@ -238,13 +255,24 @@ public class DialogVenditaFiltroAvanzato { viewModel.terminiConsegna.refresh(); + BindableString.resetListeners(viewModel.vettore); + BindableString.registerListener(viewModel.vettore, value -> { + if(UtilityString.isNullOrEmpty(value)) currentVettorePredicate = null; + else { + currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(value); + } + + if(!firstInit) refreshList(); + }); + viewModel.vettore.refresh(); + BindableString.resetListeners(viewModel.automezzo); BindableString.registerListener(viewModel.automezzo, value -> { if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null; else { - currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value); + currentAutomezzoPredicate = o -> o.getDescrizioneAuto().toLowerCase().contains(value); } if(!firstInit) refreshList(); @@ -258,15 +286,16 @@ public class DialogVenditaFiltroAvanzato { } private List getAvailableTermCons() { - if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){ + if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentAutomezzoPredicate == null && currentVettorePredicate == null){ currentFilteredOrderList = currentOrderList; } else { Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) ); currentFilteredOrderList = tmpStream.toList(); @@ -275,27 +304,47 @@ public class DialogVenditaFiltroAvanzato { return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getTermCons).distinct().withoutNulls().toList(); } - private List getAvailableAutomezzi() { - if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){ + private List getAvailableVettori() { + if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentAutomezzoPredicate == null){ currentFilteredOrderList = currentOrderList; } else { Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate .test(x))) ); currentFilteredOrderList = tmpStream.toList(); } - return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getCodAuto).distinct().withoutNulls().toList(); + return Stream.of(currentFilteredOrderList).map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore()).distinct().withoutNulls().toList(); + } + + private List getAvailableAutomezzi() { + if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null){ + currentFilteredOrderList = currentOrderList; + } else { + Stream tmpStream = Stream.of(currentOrderList) + .filter(x -> + (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) + ); + + currentFilteredOrderList = tmpStream.toList(); + } + + return Stream.of(currentFilteredOrderList).map(OrdineVenditaInevasoDTO::getDescrizioneAuto).distinct().withoutNulls().toList(); } private void refreshList() { - if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){ + if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null && currentVettorePredicate == null && currentAutomezzoPredicate == null){ currentFilteredOrderList = currentOrderList; } else { Stream tmpStream = Stream.of(currentOrderList) @@ -304,6 +353,7 @@ public class DialogVenditaFiltroAvanzato { (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate != null && currentVettorePredicate.test(x))) && (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) ); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java index c50d513d..63a98876 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzatoViewModel.java @@ -10,6 +10,7 @@ public class DialogVenditaFiltroAvanzatoViewModel { public BindableString cliente = new BindableString(); public BindableString dataConsegna = new BindableString(); public BindableString terminiConsegna = new BindableString(); + public BindableString vettore = new BindableString(); public BindableString automezzo = new BindableString(); public Date dataConsegnaDate; diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml index a830ff45..48d1aaf6 100644 --- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml @@ -101,6 +101,24 @@ + + + + + + + + Data consegna Termini di consegna Automezzo + Vettore Nessun articolo trovato Nessuna UL trovata diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e4cda8ed..1bd0df03 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -161,6 +161,7 @@ Ship date Terms of delivery Vehicle + Carrier No items found No LU found