From ea7acf6053fe456e1e195cbde2b0127309e9c06f Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 13 May 2021 15:33:58 +0200 Subject: [PATCH] Refactoring DialogFiltroVenditaAvanzato --- .../OrdiniUscitaElencoFragment.java | 4 +- .../dialogs/DialogVenditaFiltroAvanzato.java | 838 ------------------ .../DialogVenditaFiltroAvanzatoView.java | 465 ++++++++++ .../DialogVenditaFiltroAvanzatoViewModel.java | 171 +++- .../layout/dialog_vendita_filtro_avanzato.xml | 24 +- 5 files changed, 639 insertions(+), 863 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 3dfdcced..efc62be9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -43,7 +43,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzato; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel; @@ -348,7 +348,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF @Override public void onFilterClick() { - DialogVenditaFiltroAvanzato.make( + DialogVenditaFiltroAvanzatoView.make( getActivity(), this.mViewModel.getOrderList().getValue(), mAppliedFilterViewModel, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java deleted file mode 100644 index f20af8e3..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java +++ /dev/null @@ -1,838 +0,0 @@ -package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs; - -import android.app.DatePickerDialog; -import android.content.Context; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.WindowManager; -import android.widget.ArrayAdapter; -import android.widget.MultiAutoCompleteTextView; - -import androidx.appcompat.app.AlertDialog; -import androidx.databinding.DataBindingUtil; - -import com.annimon.stream.Stream; -import com.annimon.stream.function.Predicate; - -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.class_router.ClassRouter; -import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; -import it.integry.integrywmsnative.core.di.BindableString; -import it.integry.integrywmsnative.core.expansion.RunnableArgss; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding; -import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; - - -public class DialogVenditaFiltroAvanzato { - - - private final AlertDialog currentAlert; - private final Context currentContext; - - private final RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone; - - private final List currentOrderList; - private List currentFilteredOrderList; - - private ArrayAdapter arrayAdapterCodMdep; - private ArrayAdapter arrayAdapterIdViaggio; - private ArrayAdapter arrayAdapterNumOrds; - private ArrayAdapter arrayAdapterCliente; - private ArrayAdapter arrayAdapterTermCons; - private ArrayAdapter arrayAdapterVettore; - private ArrayAdapter arrayAdapterAgente; - private ArrayAdapter arrayAdapterAutomezzo; - private ArrayAdapter arrayAdapterPaese; - - private Predicate currentDepositoPredicate = null; - private Predicate currentIdViaggioPredicate = null; - private Predicate currentNumOrdsPredicate = null; - private Predicate currentClientePredicate = null; - private Predicate currentDataConsPredicate = null; - private Predicate currentTermConsPredicate = null; - private Predicate currentVettorePredicate = null; - private Predicate currentAgentePredicate = null; - private Predicate currentAutomezzoPredicate = null; - private Predicate currentPaesePredicate = null; - - private boolean firstInit = true; - - public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { - return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert; - } - - public static AlertDialog make(final Context context, - final List ordersList, - DialogVenditaFiltroAvanzatoViewModel baseViewModel, - RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { - return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert; - } - - private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { - currentContext = context; - currentOrderList = ordersList; - currentOnFilterDone = onDismiss; - - DialogVenditaFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel(); - - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - - DialogVenditaFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vendita_filtro_avanzato, null, false); - - final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) - .setView(binding.getRoot()); - - binding.setViewmodel(viewModel); - initViewModelNew(viewModel); - initView(binding, viewModel); - - currentAlert = alertDialog.create(); - currentAlert.setCanceledOnTouchOutside(false); - - currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - - - binding.positiveBtn.setOnClickListener(view -> { - currentAlert.dismiss(); - }); - - binding.neutralBtn.setOnClickListener(view -> { - resetAll(viewModel); - }); - - - currentAlert.setOnDismissListener(dialogInterface -> { - if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel); - }); - - refreshList(); - } - - private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) { - viewModel.deposito.set(null); - viewModel.idViaggio.set(null); - viewModel.numOrds.set(null); - viewModel.cliente.set(null); - viewModel.dataConsegna.set(null); - viewModel.terminiConsegna.set(null); - viewModel.vettore.set(null); - viewModel.automezzo.set(null); - viewModel.agente.set(null); - viewModel.paese.set(null); - } - - private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { - IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); - -// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> { -// bindings.filledExposedDropdownDataCons.callOnClick(); -// }); - - bindings.filledExposedDropdownDataCons.setOnClickListener(view -> { - Calendar c = UtilityDate.getCalendarInstance(); - - if(viewModel.dataConsegnaDate != null) { - c.setTime(viewModel.dataConsegnaDate); - } - - int mYear = c.get(Calendar.YEAR); - int mMonth = c.get(Calendar.MONTH); - int mDay = c.get(Calendar.DAY_OF_MONTH); - - DatePickerDialog datePickerDialog = new DatePickerDialog(currentContext, - (view2, year, month, day) -> { - - viewModel.dataConsegnaDate = new GregorianCalendar(year, month, day).getTime(); - viewModel.dataConsegna.set(UtilityDate.formatDate(viewModel.dataConsegnaDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - - }, mYear, mMonth, mDay); - datePickerDialog.show(); - }); - - - arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false)); - bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE); - bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep); - - arrayAdapterIdViaggio = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(false)); - bindings.inputIdViaggio.setVisibility(filtroOrdiniVendita.shoudShowIdViaggioFilter() ? View.VISIBLE : View.GONE); - bindings.filledExposedDropdownIdViaggio.setAdapter(arrayAdapterIdViaggio); - - arrayAdapterAgente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterAgente.addAll(getAvailableAgente(false)); - bindings.inputAgente.setVisibility(filtroOrdiniVendita.shoudShowAgenteFilter() ? View.VISIBLE : View.GONE); - bindings.filledExposedDropdownAgente.setAdapter(arrayAdapterAgente); - - arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(false)); - bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds); - bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); - - arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterCliente.addAll(getAvailableCliente(false)); - bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente); - - arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterTermCons.addAll(getAvailableTermCons(false)); - bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons); - - arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterVettore.addAll(getAvailableVettori(false)); - bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore); - - arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false)); - bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo); - - arrayAdapterPaese = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterPaese.addAll(getAvailablePaesi(false)); - bindings.filledExposedDropdownPaese.setAdapter(arrayAdapterPaese); - - - viewModel.deposito.refresh(); - viewModel.idViaggio.refresh(); - viewModel.numOrds.refresh(); - viewModel.cliente.refresh(); - viewModel.terminiConsegna.refresh(); - viewModel.vettore.refresh(); - viewModel.automezzo.refresh(); - viewModel.dataConsegna.refresh(); - viewModel.agente.refresh(); - viewModel.paese.refresh(); - - - } - - private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) { - BindableString.registerListener(viewModel.idViaggio, value -> { - if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null; - else { - String[] idViaggiSplitted = value.split("[,\\ ]"); - - try{ - List idViaggiInteger = Stream.of(idViaggiSplitted) - .filter(x -> !UtilityString.isNullOrEmpty(x)) - .map(Integer::parseInt).toList(); - - currentIdViaggioPredicate = o -> idViaggiInteger.contains(o.getIdViaggio()); - } catch (NumberFormatException ex) { - currentNumOrdsPredicate = null; - } - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.deposito, value -> { - if(UtilityString.isNullOrEmpty(value)) currentDepositoPredicate = null; - else { - currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(value); - } - - refreshList(); - - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.numOrds, value -> { - if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null; - else { - String[] numOrdsSplitted = value.split("[,\\ ]"); - - try{ - List numOrdsInteger = Stream.of(numOrdsSplitted) - .filter(x -> !UtilityString.isNullOrEmpty(x)) - .map(Integer::parseInt).toList(); - - currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); - } catch (NumberFormatException ex) { - currentNumOrdsPredicate = null; - } - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.cliente, value -> { - if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null; - else { - currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value.toLowerCase()); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.terminiConsegna, value -> { - if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null; - else { - currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(value); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.vettore, value -> { - if(UtilityString.isNullOrEmpty(value)) currentVettorePredicate = null; - else { - currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(value); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.registerListener(viewModel.automezzo, value -> { - if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null; - else { - currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && (o.getDescrizioneAuto().toLowerCase().contains(value) || o.getDescrizioneAuto().equalsIgnoreCase(value)); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.resetListeners(viewModel.dataConsegna); - BindableString.registerListener(viewModel.dataConsegna, value -> { - if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null; - else { - currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.resetListeners(viewModel.agente); - BindableString.registerListener(viewModel.agente, value -> { - if(UtilityString.isNullOrEmpty(value)) currentAgentePredicate = null; - else { - currentAgentePredicate = o -> !UtilityString.isNullOrEmpty(o.getNomeAgente()) && (o.getNomeAgente().toLowerCase().contains(value) || o.getNomeAgente().equalsIgnoreCase(value)); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterPaese.clear(); - arrayAdapterPaese.addAll(getAvailablePaesi(true)); - }); - - BindableString.resetListeners(viewModel.paese); - BindableString.registerListener(viewModel.paese, value -> { - if(UtilityString.isNullOrEmpty(value)) currentPaesePredicate = null; - else { - currentPaesePredicate = o -> !UtilityString.isNullOrEmpty(o.getCitta()) && (o.getCitta().toLowerCase().contains(value) || o.getCitta().equalsIgnoreCase(value)); - } - - refreshList(); - - arrayAdapterCodMdep.clear(); - arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true)); - arrayAdapterIdViaggio.clear(); - arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true)); - arrayAdapterNumOrds.clear(); - arrayAdapterNumOrds.addAll(getAvailableNumOrds(true)); - arrayAdapterCliente.clear(); - arrayAdapterCliente.addAll(getAvailableCliente(true)); - arrayAdapterTermCons.clear(); - arrayAdapterTermCons.addAll(getAvailableTermCons(true)); - arrayAdapterVettore.clear(); - arrayAdapterVettore.addAll(getAvailableVettori(true)); - arrayAdapterAutomezzo.clear(); - arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true)); - arrayAdapterAgente.clear(); - arrayAdapterAgente.addAll(getAvailableAgente(true)); - }); - - } - - - - private List getAvailableIdViaggio(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentTermConsPredicate == null && - currentDepositoPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream - .of(currentFilteredOrderList) - .filter(x -> x.getIdViaggio() != null) - .sortBy(x -> -x.getIdViaggio()) - .map(x -> x.getIdViaggio() != null ? x.getIdViaggio().toString() : null) - .distinct() - .toList(); - } - - private List getAvailableAgente(boolean skipRecalc) { - if(currentDepositoPredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentTermConsPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableCodMdeps(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentTermConsPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCodMdep).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableCliente(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentDepositoPredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentTermConsPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableNumOrds(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentDepositoPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentTermConsPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(x -> x.getNumOrd().toString()).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableTermCons(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentAutomezzoPredicate == null && - currentVettorePredicate == null && - currentDepositoPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getTermCons).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableVettori(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentTermConsPredicate == null && - currentAutomezzoPredicate == null && - currentDepositoPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate .test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).filter(x -> x.getCodVvet() != null).map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore()).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailableAutomezzi(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentTermConsPredicate == null && - currentVettorePredicate == null && - currentDepositoPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList(); - } - - private List getAvailablePaesi(boolean skipRecalc) { - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentTermConsPredicate == null && - currentVettorePredicate == null && - currentDepositoPredicate == null && - currentAutomezzoPredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else if(!skipRecalc){ - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCitta).withoutNulls().distinct().sorted().toList(); - } - - private void refreshList() { - - if(currentAgentePredicate == null && - currentIdViaggioPredicate == null && - currentNumOrdsPredicate == null && - currentClientePredicate == null && - currentDataConsPredicate == null && - currentTermConsPredicate == null && - currentVettorePredicate == null && - currentAutomezzoPredicate == null && - currentDepositoPredicate == null && - currentPaesePredicate == null - ){ - currentFilteredOrderList = currentOrderList; - } else { - Stream tmpStream = Stream.of(currentOrderList) - .filter(x -> - (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && - (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && - (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && - (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && - (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && - (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && - (currentPaesePredicate == null || (currentPaesePredicate.test(x))) - ); - - currentFilteredOrderList = tmpStream.toList(); - } - - - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java new file mode 100644 index 00000000..a063ee90 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java @@ -0,0 +1,465 @@ +package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs; + +import android.app.DatePickerDialog; +import android.content.Context; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.WindowManager; +import android.widget.ArrayAdapter; +import android.widget.MultiAutoCompleteTextView; + +import androidx.appcompat.app.AlertDialog; +import androidx.databinding.DataBindingUtil; + +import com.annimon.stream.Stream; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.List; +import java.util.Objects; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.class_router.ClassRouter; +import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita; +import it.integry.integrywmsnative.core.di.BindableString; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; + + +public class DialogVenditaFiltroAvanzatoView { + + + private final AlertDialog currentAlert; + private final Context currentContext; + + private final RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone; + + + + public BindableString deposito = new BindableString(); + public BindableString idViaggio = new BindableString(); + public BindableString numOrds = new BindableString(); + public BindableString cliente = new BindableString(); + public BindableString dataConsegna = new BindableString(); + public BindableString terminiConsegna = new BindableString(); + public BindableString agente = new BindableString(); + public BindableString vettore = new BindableString(); + public BindableString automezzo = new BindableString(); + public BindableString paese = new BindableString(); + + public Date dataConsegnaDate; + + private ArrayAdapter arrayAdapterCodMdep; + private ArrayAdapter arrayAdapterIdViaggio; + private ArrayAdapter arrayAdapterNumOrds; + private ArrayAdapter arrayAdapterCliente; + private ArrayAdapter arrayAdapterTermCons; + private ArrayAdapter arrayAdapterVettore; + private ArrayAdapter arrayAdapterAgente; + private ArrayAdapter arrayAdapterAutomezzo; + private ArrayAdapter arrayAdapterPaese; + + private DialogVenditaFiltroAvanzatoViewModel viewModel; + + public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + return new DialogVenditaFiltroAvanzatoView(context, ordersList, null, onDismiss).currentAlert; + } + + public static AlertDialog make(final Context context, + final List ordersList, + DialogVenditaFiltroAvanzatoViewModel baseViewModel, + RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + return new DialogVenditaFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert; + } + + private DialogVenditaFiltroAvanzatoView(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + currentContext = context; + currentOnFilterDone = onDismiss; + + viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel(); + viewModel.init(ordersList); + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + + DialogVenditaFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vendita_filtro_avanzato, null, false); + + final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context) + .setView(binding.getRoot()); + + binding.setView(this); + binding.setViewmodel(viewModel); + initViewModelNew(viewModel); + initView(binding, viewModel); + + currentAlert = alertDialog.create(); + currentAlert.setCanceledOnTouchOutside(false); + + currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + + + binding.positiveBtn.setOnClickListener(view -> { + currentAlert.dismiss(); + }); + + binding.neutralBtn.setOnClickListener(view -> { + resetAll(); + }); + + + currentAlert.setOnDismissListener(dialogInterface -> { + if(currentOnFilterDone != null) currentOnFilterDone.run(viewModel.getMutableFilteredOrderList().getValue(), viewModel); + }); + + } + + private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) { + IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA); + +// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> { +// bindings.filledExposedDropdownDataCons.callOnClick(); +// }); + + bindings.filledExposedDropdownDataCons.setOnClickListener(view -> { + Calendar c = UtilityDate.getCalendarInstance(); + + if(dataConsegnaDate != null) { + c.setTime(dataConsegnaDate); + } + + int mYear = c.get(Calendar.YEAR); + int mMonth = c.get(Calendar.MONTH); + int mDay = c.get(Calendar.DAY_OF_MONTH); + + DatePickerDialog datePickerDialog = new DatePickerDialog(currentContext, + (view2, year, month, day) -> { + + dataConsegnaDate = new GregorianCalendar(year, month, day).getTime(); + dataConsegna.set(UtilityDate.formatDate(dataConsegnaDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + + }, mYear, mMonth, mDay); + datePickerDialog.show(); + }); + + + arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false)); + bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE); + bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep); + + arrayAdapterIdViaggio = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(false)); + bindings.inputIdViaggio.setVisibility(filtroOrdiniVendita.shoudShowIdViaggioFilter() ? View.VISIBLE : View.GONE); + bindings.filledExposedDropdownIdViaggio.setAdapter(arrayAdapterIdViaggio); + + arrayAdapterAgente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterAgente.addAll(getAvailableAgente(false)); + bindings.inputAgente.setVisibility(filtroOrdiniVendita.shoudShowAgenteFilter() ? View.VISIBLE : View.GONE); + bindings.filledExposedDropdownAgente.setAdapter(arrayAdapterAgente); + + arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterNumOrds.addAll(getAvailableNumOrds(false)); + bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds); + bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); + + arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterCliente.addAll(getAvailableCliente(false)); + bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente); + + arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterTermCons.addAll(getAvailableTermCons(false)); + bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons); + + arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterVettore.addAll(getAvailableVettori(false)); + bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore); + + arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false)); + bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo); + + arrayAdapterPaese = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item); + arrayAdapterPaese.addAll(getAvailablePaesi(false)); + bindings.filledExposedDropdownPaese.setAdapter(arrayAdapterPaese); + + + refreshAll(); + } + + private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) { + viewModel.applyAllTests(); + + BindableString.registerListener(idViaggio, value -> { + viewModel.setIDViaggioFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(deposito, value -> { + viewModel.setDepositoFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(numOrds, value -> { + viewModel.setNumOrdFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(cliente, value -> { + viewModel.setClienteFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(terminiConsegna, value -> { + viewModel.setTerminiConsegnaFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(vettore, value -> { + viewModel.setVettoreFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.registerListener(automezzo, value -> { + viewModel.setAutomezzoFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + }); + + BindableString.resetListeners(dataConsegna); + BindableString.registerListener(dataConsegna, value -> { + viewModel.setDataConsegnaFilter(dataConsegnaDate); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + }); + + BindableString.resetListeners(agente); + BindableString.registerListener(agente, value -> { + viewModel.setAgenteFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + }); + + BindableString.resetListeners(paese); + BindableString.registerListener(paese, value -> { + viewModel.setPaeseFilter(value); + viewModel.applyAllTests(); + + refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true)); + refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true)); + refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true)); + refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true)); + refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true)); + refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true)); + refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true)); + refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true)); + }); + + } + + + private void refreshArrayAdapter(ArrayAdapter arrayAdapter, List inputList) { + arrayAdapter.clear(); + arrayAdapter.addAll(inputList); + arrayAdapter.notifyDataSetChanged(); + } + + + private List getAvailableIdViaggio(boolean skipRecalc) { + return Stream + .of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .filter(x -> x.getIdViaggio() != null) + .sortBy(x -> -x.getIdViaggio()) + .map(x -> x.getIdViaggio() != null ? x.getIdViaggio().toString() : null) + .distinct() + .toList(); + } + + private List getAvailableAgente(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getNomeAgente) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableCodMdeps(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getCodMdep) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableCliente(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getRagSocOrd) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableNumOrds(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(x -> x.getNumOrd().toString()) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableTermCons(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getTermCons) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableVettori(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .filter(x -> x.getCodVvet() != null) + .map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore()) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailableAutomezzi(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getDescrizioneAuto) + .distinct() + .withoutNulls() + .sorted() + .toList(); + } + + private List getAvailablePaesi(boolean skipRecalc) { + return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue())) + .map(OrdiniUscitaElencoDTO::getCitta) + .withoutNulls() + .distinct() + .sorted() + .toList(); + } + + + public void refreshAll() { + deposito.refresh(); + idViaggio.refresh(); + numOrds.refresh(); + cliente.refresh(); + terminiConsegna.refresh(); + vettore.refresh(); + automezzo.refresh(); + dataConsegna.refresh(); + agente.refresh(); + paese.refresh(); + } + + + public void resetAll() { + deposito.set(null); + idViaggio.set(null); + numOrds.set(null); + cliente.set(null); + dataConsegna.set(null); + terminiConsegna.set(null); + vettore.set(null); + automezzo.set(null); + agente.set(null); + paese.set(null); + } + + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java index c2a7b8fb..3efba5fb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java @@ -1,22 +1,167 @@ package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs; -import java.util.Date; +import androidx.lifecycle.MutableLiveData; -import it.integry.integrywmsnative.core.di.BindableString; +import com.annimon.stream.Stream; +import com.annimon.stream.function.Predicate; + +import java.util.Date; +import java.util.List; + +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; public class DialogVenditaFiltroAvanzatoViewModel { - public BindableString deposito = new BindableString(); - public BindableString idViaggio = new BindableString(); - public BindableString numOrds = new BindableString(); - public BindableString cliente = new BindableString(); - public BindableString dataConsegna = new BindableString(); - public BindableString terminiConsegna = new BindableString(); - public BindableString agente = new BindableString(); - public BindableString vettore = new BindableString(); - public BindableString automezzo = new BindableString(); - public BindableString paese = new BindableString(); + private Predicate currentDepositoPredicate = null; + private Predicate currentIdViaggioPredicate = null; + private Predicate currentNumOrdsPredicate = null; + private Predicate currentClientePredicate = null; + private Predicate currentDataConsPredicate = null; + private Predicate currentTermConsPredicate = null; + private Predicate currentVettorePredicate = null; + private Predicate currentAgentePredicate = null; + private Predicate currentAutomezzoPredicate = null; + private Predicate currentPaesePredicate = null; - public Date dataConsegnaDate; + + private List initialOrderList; + private MutableLiveData> currentFilteredOrderList = new MutableLiveData<>(); + + public void init(List initialList) { + this.initialOrderList = initialList; + this.currentFilteredOrderList.setValue(this.initialOrderList); + } + + public MutableLiveData> getMutableFilteredOrderList() { + return this.currentFilteredOrderList; + } + + public void setIDViaggioFilter(String idViaggio) { + if(UtilityString.isNullOrEmpty(idViaggio)) currentIdViaggioPredicate = null; + else { + String[] idViaggiSplitted = idViaggio.split("[,\\ ]"); + + try{ + List idViaggiInteger = Stream.of(idViaggiSplitted) + .filter(x -> !UtilityString.isNullOrEmpty(x)) + .map(Integer::parseInt).toList(); + + currentIdViaggioPredicate = o -> idViaggiInteger.contains(o.getIdViaggio()); + } catch (NumberFormatException ex) { + currentIdViaggioPredicate = null; + } + } + } + + public void setDepositoFilter(String deposito) { + if(UtilityString.isNullOrEmpty(deposito)) currentDepositoPredicate = null; + else { + currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(deposito); + } + } + + public void setNumOrdFilter(String numOrds) { + if(UtilityString.isNullOrEmpty(numOrds)) currentNumOrdsPredicate = null; + else { + String[] numOrdsSplitted = numOrds.split("[,\\ ]"); + + try{ + List numOrdsInteger = Stream.of(numOrdsSplitted) + .filter(x -> !UtilityString.isNullOrEmpty(x)) + .map(Integer::parseInt).toList(); + + currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); + } catch (NumberFormatException ex) { + currentNumOrdsPredicate = null; + } + } + } + + public void setClienteFilter(String cliente) { + if(UtilityString.isNullOrEmpty(cliente)) currentClientePredicate = null; + else { + currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(cliente.toLowerCase()); + } + } + + public void setTerminiConsegnaFilter(String terminiConsegna) { + if(UtilityString.isNullOrEmpty(terminiConsegna)) currentTermConsPredicate = null; + else { + currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(terminiConsegna); + } + } + + public void setVettoreFilter(String vettore) { + if(UtilityString.isNullOrEmpty(vettore)) currentVettorePredicate = null; + else { + currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(vettore); + } + } + + public void setAutomezzoFilter(String automezzo) { + if(UtilityString.isNullOrEmpty(automezzo)) currentAutomezzoPredicate = null; + else { + currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && (o.getDescrizioneAuto().toLowerCase().contains(automezzo) || o.getDescrizioneAuto().equalsIgnoreCase(automezzo)); + } + } + + public void setDataConsegnaFilter(Date dataConsegna) { + if(dataConsegna == null) currentDataConsPredicate = null; + else { + currentDataConsPredicate = o -> o.getDataConsD().equals(dataConsegna); + } + } + + public void setAgenteFilter(String agente) { + if(UtilityString.isNullOrEmpty(agente)) currentAgentePredicate = null; + else { + currentAgentePredicate = o -> !UtilityString.isNullOrEmpty(o.getNomeAgente()) && (o.getNomeAgente().toLowerCase().contains(agente) || o.getNomeAgente().equalsIgnoreCase(agente)); + } + } + + public void setPaeseFilter(String paese) { + if(UtilityString.isNullOrEmpty(paese)) currentPaesePredicate = null; + else { + currentPaesePredicate = o -> !UtilityString.isNullOrEmpty(o.getCitta()) && (o.getCitta().toLowerCase().contains(paese) || o.getCitta().equalsIgnoreCase(paese)); + } + } + + public void applyAllTests() { + + List returnList = null; + + if (currentNumOrdsPredicate == null && + currentClientePredicate == null && + currentDataConsPredicate == null && + currentTermConsPredicate == null && + currentVettorePredicate == null && + currentAutomezzoPredicate == null && + currentDepositoPredicate == null && + currentIdViaggioPredicate == null && + currentAgentePredicate == null && + currentPaesePredicate == null + ) { + returnList = this.initialOrderList; + } else { + Stream tmpStream = Stream.of(this.initialOrderList) + .filter(x -> + (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) && + (currentClientePredicate == null || (currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) && + (currentVettorePredicate == null || (currentVettorePredicate.test(x))) && + (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) && + (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) && + (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) && + (currentAgentePredicate == null || (currentAgentePredicate.test(x))) && + (currentPaesePredicate == null || (currentPaesePredicate.test(x))) + ); + + returnList = tmpStream.toList(); + } + + this.currentFilteredOrderList.setValue(returnList); + } } 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 933e19ee..ea826238 100644 --- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml @@ -9,6 +9,10 @@ name="viewmodel" type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" /> + + + app:binding="@{view.deposito}" /> @@ -79,7 +83,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_num_ords" - app:binding="@{viewmodel.idViaggio}" /> + app:binding="@{view.idViaggio}" /> @@ -101,7 +105,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_cliente" - app:binding="@{viewmodel.numOrds}"/> + app:binding="@{view.numOrds}"/> @@ -122,7 +126,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_vettore" - app:binding="@{viewmodel.cliente}"/> + app:binding="@{view.cliente}"/> @@ -143,7 +147,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_automezzo" - app:binding="@{viewmodel.vettore}"/> + app:binding="@{view.vettore}"/> @@ -164,7 +168,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_paese" - app:binding="@{viewmodel.automezzo}"/> + app:binding="@{view.automezzo}"/> @@ -186,7 +190,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_agente" - app:binding="@{viewmodel.paese}"/> + app:binding="@{view.paese}"/> @@ -207,7 +211,7 @@ android:ellipsize="end" android:imeOptions="actionNext" android:nextFocusForward="@id/filled_exposed_dropdown_term_cons" - app:binding="@{viewmodel.agente}"/> + app:binding="@{view.agente}"/> @@ -226,7 +230,7 @@ android:inputType="textNoSuggestions" android:focusable="false" android:singleLine="true" - app:binding="@{viewmodel.dataConsegna}"/> + app:binding="@{view.dataConsegna}"/> @@ -246,7 +250,7 @@ android:singleLine="true" android:ellipsize="end" android:imeOptions="actionDone" - app:binding="@{viewmodel.terminiConsegna}"/> + app:binding="@{view.terminiConsegna}"/>