Completato FIltroVenditaAvanzato
This commit is contained in:
parent
93cd8227c1
commit
fc732b4397
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,6 @@
|
|||||||
|
package it.integry.integrywmsnative.core.expansion;
|
||||||
|
|
||||||
|
public interface RunnableArgss<S, T> {
|
||||||
|
|
||||||
|
void run(S data1, T data2);
|
||||||
|
}
|
||||||
@ -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){
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.versamento_merce;
|
||||||
|
|
||||||
|
public class VersamentoMerceFragment {
|
||||||
|
}
|
||||||
@ -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}"/>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user