Refactoring DialogFiltroVenditaAvanzato
This commit is contained in:
parent
3a0d4d290c
commit
ea7acf6053
@ -43,7 +43,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding;
|
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.dialogs.DialogVenditaFiltroAvanzatoViewModel;
|
||||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter;
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter;
|
||||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel;
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel;
|
||||||
@ -348,7 +348,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFilterClick() {
|
public void onFilterClick() {
|
||||||
DialogVenditaFiltroAvanzato.make(
|
DialogVenditaFiltroAvanzatoView.make(
|
||||||
getActivity(),
|
getActivity(),
|
||||||
this.mViewModel.getOrderList().getValue(),
|
this.mViewModel.getOrderList().getValue(),
|
||||||
mAppliedFilterViewModel,
|
mAppliedFilterViewModel,
|
||||||
|
|||||||
@ -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<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
|
|
||||||
|
|
||||||
private final List<OrdiniUscitaElencoDTO> currentOrderList;
|
|
||||||
private List<OrdiniUscitaElencoDTO> currentFilteredOrderList;
|
|
||||||
|
|
||||||
private ArrayAdapter<String> arrayAdapterCodMdep;
|
|
||||||
private ArrayAdapter<String> arrayAdapterIdViaggio;
|
|
||||||
private ArrayAdapter<String> arrayAdapterNumOrds;
|
|
||||||
private ArrayAdapter<String> arrayAdapterCliente;
|
|
||||||
private ArrayAdapter<String> arrayAdapterTermCons;
|
|
||||||
private ArrayAdapter<String> arrayAdapterVettore;
|
|
||||||
private ArrayAdapter<String> arrayAdapterAgente;
|
|
||||||
private ArrayAdapter<String> arrayAdapterAutomezzo;
|
|
||||||
private ArrayAdapter<String> arrayAdapterPaese;
|
|
||||||
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentDepositoPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentIdViaggioPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentNumOrdsPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentClientePredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentDataConsPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentTermConsPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentVettorePredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentAgentePredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentAutomezzoPredicate = null;
|
|
||||||
private Predicate<OrdiniUscitaElencoDTO> currentPaesePredicate = null;
|
|
||||||
|
|
||||||
private boolean firstInit = true;
|
|
||||||
|
|
||||||
public static AlertDialog make(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
|
||||||
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AlertDialog make(final Context context,
|
|
||||||
final List<OrdiniUscitaElencoDTO> ordersList,
|
|
||||||
DialogVenditaFiltroAvanzatoViewModel baseViewModel,
|
|
||||||
RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
|
||||||
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
|
|
||||||
}
|
|
||||||
|
|
||||||
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdiniUscitaElencoDTO>, 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<Integer> 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<Integer> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<String> 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<OrdiniUscitaElencoDTO> 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<OrdiniUscitaElencoDTO> 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();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -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<List<OrdiniUscitaElencoDTO>, 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<String> arrayAdapterCodMdep;
|
||||||
|
private ArrayAdapter<String> arrayAdapterIdViaggio;
|
||||||
|
private ArrayAdapter<String> arrayAdapterNumOrds;
|
||||||
|
private ArrayAdapter<String> arrayAdapterCliente;
|
||||||
|
private ArrayAdapter<String> arrayAdapterTermCons;
|
||||||
|
private ArrayAdapter<String> arrayAdapterVettore;
|
||||||
|
private ArrayAdapter<String> arrayAdapterAgente;
|
||||||
|
private ArrayAdapter<String> arrayAdapterAutomezzo;
|
||||||
|
private ArrayAdapter<String> arrayAdapterPaese;
|
||||||
|
|
||||||
|
private DialogVenditaFiltroAvanzatoViewModel viewModel;
|
||||||
|
|
||||||
|
public static AlertDialog make(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||||
|
return new DialogVenditaFiltroAvanzatoView(context, ordersList, null, onDismiss).currentAlert;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AlertDialog make(final Context context,
|
||||||
|
final List<OrdiniUscitaElencoDTO> ordersList,
|
||||||
|
DialogVenditaFiltroAvanzatoViewModel baseViewModel,
|
||||||
|
RunnableArgss<List<OrdiniUscitaElencoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||||
|
return new DialogVenditaFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogVenditaFiltroAvanzatoView(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdiniUscitaElencoDTO>, 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<String> arrayAdapter, List<String> inputList) {
|
||||||
|
arrayAdapter.clear();
|
||||||
|
arrayAdapter.addAll(inputList);
|
||||||
|
arrayAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<String> 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<String> getAvailableAgente(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(OrdiniUscitaElencoDTO::getNomeAgente)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableCodMdeps(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(OrdiniUscitaElencoDTO::getCodMdep)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableCliente(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(OrdiniUscitaElencoDTO::getRagSocOrd)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableNumOrds(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(x -> x.getNumOrd().toString())
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableTermCons(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(OrdiniUscitaElencoDTO::getTermCons)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> 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<String> getAvailableAutomezzi(boolean skipRecalc) {
|
||||||
|
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
|
||||||
|
.map(OrdiniUscitaElencoDTO::getDescrizioneAuto)
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sorted()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,22 +1,167 @@
|
|||||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
|
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 class DialogVenditaFiltroAvanzatoViewModel {
|
||||||
|
|
||||||
public BindableString deposito = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentDepositoPredicate = null;
|
||||||
public BindableString idViaggio = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentIdViaggioPredicate = null;
|
||||||
public BindableString numOrds = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentNumOrdsPredicate = null;
|
||||||
public BindableString cliente = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentClientePredicate = null;
|
||||||
public BindableString dataConsegna = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentDataConsPredicate = null;
|
||||||
public BindableString terminiConsegna = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentTermConsPredicate = null;
|
||||||
public BindableString agente = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentVettorePredicate = null;
|
||||||
public BindableString vettore = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentAgentePredicate = null;
|
||||||
public BindableString automezzo = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentAutomezzoPredicate = null;
|
||||||
public BindableString paese = new BindableString();
|
private Predicate<OrdiniUscitaElencoDTO> currentPaesePredicate = null;
|
||||||
|
|
||||||
public Date dataConsegnaDate;
|
|
||||||
|
private List<OrdiniUscitaElencoDTO> initialOrderList;
|
||||||
|
private MutableLiveData<List<OrdiniUscitaElencoDTO>> currentFilteredOrderList = new MutableLiveData<>();
|
||||||
|
|
||||||
|
public void init(List<OrdiniUscitaElencoDTO> initialList) {
|
||||||
|
this.initialOrderList = initialList;
|
||||||
|
this.currentFilteredOrderList.setValue(this.initialOrderList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() {
|
||||||
|
return this.currentFilteredOrderList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIDViaggioFilter(String idViaggio) {
|
||||||
|
if(UtilityString.isNullOrEmpty(idViaggio)) currentIdViaggioPredicate = null;
|
||||||
|
else {
|
||||||
|
String[] idViaggiSplitted = idViaggio.split("[,\\ ]");
|
||||||
|
|
||||||
|
try{
|
||||||
|
List<Integer> 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<Integer> 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<OrdiniUscitaElencoDTO> 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<OrdiniUscitaElencoDTO> 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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,6 +9,10 @@
|
|||||||
name="viewmodel"
|
name="viewmodel"
|
||||||
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
|
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="view"
|
||||||
|
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView" />
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
@ -59,7 +63,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusDown="@id/input_id_viaggio"
|
android:nextFocusDown="@id/input_id_viaggio"
|
||||||
app:binding="@{viewmodel.deposito}" />
|
app:binding="@{view.deposito}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -79,7 +83,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_num_ords"
|
android:nextFocusForward="@id/filled_exposed_dropdown_num_ords"
|
||||||
app:binding="@{viewmodel.idViaggio}" />
|
app:binding="@{view.idViaggio}" />
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -101,7 +105,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_cliente"
|
android:nextFocusForward="@id/filled_exposed_dropdown_cliente"
|
||||||
app:binding="@{viewmodel.numOrds}"/>
|
app:binding="@{view.numOrds}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -122,7 +126,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
|
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
|
||||||
app:binding="@{viewmodel.cliente}"/>
|
app:binding="@{view.cliente}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -143,7 +147,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_automezzo"
|
android:nextFocusForward="@id/filled_exposed_dropdown_automezzo"
|
||||||
app:binding="@{viewmodel.vettore}"/>
|
app:binding="@{view.vettore}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -164,7 +168,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_paese"
|
android:nextFocusForward="@id/filled_exposed_dropdown_paese"
|
||||||
app:binding="@{viewmodel.automezzo}"/>
|
app:binding="@{view.automezzo}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -186,7 +190,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_agente"
|
android:nextFocusForward="@id/filled_exposed_dropdown_agente"
|
||||||
app:binding="@{viewmodel.paese}"/>
|
app:binding="@{view.paese}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -207,7 +211,7 @@
|
|||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionNext"
|
android:imeOptions="actionNext"
|
||||||
android:nextFocusForward="@id/filled_exposed_dropdown_term_cons"
|
android:nextFocusForward="@id/filled_exposed_dropdown_term_cons"
|
||||||
app:binding="@{viewmodel.agente}"/>
|
app:binding="@{view.agente}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -226,7 +230,7 @@
|
|||||||
android:inputType="textNoSuggestions"
|
android:inputType="textNoSuggestions"
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
app:binding="@{viewmodel.dataConsegna}"/>
|
app:binding="@{view.dataConsegna}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
@ -246,7 +250,7 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:imeOptions="actionDone"
|
android:imeOptions="actionDone"
|
||||||
app:binding="@{viewmodel.terminiConsegna}"/>
|
app:binding="@{view.terminiConsegna}"/>
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user