Completato FIltroVenditaAvanzato

This commit is contained in:
Gius95 2018-12-06 11:51:42 +01:00
parent 93cd8227c1
commit fc732b4397
7 changed files with 102 additions and 37 deletions

View File

@ -26,6 +26,9 @@ public class BindableString extends BaseObservable {
return value == null || value.isEmpty(); return value == null || value.isEmpty();
} }
public void refresh() {
notifyChange();
}
@ -38,4 +41,10 @@ public class BindableString extends BaseObservable {
} }
}); });
} }
public static void resetListeners(BindableString bindableString){
String oldValue = bindableString.get();
bindableString = new BindableString();
bindableString.set(oldValue);
}
} }

View File

@ -4,4 +4,4 @@ public interface RunnableArgs<T> {
void run(T data); void run(T data);
} }

View File

@ -0,0 +1,6 @@
package it.integry.integrywmsnative.core.expansion;
public interface RunnableArgss<S, T> {
void run(S data1, T data2);
}

View File

@ -36,6 +36,7 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter; import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato; import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
@ -55,6 +56,8 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
private List<OrdineVenditaInevasoDTO> mOriginalOrderList; private List<OrdineVenditaInevasoDTO> mOriginalOrderList;
private List<OrdineVenditaGroupedInevasoDTO> groupedOrdiniInevasi; private List<OrdineVenditaGroupedInevasoDTO> groupedOrdiniInevasi;
private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel;
public MainVenditaFragment() { public MainVenditaFragment() {
} }
@ -334,7 +337,9 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
@Override @Override
public void onFilterClick() { public void onFilterClick() {
DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, filteredOrderList -> { DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> {
mAppliedFilterViewModel = filter;
if(filteredOrderList != null){ if(filteredOrderList != null){

View File

@ -7,7 +7,9 @@ import android.content.DialogInterface;
import android.databinding.DataBindingUtil; import android.databinding.DataBindingUtil;
import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.BottomSheetBehavior;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate; import com.annimon.stream.function.Predicate;
@ -18,7 +20,7 @@ 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.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding; import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
@ -31,7 +33,7 @@ public class DialogVenditaFiltroAvanzato {
private AlertDialog currentAlert; private AlertDialog currentAlert;
private Context currentContext; private Context currentContext;
private RunnableArgs<List<OrdineVenditaInevasoDTO>> currentOnFilterDone; private RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
private List<OrdineVenditaInevasoDTO> currentOrderList; private List<OrdineVenditaInevasoDTO> currentOrderList;
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList; private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
@ -42,16 +44,22 @@ public class DialogVenditaFiltroAvanzato {
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null; private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null; private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) { private boolean firstInit = true;
return new DialogVenditaFiltroAvanzato(context, ordersList, onDismiss).currentAlert;
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
} }
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) { public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
}
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
currentContext = context; currentContext = context;
currentOrderList = ordersList; currentOrderList = ordersList;
currentOnFilterDone = onDismiss; currentOnFilterDone = onDismiss;
DialogVenditaFiltroAvanzatoViewModel viewModel = new DialogVenditaFiltroAvanzatoViewModel(); DialogVenditaFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel();
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
@ -61,26 +69,36 @@ public class DialogVenditaFiltroAvanzato {
.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) -> { .setNeutralButton(context.getText(R.string.reset), null);
resetAll(viewModel);
});
contentView.setViewmodel(viewModel); contentView.setViewmodel(viewModel);
initViewModel(viewModel); initViewModel(viewModel, contentView);
initView(contentView, viewModel); initView(contentView, viewModel);
currentAlert = alertDialog.create(); currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false); currentAlert.setCanceledOnTouchOutside(false);
currentAlert.setOnShowListener(dialogInterface -> {
Button button = ((AlertDialog) dialogInterface).getButton(AlertDialog.BUTTON_NEUTRAL);
button.setOnClickListener(view -> {
// TODO Do something
resetAll(viewModel);
});
});
currentAlert.setOnDismissListener(dialogInterface -> { currentAlert.setOnDismissListener(dialogInterface -> {
if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList); if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel);
}); });
refreshList(); refreshList();
} }
private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) { private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) {
viewModel.numOrds.set(null);
viewModel.numOrds.set(null); viewModel.numOrds.set(null);
viewModel.cliente.set(null); viewModel.cliente.set(null);
viewModel.dataConsegna.set(null); viewModel.dataConsegna.set(null);
@ -143,67 +161,96 @@ public class DialogVenditaFiltroAvanzato {
} }
private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) { private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) {
firstInit = true;
BindableString.resetListeners(viewModel.numOrds);
BindableString.registerListener(viewModel.numOrds, value -> { BindableString.registerListener(viewModel.numOrds, value -> {
if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null; if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null;
else { else {
String numOrdTrimmed = value.replaceAll(" ", ""); //String numOrdTrimmed = value.replaceAll(" ", "");
String[] numOrdsSplitted = numOrdTrimmed.split(","); String[] numOrdsSplitted = value.split("[,\\ ]");
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
.withoutNulls()
.map(Integer::parseInt).toList();
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); try{
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
.filter(x -> !UtilityString.isNullOrEmpty(x))
.map(Integer::parseInt).toList();
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
bindings.inputNumOrds.setErrorEnabled(false);
bindings.inputNumOrds.setError("");
} catch (NumberFormatException ex) {
currentNumOrdsPredicate = null;
bindings.inputNumOrds.setErrorEnabled(true);
bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error));
}
} }
refreshList(); if(!firstInit) refreshList();
}); });
viewModel.numOrds.refresh();
BindableString.resetListeners(viewModel.cliente);
BindableString.registerListener(viewModel.cliente, value -> { BindableString.registerListener(viewModel.cliente, value -> {
if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null; if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null;
else { else {
currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value); currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value);
} }
refreshList(); if(!firstInit) refreshList();
}); });
viewModel.cliente.refresh();
BindableString.resetListeners(viewModel.dataConsegna);
BindableString.registerListener(viewModel.dataConsegna, value -> { BindableString.registerListener(viewModel.dataConsegna, value -> {
if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null; if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null;
else { else {
currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate); currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate);
} }
refreshList(); if(!firstInit) refreshList();
}); });
viewModel.dataConsegna.refresh();
BindableString.resetListeners(viewModel.terminiConsegna);
BindableString.registerListener(viewModel.terminiConsegna, value -> { BindableString.registerListener(viewModel.terminiConsegna, value -> {
if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null; if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null;
else { else {
currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().toLowerCase().contains(value); currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().equalsIgnoreCase(value);
} }
refreshList(); if(!firstInit) refreshList();
}); });
viewModel.terminiConsegna.refresh();
BindableString.resetListeners(viewModel.automezzo);
BindableString.registerListener(viewModel.automezzo, value -> { BindableString.registerListener(viewModel.automezzo, value -> {
if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null; if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null;
else { else {
currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value); currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value);
} }
refreshList(); if(!firstInit) refreshList();
}); });
viewModel.automezzo.refresh();
if(firstInit) refreshList();
firstInit = false;
} }
@ -233,9 +280,9 @@ public class DialogVenditaFiltroAvanzato {
Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList) Stream<OrdineVenditaInevasoDTO> tmpStream = Stream.of(currentOrderList)
.filter(x -> .filter(x ->
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) &&
(currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) &&
(currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) &&
(currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x)))
); );
currentFilteredOrderList = tmpStream.toList(); currentFilteredOrderList = tmpStream.toList();
@ -258,12 +305,6 @@ public class DialogVenditaFiltroAvanzato {
(currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.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(); currentFilteredOrderList = tmpStream.toList();
} }

View File

@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.versamento_merce;
public class VersamentoMerceFragment {
}

View File

@ -40,7 +40,7 @@
<android.support.design.widget.TextInputEditText <android.support.design.widget.TextInputEditText
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textNoSuggestions" android:inputType="number|text"
android:hint="@string/num_ords" android:hint="@string/num_ords"
app:binding="@{viewmodel.numOrds}"/> app:binding="@{viewmodel.numOrds}"/>