Finish v1.19.4(245)
This commit is contained in:
commit
28a034f0d6
@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
||||||
def appVersionCode = 243
|
def appVersionCode = 245
|
||||||
def appVersionName = '1.19.2'
|
def appVersionName = '1.19.4'
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.menu.MenuService;
|
|||||||
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
|
||||||
@ -85,6 +86,12 @@ public class MainApplicationModule {
|
|||||||
return new ArticoloRESTConsumer(systemRESTConsumer);
|
return new ArticoloRESTConsumer(systemRESTConsumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
return new CommessaRESTConsumer(systemRESTConsumer);
|
||||||
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
|
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
|||||||
@ -106,6 +106,9 @@ public class DtbOrdt extends EntityBase {
|
|||||||
private String noteConferma;
|
private String noteConferma;
|
||||||
private String codJflav;
|
private String codJflav;
|
||||||
|
|
||||||
|
public DtbOrdt() {
|
||||||
|
this.type = "dtb_ordt";
|
||||||
|
}
|
||||||
|
|
||||||
public String getDataOrd() {
|
public String getDataOrd() {
|
||||||
return dataOrd;
|
return dataOrd;
|
||||||
|
|||||||
@ -0,0 +1,49 @@
|
|||||||
|
package it.integry.integrywmsnative.core.model;
|
||||||
|
|
||||||
|
public class JtbComt extends EntityBase {
|
||||||
|
|
||||||
|
private String codJcom;
|
||||||
|
private String codJfas;
|
||||||
|
private String codJflav;
|
||||||
|
private String descrizione;
|
||||||
|
|
||||||
|
public JtbComt() {
|
||||||
|
this.type = "jtb_comt";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodJcom() {
|
||||||
|
return codJcom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JtbComt setCodJcom(String codJcom) {
|
||||||
|
this.codJcom = codJcom;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodJfas() {
|
||||||
|
return codJfas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JtbComt setCodJfas(String codJfas) {
|
||||||
|
this.codJfas = codJfas;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCodJflav() {
|
||||||
|
return codJflav;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JtbComt setCodJflav(String codJflav) {
|
||||||
|
this.codJflav = codJflav;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescrizione() {
|
||||||
|
return descrizione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JtbComt setDescrizione(String descrizione) {
|
||||||
|
this.descrizione = descrizione;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
package it.integry.integrywmsnative.core.rest.consumers;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityQuery;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class CommessaRESTConsumer extends _BaseRESTConsumer {
|
||||||
|
|
||||||
|
private final SystemRESTConsumer systemRESTConsumer;
|
||||||
|
|
||||||
|
public CommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
this.systemRESTConsumer = systemRESTConsumer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void getJtbComts(List<String> itemsToFind, RunnableArgs<List<JtbComt>> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
var whereCondMap = Stream.of(itemsToFind)
|
||||||
|
.map(x -> {
|
||||||
|
HashMap<String, Object> vars = new HashMap<>();
|
||||||
|
vars.put("cod_jcom", x);
|
||||||
|
return vars;
|
||||||
|
})
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
var whereCond = " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondMap);
|
||||||
|
|
||||||
|
Type typeOfObjectsList = new TypeToken<ArrayList<JtbComt>>() {}.getType();
|
||||||
|
this.systemRESTConsumer.processSql("SELECT * FROM jtb_comt " + whereCond, typeOfObjectsList, onComplete, onFailed);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -53,6 +53,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
|
|||||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||||
private ElevatedToolbar mToolbar;
|
private ElevatedToolbar mToolbar;
|
||||||
|
|
||||||
|
private String mTextFilter;
|
||||||
private FragmentMainAccettazioneBinding mBinding;
|
private FragmentMainAccettazioneBinding mBinding;
|
||||||
|
|
||||||
private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<MainListAccettazioneListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||||
@ -119,7 +120,9 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
|
|||||||
|
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
|
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x->{
|
||||||
|
this.refreshList(getFilteredList(mTextFilter));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData)
|
MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData)
|
||||||
@ -225,20 +228,25 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearcable
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextChange(String newText) {
|
public boolean onQueryTextChange(String newText) {
|
||||||
|
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
|
||||||
|
if(originalList == null || originalList.isEmpty()) return false;
|
||||||
|
mTextFilter = newText;
|
||||||
|
List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText);
|
||||||
|
|
||||||
|
refreshList(filteredOrders);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) {
|
||||||
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
|
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
|
||||||
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
|
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
|
||||||
|
if(originalList == null || originalList.isEmpty() || newText == null) return originalList;
|
||||||
if(originalList == null || originalList.isEmpty()) return false;
|
|
||||||
|
|
||||||
for(int i = 0; i < originalList.size(); i++){
|
for(int i = 0; i < originalList.size(); i++){
|
||||||
|
|
||||||
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
|
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
|
||||||
filteredOrders.add(originalList.get(i));
|
filteredOrders.add(originalList.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return filteredOrders;
|
||||||
refreshList(filteredOrders);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -84,6 +84,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
@Inject
|
@Inject
|
||||||
OrdiniUscitaElencoViewModel mViewModel;
|
OrdiniUscitaElencoViewModel mViewModel;
|
||||||
|
|
||||||
|
private final VenditaFiltroOrdiniViewModel mAppliedFilterViewModel = new VenditaFiltroOrdiniViewModel();
|
||||||
|
|
||||||
private FragmentMainOrdiniUscitaBinding mBindings = null;
|
private FragmentMainOrdiniUscitaBinding mBindings = null;
|
||||||
|
|
||||||
private final ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<OrdiniUscitaElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||||
@ -188,6 +190,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
this.initMtbGrupsCache(this::onLoadingEnded);
|
this.initMtbGrupsCache(this::onLoadingEnded);
|
||||||
|
|
||||||
|
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
|
||||||
|
|
||||||
this.refreshList(null);
|
this.refreshList(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -696,7 +700,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
if (filteredList != null) {
|
if (filteredList != null) {
|
||||||
tmpList = filteredList;
|
tmpList = filteredList;
|
||||||
} else if (mAppliedFilterViewModel != null) {
|
} else if (mAppliedFilterViewModel != null) {
|
||||||
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
|
|
||||||
mAppliedFilterViewModel.applyAllTests();
|
mAppliedFilterViewModel.applyAllTests();
|
||||||
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
||||||
} else {
|
} else {
|
||||||
@ -825,22 +828,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private final VenditaFiltroOrdiniViewModel mAppliedFilterViewModel = new VenditaFiltroOrdiniViewModel();
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public void onFilterClick() {
|
|
||||||
// DialogVenditaFiltroAvanzatoView.make(
|
|
||||||
// getActivity(),
|
|
||||||
// this.mViewModel.getOrderList().getValue(),
|
|
||||||
// mAppliedFilterViewModel,
|
|
||||||
//
|
|
||||||
// filter -> {
|
|
||||||
//
|
|
||||||
// mAppliedFilterViewModel = filter;
|
|
||||||
// refreshList(null);
|
|
||||||
//
|
|
||||||
// }).show();
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addOnPreDestroy(Runnable onPreDestroy) {
|
public void addOnPreDestroy(Runnable onPreDestroy) {
|
||||||
|
|||||||
@ -73,10 +73,18 @@ public class FilterAgenteLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllAgenti())
|
listModel.setValue(Stream.of(getAllAgenti())
|
||||||
.filter(x -> !hiddenAgenti.contains(x))
|
.filter(x -> !hiddenAgenti.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedAgenti.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedAgenti.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableAgenti.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedAgenti.add(x);
|
||||||
|
else preSelectedAgenti.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableAgenti.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,10 +72,18 @@ public class FilterAutomezzoLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllAutomezzi())
|
listModel.setValue(Stream.of(getAllAutomezzi())
|
||||||
.filter(x -> !hiddenAutomezzi.contains(x))
|
.filter(x -> !hiddenAutomezzi.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedAutomezzi.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedAutomezzi.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableAutomezzi.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedAutomezzi.add(x);
|
||||||
|
else preSelectedAutomezzi.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableAutomezzi.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,10 +72,18 @@ public class FilterClienteLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllClienti())
|
listModel.setValue(Stream.of(getAllClienti())
|
||||||
.filter(x -> !hiddenClienti.contains(x))
|
.filter(x -> !hiddenClienti.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedClienti.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedClienti.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableClienti.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedClienti.add(x);
|
||||||
|
else preSelectedClienti.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableClienti.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,10 +88,18 @@ public class FilterDepositoLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllCodMdeps())
|
listModel.setValue(Stream.of(getAllCodMdeps())
|
||||||
.filter(x -> !hiddenDepos.contains(x))
|
.filter(x -> !hiddenDepos.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedCodMdeps.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedCodMdeps.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableCodMdeps.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedCodMdeps.add(x);
|
||||||
|
else preSelectedCodMdeps.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableCodMdeps.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,10 +76,18 @@ public class FilterGruppoMercLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllGroupMerc())
|
listModel.setValue(Stream.of(getAllGroupMerc())
|
||||||
.filter(x -> !hiddenGroupMerc.contains(x))
|
.filter(x -> !hiddenGroupMerc.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedGroupMerc.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedGroupMerc.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableGroupMerc.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedGroupMerc.add(x);
|
||||||
|
else preSelectedGroupMerc.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(new BindableBoolean(preSelectedGroupMerc.contains(x)))
|
||||||
|
.setEnabled(new BindableBoolean(availableGroupMerc.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,10 +73,18 @@ public class FilterNumeroOrdineLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllNumOrds())
|
listModel.setValue(Stream.of(getAllNumOrds())
|
||||||
.filter(x -> !hiddenNumOrds.contains(x))
|
.filter(x -> !hiddenNumOrds.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedNumOrds.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedNumOrds.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableNumOrds.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if(selectedBoolean.get()) preSelectedNumOrds.add(x);
|
||||||
|
else preSelectedNumOrds.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableNumOrds.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,10 +73,18 @@ public class FilterPaeseLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllPaesi())
|
listModel.setValue(Stream.of(getAllPaesi())
|
||||||
.filter(x -> !hiddenPaesi.contains(x))
|
.filter(x -> !hiddenPaesi.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedPaesi.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedPaesi.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availablePaesi.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedPaesi.add(x);
|
||||||
|
else preSelectedPaesi.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availablePaesi.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,10 +73,18 @@ public class FilterTermConsLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllTermCons())
|
listModel.setValue(Stream.of(getAllTermCons())
|
||||||
.filter(x -> !hiddenSelectedTermCons.contains(x))
|
.filter(x -> !hiddenSelectedTermCons.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedTermCons.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedTermCons.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableTermCons.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedTermCons.add(x);
|
||||||
|
else preSelectedTermCons.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableTermCons.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -74,10 +74,18 @@ public class FilterVettoreLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllVettori())
|
listModel.setValue(Stream.of(getAllVettori())
|
||||||
.filter(x -> !hiddenSelectedVettori.contains(x))
|
.filter(x -> !hiddenSelectedVettori.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedVettori.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedVettori.contains(x));
|
||||||
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
|
if (selectedBoolean.get()) preSelectedVettori.add(x);
|
||||||
|
else preSelectedVettori.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
.setEnabled(new BindableBoolean(availableVettori.contains(x)))
|
.setEnabled(new BindableBoolean(availableVettori.contains(x)))
|
||||||
.setOriginalModel(x))
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,10 +73,18 @@ public class FilterViaggioLayoutView extends FilterLayoutView {
|
|||||||
|
|
||||||
listModel.setValue(Stream.of(getAllIDViaggio())
|
listModel.setValue(Stream.of(getAllIDViaggio())
|
||||||
.filter(x -> !hiddenIDViaggio.contains(x))
|
.filter(x -> !hiddenIDViaggio.contains(x))
|
||||||
.map(x -> new ListModel()
|
.map(x -> {
|
||||||
.setSelected(new BindableBoolean(preSelectedIDViaggio.contains(x)))
|
var selectedBoolean = new BindableBoolean(preSelectedIDViaggio.contains(x));
|
||||||
.setEnabled(new BindableBoolean(availableIDViaggio.contains(x)))
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
.setOriginalModel(x))
|
if (selectedBoolean.get()) preSelectedIDViaggio.add(x);
|
||||||
|
else preSelectedIDViaggio.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableIDViaggio.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
.sorted(c)
|
.sorted(c)
|
||||||
.toList());
|
.toList());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class OrdiniUscitaElencoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ServiceRESTResponse<List<DtbOrdt>>> call, Response<ServiceRESTResponse<List<DtbOrdt>>> response) {
|
public void onResponse(Call<ServiceRESTResponse<List<DtbOrdt>>> call, Response<ServiceRESTResponse<List<DtbOrdt>>> response) {
|
||||||
analyzeAnswer(response, "getOrdiniFromCommessaCollo", (m) -> {
|
analyzeAnswer(response, "getOrdiniFromCommessaCollo", (m) -> {
|
||||||
onComplete.run(response.body().getEntity());
|
onComplete.run(response.body().getDto());
|
||||||
}, onFailed);
|
}, onFailed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||||
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
|
||||||
|
public class ProdOrdineProduzioneElencoBindings {
|
||||||
|
|
||||||
|
public static final int NUM_ORD_FILTER_ID = 0;
|
||||||
|
public static final int COMMESSA_FILTER_ID = 1;
|
||||||
|
|
||||||
|
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
|
||||||
|
|
||||||
|
put(NUM_ORD_FILTER_ID, new FilterChipDTO()
|
||||||
|
.setID(NUM_ORD_FILTER_ID)
|
||||||
|
.setFilterChipText("Numero ordine")
|
||||||
|
.setFilterLayoutView(new FilterNumeroOrdineLayoutView()));
|
||||||
|
|
||||||
|
put(COMMESSA_FILTER_ID, new FilterChipDTO()
|
||||||
|
.setID(COMMESSA_FILTER_ID)
|
||||||
|
.setFilterChipText("Commessa")
|
||||||
|
.setFilterLayoutView(new FilterCommessaLayoutView()));
|
||||||
|
|
||||||
|
}};
|
||||||
|
|
||||||
|
}
|
||||||
@ -19,6 +19,7 @@ import com.annimon.stream.Stream;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@ -27,9 +28,11 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
import it.integry.integrywmsnative.core.data_cache.DataCache;
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
|
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
|
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
@ -37,31 +40,38 @@ import it.integry.integrywmsnative.databinding.FragmentProdOrdineProduzioneElenc
|
|||||||
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
|
||||||
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity;
|
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoView;
|
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterNumeroOrdineLayoutView;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoViewModel;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
|
||||||
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.OrdineProduzioneFilterViewModel;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoClienteListModel;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.MainListProdOrdineProduzioneElencoListModel;
|
||||||
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.OrdineProduzioneListAdapter;
|
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ui.OrdineProduzioneListAdapter;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A simple {@link Fragment} subclass.
|
* A simple {@link Fragment} subclass.
|
||||||
*/
|
*/
|
||||||
public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements ProdOrdineProduzioneElencoViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment {
|
public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements ProdOrdineProduzioneElencoViewModel.Listener, ITitledFragment, IScrollableFragment {
|
||||||
|
|
||||||
public BindableBoolean fabVisible = new BindableBoolean(false);
|
public BindableBoolean fabVisible = new BindableBoolean(false);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ProdOrdineProduzioneElencoViewModel mViewModel;
|
ProdOrdineProduzioneElencoViewModel mViewModel;
|
||||||
|
|
||||||
private FragmentProdOrdineProduzioneElencoBinding mBinding;
|
@Inject
|
||||||
|
CommessaRESTConsumer mCommessaRESTConsumer;
|
||||||
|
|
||||||
|
private FragmentProdOrdineProduzioneElencoBinding mBindings;
|
||||||
|
|
||||||
private final ObservableArrayList<MainListProdOrdineProduzioneElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
private final ObservableArrayList<MainListProdOrdineProduzioneElencoListModel> mOrdiniInevasiMutableData = new ObservableArrayList<>();
|
||||||
|
|
||||||
private AppCompatTextView mAppBarTitle;
|
private AppCompatTextView mAppBarTitle;
|
||||||
|
|
||||||
private DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
// private DialogOrdineProduzioneFiltroAvanzatoViewModel mAppliedFilterViewModel;
|
||||||
|
private OrdineProduzioneFilterViewModel mFilterViewModel = new OrdineProduzioneFilterViewModel();
|
||||||
|
private List<JtbComt> jtbComtCache;
|
||||||
|
|
||||||
public ProdOrdineProduzioneElencoFragment() {
|
public ProdOrdineProduzioneElencoFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -84,7 +94,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_ordine_produzione_elenco, container, false);
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_ordine_produzione_elenco, container, false);
|
||||||
|
|
||||||
MainApplication.appComponent
|
MainApplication.appComponent
|
||||||
.prodOrdineProduzioneElencoComponent()
|
.prodOrdineProduzioneElencoComponent()
|
||||||
@ -93,12 +103,13 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
|
|
||||||
mViewModel.setListener(this);
|
mViewModel.setListener(this);
|
||||||
|
|
||||||
mBinding.setLifecycleOwner(this);
|
mBindings.setLifecycleOwner(this);
|
||||||
mBinding.setView(this);
|
mBindings.setView(this);
|
||||||
|
|
||||||
this.initRecyclerView();
|
this.initRecyclerView();
|
||||||
|
this.initFilters();
|
||||||
|
|
||||||
return mBinding.getRoot();
|
return mBindings.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -119,9 +130,16 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
|
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> {
|
||||||
|
this.onLoadingStarted();
|
||||||
|
this.initJtbComtCache(this::onLoadingEnded);
|
||||||
|
|
||||||
mBinding.ordineProduzioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
|
mFilterViewModel.init(mViewModel.getOrderList().getValue());
|
||||||
|
|
||||||
|
this.refreshList(null);
|
||||||
|
});
|
||||||
|
|
||||||
|
mBindings.ordineProduzioneMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||||
|
|
||||||
OrdineProduzioneListAdapter adapter = new OrdineProduzioneListAdapter(getActivity(), mOrdiniInevasiMutableData)
|
OrdineProduzioneListAdapter adapter = new OrdineProduzioneListAdapter(getActivity(), mOrdiniInevasiMutableData)
|
||||||
.setOnGroupItemClicked(x -> {
|
.setOnGroupItemClicked(x -> {
|
||||||
@ -146,23 +164,129 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
.anyMatch(y -> y.getSelectedObservable().get()));
|
.anyMatch(y -> y.getSelectedObservable().get()));
|
||||||
});
|
});
|
||||||
|
|
||||||
adapter.setEmptyView(mBinding.ordiniProduzioneEmptyView);
|
adapter.setEmptyView(mBindings.ordiniProduzioneEmptyView);
|
||||||
|
|
||||||
mBinding.ordineProduzioneMainList.setAdapter(adapter);
|
mBindings.ordineProduzioneMainList.setAdapter(adapter);
|
||||||
|
|
||||||
|
// mToolbar.setRecyclerView(mBindings.ordineProduzioneMainList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFilters() {
|
||||||
|
var onPredicateChanged = new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
refreshList(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
mFilterViewModel.getCurrentCommPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
|
||||||
|
|
||||||
|
for (var filterChipDTO : ProdOrdineProduzioneElencoBindings.AVAILABLE_FILTERS.entrySet()) {
|
||||||
|
|
||||||
|
FilterChipView filterChipView = new FilterChipView(
|
||||||
|
requireActivity(),
|
||||||
|
filterChipDTO.getValue().getFilterChipText(),
|
||||||
|
v -> initBottomSheetDialogFilter(filterChipDTO.getValue()));
|
||||||
|
|
||||||
|
switch (filterChipDTO.getKey()) {
|
||||||
|
case ProdOrdineProduzioneElencoBindings.COMMESSA_FILTER_ID:
|
||||||
|
mFilterViewModel.getCurrentCommPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (mFilterViewModel.getCurrentCommPredicate().get() == null) {
|
||||||
|
filterChipView.disableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
} else {
|
||||||
|
filterChipView.enableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView, 0);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentCommPredicate().set(null));
|
||||||
|
break;
|
||||||
|
case ProdOrdineProduzioneElencoBindings.NUM_ORD_FILTER_ID:
|
||||||
|
mFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (mFilterViewModel.getCurrentNumOrdsPredicate().get() == null) {
|
||||||
|
filterChipView.disableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
} else {
|
||||||
|
filterChipView.enableCloseIcon();
|
||||||
|
|
||||||
|
mBindings.filterChipsGroup.removeView(filterChipView);
|
||||||
|
mBindings.filterChipsGroup.addView(filterChipView, 0);
|
||||||
|
mBindings.filterChips.smoothScrollTo(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
filterChipView.setOnResetClicked(() -> mFilterViewModel.getCurrentNumOrdsPredicate().set(null));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
|
||||||
|
filterChipDTO
|
||||||
|
.getFilterLayoutView()
|
||||||
|
.setFilterName(filterChipDTO.getFilterChipText())
|
||||||
|
.setContext(requireActivity());
|
||||||
|
|
||||||
|
var filterLayoutView = filterChipDTO
|
||||||
|
.getFilterLayoutView();
|
||||||
|
|
||||||
|
switch (filterChipDTO.getID()) {
|
||||||
|
case ProdOrdineProduzioneElencoBindings.COMMESSA_FILTER_ID:
|
||||||
|
((FilterCommessaLayoutView) filterLayoutView)
|
||||||
|
.setAllCommesse(mFilterViewModel.getAllCommesse(jtbComtCache))
|
||||||
|
.setAvailableCommesse(mFilterViewModel.getAvailableCommesse(jtbComtCache))
|
||||||
|
.setOnFilterApplied(mFilterViewModel::setCommessaFilter)
|
||||||
|
.setPreSelectedCommesse(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
|
||||||
|
.filter(mFilterViewModel.getCurrentCommPredicate().get() == null ?
|
||||||
|
x -> false :
|
||||||
|
mFilterViewModel.getCurrentCommPredicate().get())
|
||||||
|
.map(x -> Stream.of(jtbComtCache).filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get())
|
||||||
|
.toList());
|
||||||
|
break;
|
||||||
|
case ProdOrdineProduzioneElencoBindings.NUM_ORD_FILTER_ID:
|
||||||
|
((FilterNumeroOrdineLayoutView) filterLayoutView)
|
||||||
|
.setAllNumOrds(mFilterViewModel.getAllNumOrds())
|
||||||
|
.setAvailableNumOrds(mFilterViewModel.getAvailableNumOrds())
|
||||||
|
.setOnFilterApplied(mFilterViewModel::setNumOrdFilter)
|
||||||
|
.setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue()))
|
||||||
|
.filter(mFilterViewModel.getCurrentNumOrdsPredicate().get() == null ?
|
||||||
|
x -> false :
|
||||||
|
mFilterViewModel.getCurrentNumOrdsPredicate().get())
|
||||||
|
.map(OrdineAccettazioneInevasoDTO::getNumero)
|
||||||
|
.toList());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
filterLayoutView.show(requireActivity().getSupportFragmentManager(), "TAG");
|
||||||
|
|
||||||
mToolbar.setRecyclerView(mBinding.ordineProduzioneMainList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshList(List<OrdineAccettazioneInevasoDTO> filteredList) {
|
private void refreshList(List<OrdineAccettazioneInevasoDTO> filteredList) {
|
||||||
|
|
||||||
List<OrdineAccettazioneInevasoDTO> tmpList = null;
|
List<OrdineAccettazioneInevasoDTO> tmpList = null;
|
||||||
|
|
||||||
if(filteredList != null) {
|
if (filteredList != null) {
|
||||||
tmpList = filteredList;
|
tmpList = filteredList;
|
||||||
} else if (mAppliedFilterViewModel != null) {
|
} else if (mFilterViewModel != null) {
|
||||||
mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
|
mFilterViewModel.applyAllTests();
|
||||||
mAppliedFilterViewModel.applyAllTests();
|
tmpList = mFilterViewModel.getMutableFilteredOrderList().getValue();
|
||||||
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
|
|
||||||
} else {
|
} else {
|
||||||
tmpList = mViewModel.getOrderList().getValue();
|
tmpList = mViewModel.getOrderList().getValue();
|
||||||
}
|
}
|
||||||
@ -210,20 +334,20 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
this.mViewModel.loadPicking(selectedOrders);
|
this.mViewModel.loadPicking(selectedOrders);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void onFilterClick() {
|
// public void onFilterClick() {
|
||||||
DialogOrdineProduzioneFiltroAvanzatoView.make(
|
// DialogOrdineProduzioneFiltroAvanzatoView.make(
|
||||||
getActivity(),
|
// getActivity(),
|
||||||
this.mViewModel.getOrderList().getValue(),
|
// this.mViewModel.getOrderList().getValue(),
|
||||||
mAppliedFilterViewModel,
|
// mAppliedFilterViewModel,
|
||||||
|
//
|
||||||
filter -> {
|
// filter -> {
|
||||||
|
//
|
||||||
mAppliedFilterViewModel = filter;
|
// mAppliedFilterViewModel = filter;
|
||||||
refreshList(null);
|
// refreshList(null);
|
||||||
|
//
|
||||||
}).show();
|
// }).show();
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -256,4 +380,18 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
|||||||
|
|
||||||
}).show(getActivity().getSupportFragmentManager(), "tag");
|
}).show(getActivity().getSupportFragmentManager(), "tag");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void initJtbComtCache(Runnable onComplete) {
|
||||||
|
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
|
||||||
|
.flatMap(x -> Stream.of(x.getCodJcom()))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
|
||||||
|
this.jtbComtCache = jtbComtCache;
|
||||||
|
onComplete.run();
|
||||||
|
}, this::onError);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,175 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.ComparatorCompat;
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.BR;
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
|
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityBoolean;
|
||||||
|
import it.integry.integrywmsnative.databinding.LayoutFilterCommessaBinding;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterLayoutView;
|
||||||
|
|
||||||
|
public class FilterCommessaLayoutView extends FilterLayoutView {
|
||||||
|
|
||||||
|
protected LayoutFilterCommessaBinding mBindings;
|
||||||
|
|
||||||
|
private List<JtbComt> allCommesse;
|
||||||
|
private List<JtbComt> availableCommesse;
|
||||||
|
private List<JtbComt> preSelectedCommesse = new ArrayList<>();
|
||||||
|
private List<JtbComt> hiddenCommesse = new ArrayList<>();
|
||||||
|
private final MutableLiveData<List<ListModel>> listModel = new MutableLiveData<>();
|
||||||
|
|
||||||
|
private RunnableArgs<List<JtbComt>> onFilterApplied;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
mBindings = DataBindingUtil.inflate(inflater, R.layout.layout_filter_commessa, container, false);
|
||||||
|
this.mBindings.setView(this);
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
|
||||||
|
this.setSearchView(this.mBindings.searchView, newFilter -> {
|
||||||
|
hiddenCommesse = Stream.of(allCommesse)
|
||||||
|
.filter(x -> !x.getCodJcom().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)) &&
|
||||||
|
!x.getDescrizione().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
refreshList();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
new LiveAdapter(listModel, getViewLifecycleOwner(), BR.item)
|
||||||
|
.map(ListModel.class, R.layout.layout_filter_commessa__list_item)
|
||||||
|
.into(this.mBindings.recyclerview);
|
||||||
|
|
||||||
|
return mBindings.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshList() {
|
||||||
|
ComparatorCompat<ListModel> c =
|
||||||
|
ComparatorCompat
|
||||||
|
.chain(new ComparatorCompat<ListModel>((x, y) -> UtilityBoolean.toInt(x.getSelected().get()) - UtilityBoolean.toInt(y.getSelected().get())))
|
||||||
|
.thenComparing(new ComparatorCompat<>((x, y) -> UtilityBoolean.toInt(x.getEnabled().get()) - UtilityBoolean.toInt(y.getEnabled().get())))
|
||||||
|
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().getCodJcom().compareTo(x.getOriginalModel().getCodJcom())))
|
||||||
|
.reversed();
|
||||||
|
|
||||||
|
listModel.setValue(Stream.of(getAllCommesse())
|
||||||
|
.filter(x -> !hiddenCommesse.contains(x))
|
||||||
|
.map(x -> {
|
||||||
|
var selectedBoolean = new BindableBoolean(preSelectedCommesse.contains(x));
|
||||||
|
selectedBoolean.addOnPropertyChangedCallback(() -> {
|
||||||
|
if (selectedBoolean.get()) preSelectedCommesse.add(x);
|
||||||
|
else preSelectedCommesse.remove(x);
|
||||||
|
});
|
||||||
|
|
||||||
|
return new ListModel()
|
||||||
|
.setSelected(selectedBoolean)
|
||||||
|
.setEnabled(new BindableBoolean(availableCommesse.contains(x)))
|
||||||
|
.setOriginalModel(x);
|
||||||
|
})
|
||||||
|
.sorted(c)
|
||||||
|
.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onConfirm() {
|
||||||
|
if (onFilterApplied == null) return;
|
||||||
|
|
||||||
|
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
|
||||||
|
.filter(x -> x.selected.get())
|
||||||
|
.map(x -> x.originalModel)
|
||||||
|
.toList());
|
||||||
|
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JtbComt> getAllCommesse() {
|
||||||
|
return allCommesse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FilterCommessaLayoutView setAllCommesse(List<JtbComt> allCommesse) {
|
||||||
|
this.allCommesse = allCommesse;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JtbComt> getAvailableCommesse() {
|
||||||
|
return availableCommesse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FilterCommessaLayoutView setAvailableCommesse(List<JtbComt> availableCommesse) {
|
||||||
|
this.availableCommesse = availableCommesse;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JtbComt> getPreSelectedCommesse() {
|
||||||
|
return preSelectedCommesse;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FilterCommessaLayoutView setPreSelectedCommesse(List<JtbComt> preSelectedCommesse) {
|
||||||
|
this.preSelectedCommesse = preSelectedCommesse;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RunnableArgs<List<JtbComt>> getOnFilterApplied() {
|
||||||
|
return onFilterApplied;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FilterCommessaLayoutView setOnFilterApplied(RunnableArgs<List<JtbComt>> onFilterApplied) {
|
||||||
|
this.onFilterApplied = onFilterApplied;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ListModel {
|
||||||
|
private BindableBoolean selected = new BindableBoolean();
|
||||||
|
private BindableBoolean enabled = new BindableBoolean();
|
||||||
|
private JtbComt originalModel;
|
||||||
|
|
||||||
|
public BindableBoolean getSelected() {
|
||||||
|
return selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListModel setSelected(BindableBoolean selected) {
|
||||||
|
this.selected = selected;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BindableBoolean getEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListModel setEnabled(BindableBoolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JtbComt getOriginalModel() {
|
||||||
|
return originalModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ListModel setOriginalModel(JtbComt originalModel) {
|
||||||
|
this.originalModel = originalModel;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,136 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters;
|
||||||
|
|
||||||
|
import androidx.databinding.ObservableField;
|
||||||
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
|
import com.annimon.stream.function.Predicate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.JtbComt;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
|
||||||
|
|
||||||
|
public class OrdineProduzioneFilterViewModel {
|
||||||
|
private final ObservableField<Predicate<OrdineAccettazioneInevasoDTO>> currentNumOrdsPredicate = new ObservableField<>();
|
||||||
|
private final ObservableField<Predicate<OrdineAccettazioneInevasoDTO>> currentCommPredicate = new ObservableField<>();
|
||||||
|
|
||||||
|
|
||||||
|
private List<OrdineAccettazioneInevasoDTO> initialOrderList;
|
||||||
|
private final MutableLiveData<List<OrdineAccettazioneInevasoDTO>> currentFilteredOrderList = new MutableLiveData<>();
|
||||||
|
|
||||||
|
public void init(List<OrdineAccettazioneInevasoDTO> initialList) {
|
||||||
|
this.initialOrderList = initialList;
|
||||||
|
this.currentFilteredOrderList.setValue(this.initialOrderList);
|
||||||
|
}
|
||||||
|
public MutableLiveData<List<OrdineAccettazioneInevasoDTO>> getMutableFilteredOrderList() {
|
||||||
|
return this.currentFilteredOrderList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNumOrdFilter(List<Integer> numOrds) {
|
||||||
|
if (numOrds == null || numOrds.isEmpty()) currentNumOrdsPredicate.set(null);
|
||||||
|
else {
|
||||||
|
currentNumOrdsPredicate.set(o -> numOrds.contains(o.getNumero()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCommessaFilter(List<JtbComt> jtbComtList) {
|
||||||
|
if (jtbComtList == null || jtbComtList.isEmpty()) currentCommPredicate.set(null);
|
||||||
|
else {
|
||||||
|
List<String> codMdeps = Stream.of(jtbComtList).map(JtbComt::getCodJcom).toList();
|
||||||
|
currentCommPredicate.set(o -> codMdeps.contains(o.getCodJcom()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void applyAllTests() {
|
||||||
|
List<OrdineAccettazioneInevasoDTO> returnList = null;
|
||||||
|
|
||||||
|
if (currentNumOrdsPredicate.get() == null &&
|
||||||
|
currentCommPredicate.get() == null
|
||||||
|
) {
|
||||||
|
returnList = this.initialOrderList;
|
||||||
|
} else {
|
||||||
|
Stream<OrdineAccettazioneInevasoDTO> tmpStream = Stream.of(this.initialOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
|
||||||
|
(currentCommPredicate.get() == null || (currentCommPredicate.get().test(x))));
|
||||||
|
|
||||||
|
returnList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.currentFilteredOrderList.setValue(returnList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableField<Predicate<OrdineAccettazioneInevasoDTO>> getCurrentNumOrdsPredicate() {
|
||||||
|
return currentNumOrdsPredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableField<Predicate<OrdineAccettazioneInevasoDTO>> getCurrentCommPredicate() {
|
||||||
|
return currentCommPredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<JtbComt> getAllCommesse(List<JtbComt> commesseFullList) {
|
||||||
|
List<String> codJcom = Stream.of(initialOrderList)
|
||||||
|
.map(OrdineAccettazioneInevasoDTO::getCodJcom)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
return Stream.of(Objects.requireNonNull(commesseFullList))
|
||||||
|
.filter(x -> codJcom.contains(x.getCodJcom()))
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sortBy(JtbComt::getCodJcom)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JtbComt> getAvailableCommesse(List<JtbComt> commesseFullList) {
|
||||||
|
|
||||||
|
if (currentNumOrdsPredicate.get() == null) {
|
||||||
|
return getAllCommesse(commesseFullList);
|
||||||
|
} else {
|
||||||
|
List<String> availableCodMdeps = Stream.of(this.initialOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x)))
|
||||||
|
)
|
||||||
|
.map(OrdineAccettazioneInevasoDTO::getCodJcom)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
return Stream.of(Objects.requireNonNull(commesseFullList))
|
||||||
|
.filter(x -> availableCodMdeps.contains(x.getCodJcom()))
|
||||||
|
.distinct()
|
||||||
|
.withoutNulls()
|
||||||
|
.sortBy(JtbComt::getCodJcom)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getAllNumOrds() {
|
||||||
|
return Stream
|
||||||
|
.of(Objects.requireNonNull(initialOrderList))
|
||||||
|
.filter(x -> x.getNumero() != null)
|
||||||
|
.sortBy(x -> -x.getNumero())
|
||||||
|
.map(x -> x.getNumero() != null ? x.getNumero() : null)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getAvailableNumOrds() {
|
||||||
|
|
||||||
|
if (currentCommPredicate.get() == null
|
||||||
|
) {
|
||||||
|
return getAllNumOrds();
|
||||||
|
} else {
|
||||||
|
return Stream.of(this.initialOrderList)
|
||||||
|
.filter(x ->
|
||||||
|
(currentCommPredicate.get() == null || (currentCommPredicate.get().test(x)))
|
||||||
|
)
|
||||||
|
.map(OrdineAccettazioneInevasoDTO::getNumero)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -37,60 +37,12 @@
|
|||||||
|
|
||||||
<com.google.android.material.chip.ChipGroup
|
<com.google.android.material.chip.ChipGroup
|
||||||
android:id="@+id/filter_chips_group"
|
android:id="@+id/filter_chips_group"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingStart="8dp"
|
android:paddingStart="8dp"
|
||||||
android:paddingEnd="8dp"
|
android:paddingEnd="8dp"
|
||||||
app:chipSpacing="8dp"
|
app:chipSpacing="8dp"
|
||||||
app:singleSelection="true">
|
app:singleSelection="true" />
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipBackgroundColor="@color/colorPrimary"-->
|
|
||||||
<!-- android:textColor="@android:color/white"-->
|
|
||||||
<!-- app:closeIconEnabled="true"-->
|
|
||||||
<!-- app:closeIconTint="@android:color/white"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Deposito" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Numero" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Viaggio" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Cliente" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Vettore" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Automezzo" />-->
|
|
||||||
|
|
||||||
<!-- <com.google.android.material.chip.Chip-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- app:chipCornerRadius="4dp"-->
|
|
||||||
<!-- android:text="Paese" />-->
|
|
||||||
|
|
||||||
</com.google.android.material.chip.ChipGroup>
|
|
||||||
</HorizontalScrollView>
|
</HorizontalScrollView>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -19,11 +19,29 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<HorizontalScrollView
|
||||||
|
android:id="@+id/filter_chips"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:scrollbars="none"
|
||||||
|
android:background="@color/gray_050">
|
||||||
|
|
||||||
|
<com.google.android.material.chip.ChipGroup
|
||||||
|
android:id="@+id/filter_chips_group"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingStart="8dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
app:chipSpacing="8dp"
|
||||||
|
app:singleSelection="true" />
|
||||||
|
</HorizontalScrollView>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/ordine_produzione_main_list"
|
android:id="@+id/ordine_produzione_main_list"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/filter_chips"/>
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
|||||||
114
app/src/main/res/layout/layout_filter_commessa.xml
Normal file
114
app/src/main/res/layout/layout_filter_commessa.xml
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="dto"
|
||||||
|
type="it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="view"
|
||||||
|
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView" />
|
||||||
|
</data>
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentStart="true"
|
||||||
|
android:layout_toStartOf="@id/search_view"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:reverse_visibility="@{view.enabledSearch}">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/bottom_sheet_actions_title"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:text="@{view.filterName}"
|
||||||
|
android:textColor="#444"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:text="Nome filtro" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="8dp"
|
||||||
|
android:text="Seleziona la commessa che vuoi filtrare"
|
||||||
|
android:textColor="#444" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.SearchView
|
||||||
|
android:id="@+id/search_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:backgroundTint="@android:color/white" />
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/title_layout">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/recyclerview"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:focusableInTouchMode="true"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHeight_max="270dp"
|
||||||
|
app:layout_constraintHeight_min="200dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/save_btn"
|
||||||
|
style="@style/Button.PrimaryFull"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:text="@string/confirm"
|
||||||
|
app:singleClick="@{() -> view.onConfirm()}" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</layout>
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
<import type="android.view.View" />
|
||||||
|
|
||||||
|
<variable
|
||||||
|
name="item"
|
||||||
|
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView.ListModel" />
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:background="?android:attr/selectableItemBackground"
|
||||||
|
android:clickable="@{item.enabled}"
|
||||||
|
android:onClick="@{() -> item.selected.toggle()}">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatCheckBox
|
||||||
|
android:id="@+id/checkbox"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:enabled="@{item.enabled}"
|
||||||
|
app:checked="@{item.selected}"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:enabled="@{item.enabled}"
|
||||||
|
android:clickable="false">
|
||||||
|
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:enabled="@{item.enabled}"
|
||||||
|
android:text="@{item.originalModel.codJcom}"
|
||||||
|
tools:text="01"
|
||||||
|
android:clickable="false" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text=" - "
|
||||||
|
android:enabled="@{item.enabled}"
|
||||||
|
android:visibility="@{UtilityString.isNullOrEmpty(item.originalModel.descrizione) ? View.GONE : View.VISIBLE}"
|
||||||
|
tools:text=" - "
|
||||||
|
android:clickable="false" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:enabled="@{item.enabled}"
|
||||||
|
android:text="@{item.originalModel.descrizione}"
|
||||||
|
android:visibility="@{UtilityString.isNullOrEmpty(item.originalModel.descrizione) ? View.GONE : View.VISIBLE}"
|
||||||
|
tools:text="Descrizione deposito"
|
||||||
|
android:clickable="false" />
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
</layout>
|
||||||
Loading…
x
Reference in New Issue
Block a user