Implementati primi filtri per DialogFiltroAvanzatoVendita.
This commit is contained in:
parent
08431d3e44
commit
93cd8227c1
@ -1,9 +1,12 @@
|
|||||||
package it.integry.integrywmsnative.core.di;
|
package it.integry.integrywmsnative.core.di;
|
||||||
|
|
||||||
import android.databinding.BaseObservable;
|
import android.databinding.BaseObservable;
|
||||||
|
import android.databinding.Observable;
|
||||||
|
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
|
||||||
@Parcel
|
@Parcel
|
||||||
public class BindableString extends BaseObservable {
|
public class BindableString extends BaseObservable {
|
||||||
String value;
|
String value;
|
||||||
@ -22,4 +25,17 @@ public class BindableString extends BaseObservable {
|
|||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return value == null || value.isEmpty();
|
return value == null || value.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void registerListener(BindableString bindableString, RunnableArgs<String> onValueChanged) {
|
||||||
|
bindableString.addOnPropertyChangedCallback(new OnPropertyChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onPropertyChanged(Observable sender, int propertyId) {
|
||||||
|
if(onValueChanged != null) onValueChanged.run(bindableString.get());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,13 @@
|
|||||||
|
package it.integry.integrywmsnative.core.utility;
|
||||||
|
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.MainApplication;
|
||||||
|
|
||||||
|
public class UtilityToast {
|
||||||
|
|
||||||
|
public static void showToast(String message) {
|
||||||
|
Toast.makeText(MainApplication.Context, message, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -30,6 +30,7 @@ import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
|
|||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityToast;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
|
import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
|
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
|
||||||
@ -51,6 +52,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
|
|
||||||
private MainListVenditaAdapter mAdapter;
|
private MainListVenditaAdapter mAdapter;
|
||||||
|
|
||||||
|
private List<OrdineVenditaInevasoDTO> mOriginalOrderList;
|
||||||
private List<OrdineVenditaGroupedInevasoDTO> groupedOrdiniInevasi;
|
private List<OrdineVenditaGroupedInevasoDTO> groupedOrdiniInevasi;
|
||||||
|
|
||||||
public MainVenditaFragment() {
|
public MainVenditaFragment() {
|
||||||
@ -112,12 +114,15 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
@Override
|
@Override
|
||||||
public void onLoadSuccess(List<OrdineVenditaInevasoDTO> ordini) {
|
public void onLoadSuccess(List<OrdineVenditaInevasoDTO> ordini) {
|
||||||
Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
|
Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show();
|
||||||
groupOrdiniAndMakeRecycler(ordini);
|
mOriginalOrderList = ordini;
|
||||||
|
groupOrdini(ordini);
|
||||||
|
initRecyclerView();
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFail(Exception ex) {
|
public void onLoadFail(Exception ex) {
|
||||||
|
mOriginalOrderList = new ArrayList<>();
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
|
|
||||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||||
@ -128,7 +133,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void groupOrdiniAndMakeRecycler(List<OrdineVenditaInevasoDTO> ordini){
|
private void groupOrdini(List<OrdineVenditaInevasoDTO> ordini){
|
||||||
|
|
||||||
groupedOrdiniInevasi = new ArrayList<>();
|
groupedOrdiniInevasi = new ArrayList<>();
|
||||||
|
|
||||||
@ -204,10 +209,18 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initRecyclerView() {
|
||||||
mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
|
mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
|
||||||
mBinding.venditaMainList.setAdapter(mAdapter);
|
mBinding.venditaMainList.setAdapter(mAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void refreshRecyclerView() {
|
||||||
|
mAdapter.updateItems(groupedOrdiniInevasi);
|
||||||
|
}
|
||||||
|
|
||||||
RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
|
RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
|
||||||
List<OrdineVenditaGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
|
List<OrdineVenditaGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
|
||||||
|
|
||||||
@ -321,7 +334,15 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
|
|||||||
@Override
|
@Override
|
||||||
public void onFilterClick() {
|
public void onFilterClick() {
|
||||||
|
|
||||||
DialogVenditaFiltroAvanzato.makeBase(getActivity()).show();
|
DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, filteredOrderList -> {
|
||||||
|
|
||||||
|
if(filteredOrderList != null){
|
||||||
|
|
||||||
|
groupOrdini(filteredOrderList);
|
||||||
|
refreshRecyclerView();
|
||||||
|
}
|
||||||
|
|
||||||
|
}).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,6 +47,12 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
|||||||
mOnGroupSelected = onGroupSelected;
|
mOnGroupSelected = onGroupSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateItems(List<OrdineVenditaGroupedInevasoDTO> updatedDataset) {
|
||||||
|
mDataset.clear();
|
||||||
|
mDataset.addAll(updatedDataset);
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Create new views (invoked by the layout manager)
|
// Create new views (invoked by the layout manager)
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,26 +1,57 @@
|
|||||||
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
import android.app.DatePickerDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.databinding.DataBindingUtil;
|
import android.databinding.DataBindingUtil;
|
||||||
import android.databinding.ViewDataBinding;
|
import android.support.design.widget.BottomSheetBehavior;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
|
||||||
|
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.R;
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableString;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
|
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
|
||||||
|
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||||
|
|
||||||
|
|
||||||
public class DialogVenditaFiltroAvanzato {
|
public class DialogVenditaFiltroAvanzato {
|
||||||
|
|
||||||
|
|
||||||
private static AlertDialog currentAlert;
|
private AlertDialog currentAlert;
|
||||||
private static Context currentContext;
|
private Context currentContext;
|
||||||
|
|
||||||
private static DialogVenditaFiltroAvanzatoViewModel currentViewModel;
|
private RunnableArgs<List<OrdineVenditaInevasoDTO>> currentOnFilterDone;
|
||||||
|
|
||||||
public static AlertDialog makeBase(final Context context) {
|
private List<OrdineVenditaInevasoDTO> currentOrderList;
|
||||||
|
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
|
||||||
|
|
||||||
|
private Predicate<OrdineVenditaInevasoDTO> currentNumOrdsPredicate = null;
|
||||||
|
private Predicate<OrdineVenditaInevasoDTO> currentClientePredicate = null;
|
||||||
|
private Predicate<OrdineVenditaInevasoDTO> currentDataConsPredicate = null;
|
||||||
|
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
|
||||||
|
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
|
||||||
|
|
||||||
|
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
||||||
|
return new DialogVenditaFiltroAvanzato(context, ordersList, onDismiss).currentAlert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
||||||
currentContext = context;
|
currentContext = context;
|
||||||
currentViewModel = new DialogVenditaFiltroAvanzatoViewModel();
|
currentOrderList = ordersList;
|
||||||
|
currentOnFilterDone = onDismiss;
|
||||||
|
|
||||||
|
DialogVenditaFiltroAvanzatoViewModel viewModel = new DialogVenditaFiltroAvanzatoViewModel();
|
||||||
|
|
||||||
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
|
||||||
|
|
||||||
@ -29,15 +60,214 @@ public class DialogVenditaFiltroAvanzato {
|
|||||||
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
|
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
|
||||||
.setView(contentView.getRoot())
|
.setView(contentView.getRoot())
|
||||||
.setPositiveButton(context.getText(R.string.confirm), null)
|
.setPositiveButton(context.getText(R.string.confirm), null)
|
||||||
.setNegativeButton(context.getText(R.string.abort), null);
|
.setNegativeButton(context.getText(R.string.abort), null)
|
||||||
|
.setNeutralButton(context.getText(R.string.reset), (dialogInterface, i) -> {
|
||||||
contentView.setViewmodel(currentViewModel);
|
resetAll(viewModel);
|
||||||
|
});
|
||||||
|
|
||||||
|
contentView.setViewmodel(viewModel);
|
||||||
|
initViewModel(viewModel);
|
||||||
|
initView(contentView, viewModel);
|
||||||
|
|
||||||
currentAlert = alertDialog.create();
|
currentAlert = alertDialog.create();
|
||||||
currentAlert.setCanceledOnTouchOutside(false);
|
currentAlert.setCanceledOnTouchOutside(false);
|
||||||
|
|
||||||
return currentAlert;
|
|
||||||
|
currentAlert.setOnDismissListener(dialogInterface -> {
|
||||||
|
if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList);
|
||||||
|
});
|
||||||
|
|
||||||
|
refreshList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
||||||
|
viewModel.numOrds.set(null);
|
||||||
|
viewModel.cliente.set(null);
|
||||||
|
viewModel.dataConsegna.set(null);
|
||||||
|
viewModel.terminiConsegna.set(null);
|
||||||
|
viewModel.automezzo.set(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
||||||
|
|
||||||
|
bindings.inputDataCons.setOnClickListener(view -> {
|
||||||
|
Calendar c = Calendar.getInstance();
|
||||||
|
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
|
||||||
|
bindings.inputTermCons.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext);
|
||||||
|
builderSingle.setTitle(R.string.terms_of_delivery);
|
||||||
|
|
||||||
|
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice);
|
||||||
|
arrayAdapter.addAll(getAvailableTermCons());
|
||||||
|
|
||||||
|
builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> {
|
||||||
|
viewModel.terminiConsegna.set(arrayAdapter.getItem(i));
|
||||||
|
});
|
||||||
|
builderSingle.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
bindings.inputAutomezzo.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder builderSingle = new AlertDialog.Builder(currentContext);
|
||||||
|
builderSingle.setTitle(R.string.vehicle);
|
||||||
|
|
||||||
|
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter(currentContext, android.R.layout.select_dialog_singlechoice);
|
||||||
|
arrayAdapter.addAll(getAvailableAutomezzi());
|
||||||
|
|
||||||
|
builderSingle.setAdapter(arrayAdapter, (dialogInterface, i) -> {
|
||||||
|
viewModel.automezzo.set(arrayAdapter.getItem(i));
|
||||||
|
});
|
||||||
|
builderSingle.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) {
|
||||||
|
|
||||||
|
BindableString.registerListener(viewModel.numOrds, value -> {
|
||||||
|
if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null;
|
||||||
|
else {
|
||||||
|
String numOrdTrimmed = value.replaceAll(" ", "");
|
||||||
|
String[] numOrdsSplitted = numOrdTrimmed.split(",");
|
||||||
|
|
||||||
|
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
|
||||||
|
.withoutNulls()
|
||||||
|
.map(Integer::parseInt).toList();
|
||||||
|
|
||||||
|
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BindableString.registerListener(viewModel.cliente, value -> {
|
||||||
|
if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null;
|
||||||
|
else {
|
||||||
|
currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BindableString.registerListener(viewModel.dataConsegna, value -> {
|
||||||
|
if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null;
|
||||||
|
else {
|
||||||
|
currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BindableString.registerListener(viewModel.terminiConsegna, value -> {
|
||||||
|
if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null;
|
||||||
|
else {
|
||||||
|
currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().toLowerCase().contains(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BindableString.registerListener(viewModel.automezzo, value -> {
|
||||||
|
if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null;
|
||||||
|
else {
|
||||||
|
currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableTermCons() {
|
||||||
|
if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){
|
||||||
|
currentFilteredOrderList = currentOrderList;
|
||||||
|
} else {
|
||||||
|
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) &&
|
||||||
|
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
|
||||||
|
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
|
||||||
|
(currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x)))
|
||||||
|
);
|
||||||
|
|
||||||
|
currentFilteredOrderList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Stream.of(currentFilteredOrderList).map(x -> x.getTermCons()).distinct().withoutNulls().toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getAvailableAutomezzi() {
|
||||||
|
if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){
|
||||||
|
currentFilteredOrderList = currentOrderList;
|
||||||
|
} else {
|
||||||
|
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) &&
|
||||||
|
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
|
||||||
|
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
|
||||||
|
(currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x)))
|
||||||
|
);
|
||||||
|
|
||||||
|
currentFilteredOrderList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Stream.of(currentFilteredOrderList).map(x -> x.getCodAuto()).distinct().withoutNulls().toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshList() {
|
||||||
|
|
||||||
|
if(currentNumOrdsPredicate == null && currentClientePredicate == null && currentDataConsPredicate == null && currentTermConsPredicate == null){
|
||||||
|
currentFilteredOrderList = currentOrderList;
|
||||||
|
} else {
|
||||||
|
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) &&
|
||||||
|
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
|
||||||
|
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
|
||||||
|
(currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) &&
|
||||||
|
(currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x)))
|
||||||
|
);
|
||||||
|
|
||||||
|
//if(currentNumOrdsPredicate != null) tmpStream = tmpStream.filter(currentNumOrdsPredicate);
|
||||||
|
//if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate);
|
||||||
|
//if(currentDataConsPredicate != null) tmpStream = tmpStream.filter(currentDataConsPredicate);
|
||||||
|
//if(currentTermConsPredicate != null) tmpStream = tmpStream.filter(currentTermConsPredicate);
|
||||||
|
//if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate);
|
||||||
|
|
||||||
|
currentFilteredOrderList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
package it.integry.integrywmsnative.gest.vendita.dialogs;
|
||||||
|
|
||||||
|
import android.support.design.widget.BottomSheetBehavior;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableFloat;
|
import it.integry.integrywmsnative.core.di.BindableFloat;
|
||||||
import it.integry.integrywmsnative.core.di.BindableInteger;
|
import it.integry.integrywmsnative.core.di.BindableInteger;
|
||||||
import it.integry.integrywmsnative.core.di.BindableString;
|
import it.integry.integrywmsnative.core.di.BindableString;
|
||||||
@ -8,6 +12,10 @@ public class DialogVenditaFiltroAvanzatoViewModel {
|
|||||||
|
|
||||||
public BindableString numOrds = new BindableString();
|
public BindableString numOrds = new BindableString();
|
||||||
public BindableString cliente = new BindableString();
|
public BindableString cliente = new BindableString();
|
||||||
|
public BindableString dataConsegna = new BindableString();
|
||||||
|
public BindableString terminiConsegna = new BindableString();
|
||||||
|
public BindableString automezzo = new BindableString();
|
||||||
|
|
||||||
|
public Date dataConsegnaDate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import java.text.ParseException;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||||
|
|
||||||
public class OrdineVenditaInevasoDTO implements Parcelable {
|
public class OrdineVenditaInevasoDTO implements Parcelable {
|
||||||
|
|
||||||
private String data;
|
private String data;
|
||||||
@ -378,9 +380,14 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
|
|||||||
return dataCons;
|
return dataCons;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getDataConsD() throws ParseException {
|
public Date getDataConsD() {
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
|
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
|
||||||
|
try {
|
||||||
return sdf.parse(getDataConsS());
|
return sdf.parse(getDataConsS());
|
||||||
|
} catch (ParseException e) {
|
||||||
|
UtilityLogger.errorMe(e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrdineVenditaInevasoDTO setDataCons(String dataCons) {
|
public OrdineVenditaInevasoDTO setDataCons(String dataCons) {
|
||||||
|
|||||||
10
app/src/main/res/drawable/bottom_sheet_modal_background.xml
Normal file
10
app/src/main/res/drawable/bottom_sheet_modal_background.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<corners
|
||||||
|
android:topLeftRadius="16dp"
|
||||||
|
android:topRightRadius="16dp" />
|
||||||
|
<padding android:top="16dp" />
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
@ -65,8 +65,63 @@
|
|||||||
</android.support.design.widget.TextInputLayout>
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:hintTextAppearance="@style/hint_text">
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/input_data_cons"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:hint="@string/ship_date"
|
||||||
|
android:focusable="false"
|
||||||
|
app:binding="@{viewmodel.dataConsegna}"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:hintTextAppearance="@style/hint_text">
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/input_term_cons"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:hint="@string/terms_of_delivery"
|
||||||
|
android:focusable="false"
|
||||||
|
app:binding="@{viewmodel.terminiConsegna}"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:hintTextAppearance="@style/hint_text">
|
||||||
|
|
||||||
|
|
||||||
|
<android.support.design.widget.TextInputEditText
|
||||||
|
android:id="@+id/input_automezzo"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="textNoSuggestions"
|
||||||
|
android:hint="@string/vehicle"
|
||||||
|
android:focusable="false"
|
||||||
|
app:binding="@{viewmodel.automezzo}"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.TextInputLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.v7.widget.CardView>
|
</android.support.v7.widget.CardView>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</layout>
|
</layout>
|
||||||
@ -18,6 +18,7 @@
|
|||||||
<string name="warning">Attenzione</string>
|
<string name="warning">Attenzione</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
<string name="abort">Annulla</string>
|
<string name="abort">Annulla</string>
|
||||||
|
<string name="reset">Resetta</string>
|
||||||
<string name="dispatched">Evasi</string>
|
<string name="dispatched">Evasi</string>
|
||||||
|
|
||||||
|
|
||||||
@ -141,6 +142,9 @@
|
|||||||
|
|
||||||
<string name="num_ords">Numero ordine</string>
|
<string name="num_ords">Numero ordine</string>
|
||||||
<string name="customer">Cliente</string>
|
<string name="customer">Cliente</string>
|
||||||
|
<string name="ship_date">Data consegna</string>
|
||||||
|
<string name="terms_of_delivery">Termini di consegna</string>
|
||||||
|
<string name="vehicle">Automezzo</string>
|
||||||
|
|
||||||
<string name="no_items_found_message">Nessun articolo trovato</string>
|
<string name="no_items_found_message">Nessun articolo trovato</string>
|
||||||
<string name="ask_print_message"><![CDATA[Si vuole procedere con la stampa dell\'etichetta?]]></string>
|
<string name="ask_print_message"><![CDATA[Si vuole procedere con la stampa dell\'etichetta?]]></string>
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
<string name="warning">Warning</string>
|
<string name="warning">Warning</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
<string name="abort">Abort</string>
|
<string name="abort">Abort</string>
|
||||||
|
<string name="reset">Reset</string>
|
||||||
<string name="dispatched">Dispatched</string>
|
<string name="dispatched">Dispatched</string>
|
||||||
<string name="no_description">No description</string>
|
<string name="no_description">No description</string>
|
||||||
<string name="description">Description</string>
|
<string name="description">Description</string>
|
||||||
@ -150,6 +151,9 @@
|
|||||||
|
|
||||||
<string name="num_ords">Orders number</string>
|
<string name="num_ords">Orders number</string>
|
||||||
<string name="customer">Customer</string>
|
<string name="customer">Customer</string>
|
||||||
|
<string name="ship_date">Ship date</string>
|
||||||
|
<string name="terms_of_delivery">Terms of delivery</string>
|
||||||
|
<string name="vehicle">Vehicle</string>
|
||||||
|
|
||||||
<string name="no_items_found_message">No items found</string>
|
<string name="no_items_found_message">No items found</string>
|
||||||
<string name="ask_print_message">Do you want print the label?</string>
|
<string name="ask_print_message">Do you want print the label?</string>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user