Aggiunto filtro commessa in Rientro Merce

This commit is contained in:
Giuseppe Scorrano 2025-01-27 13:04:15 +01:00
parent a046e31412
commit e85e05a526
27 changed files with 492 additions and 121 deletions

View File

@ -71,6 +71,7 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMate
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListComponent;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdComponent;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdModule;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaComponent;
@ -379,6 +380,8 @@ public interface MainApplicationComponent {
DialogSwitchUserDepoComponent.Factory dialogSwitchUserDepoComponent();
ProdRientroMerceOrderListComponent.Factory prodRientroMerceOrderListComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@ -1,12 +1,12 @@
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 java.util.stream.Collectors;
import javax.inject.Singleton;
@ -26,15 +26,15 @@ public class CommessaRESTConsumer extends _BaseRESTConsumer {
public void getJtbComts(List<String> itemsToFind, RunnableArgs<List<JtbComt>> onComplete, RunnableArgs<Exception> onFailed) {
var whereCondMap = Stream.of(itemsToFind)
.withoutNulls()
var whereCondMap = itemsToFind.stream()
.filter(x -> !UtilityString.isNullOrEmpty(x))
.map(x -> {
HashMap<String, Object> vars = new HashMap<>();
vars.put("cod_jcom", x);
return vars;
HashMap<String, Object> codJcom = new HashMap<>() {{
put("cod_jcom", x);
}};
return codJcom;
})
.toList();
.collect(Collectors.toUnmodifiableList());
if(whereCondMap.isEmpty()) {
onComplete.run(new ArrayList<>());

View File

@ -12,10 +12,10 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaese
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
public class OrdiniUscitaElencoBindings {
public class OrdiniUscitaElencoFilterBindings {
public static final int DEPOSITO_FILTER_ID = 0;

View File

@ -17,10 +17,12 @@ import com.annimon.stream.Stream;
import com.google.android.material.datepicker.MaterialDatePicker;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
@ -63,10 +65,10 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterPaese
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterTermConsLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterVettoreLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViaggioLayoutView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.VenditaFiltroOrdiniViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.OrdiniUscitaElencoFiltroViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
@ -91,7 +93,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
@Inject
OrdiniUscitaElencoViewModel mViewModel;
private final VenditaFiltroOrdiniViewModel mAppliedFilterViewModel = new VenditaFiltroOrdiniViewModel();
private final OrdiniUscitaElencoFiltroViewModel mAppliedFilterViewModel = new OrdiniUscitaElencoFiltroViewModel();
private FragmentMainOrdiniUscitaBinding mBindings = null;
@ -277,10 +279,10 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(onPredicateChanged);
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(onPredicateChanged);
List<FilterChipDTO> filterList = Stream.of(OrdiniUscitaElencoBindings.AVAILABLE_FILTERS.entrySet())
List<FilterChipDTO> filterList = OrdiniUscitaElencoFilterBindings.AVAILABLE_FILTERS.entrySet().stream()
.map(Map.Entry::getValue)
.sortBy(FilterChipDTO::getPosizione)
.toList();
.sorted(Comparator.comparing(FilterChipDTO::getPosizione))
.collect(Collectors.toList());
for (FilterChipDTO filterChipDTO : filterList) {
@ -290,7 +292,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) {
case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.DEPOSITO_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentDepositoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -311,7 +313,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDepositoPredicate().set(null));
}
case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.VIAGGIO_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentIdViaggioPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -332,7 +334,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentIdViaggioPredicate().set(null));
}
case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.NUM_ORD_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -353,7 +355,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentNumOrdsPredicate().set(null));
}
case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.CLIENTE_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentClientePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -374,7 +376,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentClientePredicate().set(null));
}
case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.VETTORE_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentVettorePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -395,7 +397,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentVettorePredicate().set(null));
}
case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.AUTOMEZZO_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentAutomezzoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -416,7 +418,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAutomezzoPredicate().set(null));
}
case OrdiniUscitaElencoBindings.PAESE_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.PAESE_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentPaesePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -437,7 +439,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPaesePredicate().set(null));
}
case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.AGENTE_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentAgentePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -458,7 +460,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAgentePredicate().set(null));
}
case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.TERM_CONS_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -479,7 +481,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentTermConsPredicate().set(null));
}
case OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.DATA_CONS_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -503,7 +505,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentDataConsPredicate().set(null);
});
}
case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.GRUPPO_MERC_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -527,7 +529,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentGruppoMercPredicate().set(null);
});
}
case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID -> {
case OrdiniUscitaElencoFilterBindings.COMMESSA_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
@ -560,7 +562,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
}
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
if (filterChipDTO.getID() == OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID) {
if (filterChipDTO.getID() == OrdiniUscitaElencoFilterBindings.DATA_CONS_FILTER_ID) {
var datePicker =
MaterialDatePicker.Builder.datePicker()
.setTitleText(filterChipDTO.getFilterChipText())
@ -583,7 +585,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
.getFilterLayoutView();
switch (filterChipDTO.getID()) {
case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.COMMESSA_FILTER_ID ->
((FilterCommessaLayoutView) filterLayoutView)
.setAllCommesse(mAppliedFilterViewModel.getAllCommesse(this.jtbComtCache))
.setAvailableCommesse(mAppliedFilterViewModel.getAvailableCommesse(this.jtbComtCache))
@ -594,7 +596,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentCommessaPredicate().get())
.map(x -> Stream.of(jtbComtCache).filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get())
.toList());
case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.DEPOSITO_FILTER_ID ->
((FilterDepositoLayoutView) filterLayoutView)
.setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache))
.setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps(mtbDepoCache))
@ -605,7 +607,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentDepositoPredicate().get())
.map(x -> Stream.of(mtbDepoCache).filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep())).findFirst().get())
.toList());
case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.VIAGGIO_FILTER_ID ->
((FilterViaggioLayoutView) filterLayoutView)
.setAllIDViaggio(mAppliedFilterViewModel.getAllIDViaggio())
.setAvailableIDViaggio(mAppliedFilterViewModel.getAvailableIDViaggio())
@ -616,7 +618,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get())
.map(OrdineUscitaInevasoDTO::getIdViaggio)
.toList());
case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.NUM_ORD_FILTER_ID ->
((FilterNumeroOrdineLayoutView) filterLayoutView)
.setAllNumOrds(mAppliedFilterViewModel.getAllNumOrds())
.setAvailableNumOrds(mAppliedFilterViewModel.getAvailableNumOrds())
@ -627,7 +629,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get())
.map(OrdineUscitaInevasoDTO::getNumOrd)
.toList());
case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.CLIENTE_FILTER_ID ->
((FilterClienteLayoutView) filterLayoutView)
.setAllClienti(mAppliedFilterViewModel.getAllClienti())
.setAvailableClienti(mAppliedFilterViewModel.getAvailableClienti())
@ -638,7 +640,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentClientePredicate().get())
.map(OrdineUscitaInevasoDTO::getRagSocOrd)
.toList());
case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.VETTORE_FILTER_ID ->
((FilterVettoreLayoutView) filterLayoutView)
.setAllVettori(mAppliedFilterViewModel.getAllVettori())
.setAvailableVettori(mAppliedFilterViewModel.getAvailableVettori())
@ -649,7 +651,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentVettorePredicate().get())
.map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : ""))
.toList());
case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.AUTOMEZZO_FILTER_ID ->
((FilterAutomezzoLayoutView) filterLayoutView)
.setAllAutomezzi(mAppliedFilterViewModel.getAllAutomezzi())
.setAvailableAutomezzi(mAppliedFilterViewModel.getAvailableAutomezzi())
@ -660,7 +662,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get())
.map(OrdineUscitaInevasoDTO::getDescrizioneAuto)
.toList());
case OrdiniUscitaElencoBindings.PAESE_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.PAESE_FILTER_ID ->
((FilterPaeseLayoutView) filterLayoutView)
.setAllPaesi(mAppliedFilterViewModel.getAllPaesi())
.setAvailablePaesi(mAppliedFilterViewModel.getAvailablePaesi())
@ -671,7 +673,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentPaesePredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.AGENTE_FILTER_ID ->
((FilterAgenteLayoutView) filterLayoutView)
.setAllAgenti(mAppliedFilterViewModel.getAllAgenti())
.setAvailableAgenti(mAppliedFilterViewModel.getAvailableAgenti())
@ -682,7 +684,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentAgentePredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.TERM_CONS_FILTER_ID ->
((FilterTermConsLayoutView) filterLayoutView)
.setAllTermCons(mAppliedFilterViewModel.getAllTermCons())
.setAvailableTermCons(mAppliedFilterViewModel.getAvailableTermCons())
@ -693,7 +695,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mAppliedFilterViewModel.getCurrentTermConsPredicate().get())
.map(OrdineUscitaInevasoDTO::getCitta)
.toList());
case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID ->
case OrdiniUscitaElencoFilterBindings.GRUPPO_MERC_FILTER_ID ->
((FilterGruppoMercLayoutView) filterLayoutView)
.setAllGroupMerc(mAppliedFilterViewModel.getAllGruppoMerc(mtbGrupCache))
.setAvailableGroupMerc(mAppliedFilterViewModel.getAvailableGruppoMerc(mtbGrupCache))
@ -730,7 +732,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(list);
fabVisible.set(Stream.of(mOrdiniInevasiMutableData)
fabVisible.set(mOrdiniInevasiMutableData.stream()
.anyMatch(y -> y.getSelectedObservable().get()));
});
}
@ -901,12 +903,17 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
onComplete.run();
return;
}
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
.flatMap(x -> Stream.of(x.getCodJcom()))
.distinct().withoutNulls()
.toList();
if (jtbComts.isEmpty()) {
List<String> jtbComts = null;
if(this.mViewModel.getOrderList().getValue() != null) {
jtbComts = this.mViewModel.getOrderList().getValue().stream()
.map(OrdineUscitaInevasoDTO::getCodJcom)
.distinct()
.filter(Objects::nonNull)
.collect(Collectors.toUnmodifiableList());
}
if (jtbComts == null || jtbComts.isEmpty()) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;

View File

@ -21,7 +21,7 @@ import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
public class VenditaFiltroOrdiniViewModel {
public class OrdiniUscitaElencoFiltroViewModel {
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentDepositoPredicate = new ObservableField<>();
private final ObservableField<Predicate<OrdiniUscitaElencoDTO>> currentIdViaggioPredicate = new ObservableField<>();

View File

@ -3,7 +3,7 @@ package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione;
import java.util.HashMap;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
public class ProdOrdineProduzioneElencoBindings {

View File

@ -43,7 +43,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAcc
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.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.MainListProdOrdineProduzioneElencoListModel;

View File

@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod;
import java.util.HashMap;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;

View File

@ -10,8 +10,6 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import com.ravikoradiya.liveadapter.LiveAdapter;
@ -19,12 +17,11 @@ import com.ravikoradiya.liveadapter.Type;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
@ -41,19 +38,14 @@ import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeProdBinding;
import it.integry.integrywmsnative.databinding.FragmentProdFabbisognoLineeTitleItemBinding;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterGruppoMercLayoutView;
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_fabbisogno_linee_prod.dto.GroupTitleModel;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeProdDTO;
@ -386,10 +378,10 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
public void dispatchOrders() {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel)
String ordini = UtilityDB.listValueToString(mProdFabbisognoItemModel.stream()
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString())
.toList());
.map(x -> String.valueOf(((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd()))
.collect(Collectors.toList()));
LocalDate dataInizio = Stream.of(mProdFabbisognoItemModel)
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
@ -417,10 +409,10 @@ public class ProdFabbisognoLineeProdFragment extends BaseFragment implements ITi
private void startPickingActivity(List<MtbGrup> listMtbGrup, List<ProdFabbisognoLineeProdDTO> fabbisognoList) {
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
String ordini = UtilityDB.listValueToString(Stream.of(mProdFabbisognoItemModel)
String ordini = UtilityDB.listValueToString(mProdFabbisognoItemModel.stream()
.filter(x -> x instanceof ProdFabbisognoLineeItemModelDto && ((ProdFabbisognoLineeItemModelDto) x).selected.get())
.map(x -> ((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd().toString())
.toList());
.map(x -> String.valueOf(((ProdFabbisognoLineeItemModelDto) x).getOrdineLavorazioneDTO().getNumOrd()))
.collect(Collectors.toList()));
Stream<ProdFabbisognoLineeProdDTO> streamSitArtOrd = Stream.of(fabbisognoList);

View File

@ -9,10 +9,9 @@ import com.annimon.stream.function.Predicate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dto.ProdFabbisognoLineeItemModelDto;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
@ -78,13 +77,11 @@ public class ProdFabbisognoLineeProdFilterViewModel {
}
public List<Integer> getAllNumOrds() {
return Stream
.of(Objects.requireNonNull(initialList))
.filter(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null)
.sortBy(x -> -x.getOrdineLavorazioneDTO().getNumOrd())
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd() != null ? x.getOrdineLavorazioneDTO().getNumOrd() : null)
return Objects.requireNonNull(initialList).stream()
.map(x -> x.getOrdineLavorazioneDTO().getNumOrd())
.sorted()
.distinct()
.toList();
.collect(Collectors.toList());
}
public List<Integer> getAvailableNumOrds() {

View File

@ -10,11 +10,11 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.inject.Inject;
@ -120,14 +120,13 @@ public class ProdRientroMerceFragment extends BaseFragment implements
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_prod_rientro_merce, container, false);
mBindings = FragmentProdRientroMerceBinding.inflate(LayoutInflater.from(getActivity()), container, false);
mBindings.setLifecycleOwner(this);
mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
mViewModel.setListener(this);
return mBindings.getRoot();
}
@ -149,6 +148,7 @@ public class ProdRientroMerceFragment extends BaseFragment implements
}
@Override
public void addOnPreDestroy(Runnable onPreDestroy) {
this.mOnPreDestroyList.add(onPreDestroy);
@ -172,6 +172,20 @@ public class ProdRientroMerceFragment extends BaseFragment implements
private void ordersUpdated(List<OrdineLavorazioneDTO> ordiniLavorazioneList) {
this.mProdRientroMerceOrderListFragment.pushOrderList(ordiniLavorazioneList);
if (mProdRientroMerceOrderDetailFragment != null && mProdRientroMerceOrderDetailFragment.getCurrentOrder().getValue() != null) {
var orderToRefresh = mProdRientroMerceOrderDetailFragment.getCurrentOrder().getValue();
Optional<OrdineLavorazioneDTO> foundOrder = ordiniLavorazioneList.stream().filter(x -> x.getNumOrd() == orderToRefresh.getNumOrd() &&
x.getDataOrd().equals(orderToRefresh.getDataOrd()) &&
x.getGestione().equalsIgnoreCase(orderToRefresh.getGestione()))
.findFirst();
if(foundOrder.isPresent())
mProdRientroMerceOrderDetailFragment.setOrder(foundOrder.get());
else
mProdRientroMerceOrderDetailFragment.setOrder(null);
}
}
@Override
@ -220,4 +234,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements
else onComplete.run();
}
}

View File

@ -27,6 +27,10 @@ public class ProdRientroMerceViewModel {
this.mMesRESTConsumer = mesRESTConsumer;
}
public void refreshOrderList() {
this.sendOnOrdersLoadingStarted();
String codAnag = SettingsManager.iDB().getFilterFornitoreProd();

View File

@ -174,6 +174,10 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
}
public MutableLiveData<OrdineLavorazioneDTO> getCurrentOrder() {
return currentOrder;
}
private void onConnected(BluetoothSerialDevice connectedDevice) {
Toast.makeText(requireActivity(), "Connesso a: " + connectedDevice.getMac(), Toast.LENGTH_LONG).show();
mConnectedBluetoothDevice = connectedDevice;

View File

@ -74,6 +74,7 @@ public class ProdRientroMerceOrderDetailViewModel {
//this.sendOnLoadingStarted();
this.mtbColtsOfOrder.postValue(null);
if (currentOrder != null) {
this.prodRientroMerceOrderDetailRESTConsumer.getMtbColtsOfOrder(currentOrder, mtbColts -> {
for (MtbColt mtbColt : mtbColts) {
mtbColt.getMtbColr().get(0)
@ -85,6 +86,7 @@ public class ProdRientroMerceOrderDetailViewModel {
//this.sendOnLoadingEnded();
}, this::sendError);
}
}
public void retrieveOrderData(RunnableArgss<MtbAart, String> onComplete) {
String codProd = currentOrder.getCodProd();

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
import dagger.Subcomponent;
@Subcomponent
public interface ProdRientroMerceOrderListComponent {
@Subcomponent.Factory
interface Factory {
ProdRientroMerceOrderListComponent create();
}
void inject(ProdRientroMerceOrderListFragment prodRientroMerceOrderListFragment);
}

View File

@ -0,0 +1,19 @@
package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
import java.util.HashMap;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
public class ProdRientroMerceOrderListFilterBindings {
public static final int COMMESSA_FILTER_ID = 0;
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
put(COMMESSA_FILTER_ID, new FilterChipDTO()
.setID(COMMESSA_FILTER_ID)
.setPosizione(9)
.setFilterChipText("Commessa")
.setFilterLayoutView(new FilterCommessaLayoutView()));
}};
}

View File

@ -0,0 +1,113 @@
package it.integry.integrywmsnative.gest.prod_rientro_merce.order_list;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class ProdRientroMerceOrderListFilterViewModel {
private final ObservableField<Predicate<OrdineLavorazioneDTO>> currentCommessaPredicate = new ObservableField<>();
private List<OrdineLavorazioneDTO> initialOrderList;
private final MutableLiveData<List<OrdineLavorazioneDTO>> currentFilteredOrderList = new MutableLiveData<>();
public void init(List<OrdineLavorazioneDTO> initialList) {
this.initialOrderList = initialList;
this.currentFilteredOrderList.setValue(this.initialOrderList);
}
public MutableLiveData<List<OrdineLavorazioneDTO>> getMutableFilteredOrderList() {
return this.currentFilteredOrderList;
}
public void setCommessaFilter(List<JtbComt> jtbComtList) {
if (jtbComtList == null || jtbComtList.isEmpty()) currentCommessaPredicate.set(null);
else {
List<String> codJcoms = jtbComtList.stream()
.map(JtbComt::getCodJcom)
.collect(Collectors.toList());
currentCommessaPredicate.set(o -> codJcoms.contains(o.getCodJcom()));
}
}
public void applyAllTests() {
List<OrdineLavorazioneDTO> returnList = null;
if (
currentCommessaPredicate.get() == null
) {
returnList = this.initialOrderList;
} else {
Stream<OrdineLavorazioneDTO> tmpStream = this.initialOrderList.stream()
.filter(x ->
(currentCommessaPredicate.get() == null || (currentCommessaPredicate.get().test(x)))
);
returnList = tmpStream.collect(Collectors.toList());
}
this.currentFilteredOrderList.setValue(returnList);
}
public ObservableField<Predicate<OrdineLavorazioneDTO>> getCurrentCommessaPredicate() {
return currentCommessaPredicate;
}
public List<JtbComt> getAllCommesse(List<JtbComt> commesseFullList) {
List<String> codJcom = initialOrderList.stream()
.map(OrdineLavorazioneDTO::getCodJcom)
.distinct()
.collect(Collectors.toUnmodifiableList());
return Objects.requireNonNull(commesseFullList).stream()
.filter(x -> x != null && codJcom.contains(x.getCodJcom()))
.distinct()
.sorted((o1, o2) -> o1.getCodJcom().compareTo(o2.getCodJfas()))
.collect(Collectors.toUnmodifiableList());
}
public List<JtbComt> getAvailableCommesse(List<JtbComt> commesseFullList) {
// if (currentIdViaggioPredicate.get() == null ) {
return getAllCommesse(commesseFullList);
// } else {
// List<String> availableCommesse = Stream.of(this.initialOrderList)
// .filter(x ->
// (currentIdViaggioPredicate.get() == null || (currentIdViaggioPredicate.get().test(x))) &&
// (currentNumOrdsPredicate.get() == null || (currentNumOrdsPredicate.get().test(x))) &&
// (currentDataConsPredicate.get() == null || (currentDataConsPredicate.get().test(x))) &&
// (currentAgentePredicate.get() == null || (currentAgentePredicate.get().test(x))) &&
// (currentClientePredicate.get() == null || (currentClientePredicate.get().test(x))) &&
// (currentVettorePredicate.get() == null || (currentVettorePredicate.get().test(x))) &&
// (currentDepositoPredicate.get() == null || (currentDepositoPredicate.get().test(x))) &&
// (currentPaesePredicate.get() == null || (currentPaesePredicate.get().test(x))) &&
// (currentAutomezzoPredicate.get() == null || (currentAutomezzoPredicate.get().test(x))) &&
// (currentGruppoMercPredicate.get() == null || (currentGruppoMercPredicate.get().test(x))) &&
// (currentTermConsPredicate.get() == null || (currentTermConsPredicate.get().test(x)))
// )
// .map(OrdineUscitaInevasoDTO::getCodJcom)
// .distinct()
// .toList();
//
// return Stream.of(Objects.requireNonNull(commesseFullList))
// .filter(x -> availableCommesse.contains(x.getCodJcom()))
// .distinct()
// .withoutNulls()
// .sortBy(JtbComt::getCodJcom)
// .toList();
}
}

View File

@ -6,7 +6,6 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -18,17 +17,32 @@ import com.annimon.stream.Stream;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentProdRientroMerceOrderListBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
/**
* A simple {@link Fragment} subclass.
@ -37,14 +51,27 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
*/
public class ProdRientroMerceOrderListFragment extends Fragment {
@Inject
CommessaRESTConsumer mCommessaRESTConsumer;
private final ObservableArrayList<ProdRientroMerceOrderListModel> mOrdiniApertiMutableData = new ObservableArrayList<>();
private FragmentProdRientroMerceOrderListBinding mBindings = null;
private RunnableArgs<OrdineLavorazioneDTO> mOnItemSelectedRunnable;
private ElevatedToolbar mToolbar;
private OnRefreshListener onRefreshListener;
private final ProdRientroMerceOrderListFilterViewModel mAppliedFilterViewModel = new ProdRientroMerceOrderListFilterViewModel();
private List<OrdineLavorazioneDTO> internalOrderList = new ArrayList<>();
private List<JtbComt> jtbComtCache;
public ProdRientroMerceOrderListFragment() {
// Required empty public constructor
MainApplication.appComponent
.prodRientroMerceOrderListComponent()
.create()
.inject(this);
}
public static ProdRientroMerceOrderListFragment newInstance(ElevatedToolbar elevatedToolbar) {
@ -56,6 +83,7 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
return prodRientroMerceOrderListFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -68,21 +96,23 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mBindings = DataBindingUtil.inflate(inflater, R.layout.fragment_prod_rientro_merce_order_list, container, false);
mBindings = FragmentProdRientroMerceOrderListBinding.inflate(inflater, container, false);
mBindings.setLifecycleOwner(this);
if (savedInstanceState == null) this.initRecyclerView();
if (savedInstanceState == null) {
this.initRecyclerView();
this.initFilters();
}
return mBindings.getRoot();
}
private void initRecyclerView() {
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(requireActivity(), R.drawable.divider));
this.mBindings.mainList.addItemDecoration(itemDecorator);
ProdRientroMerceOrderListAdapter prodRientroMerceOrderListAdapter = new ProdRientroMerceOrderListAdapter(getActivity(), mOrdiniApertiMutableData)
.setEmptyView(this.mBindings.emptyView)
.setOnItemClicked(x -> {
@ -100,10 +130,139 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
});
}
public void pushOrderList(List<OrdineLavorazioneDTO> orderList) {
this.mOrdiniApertiMutableData.clear();
this.mOrdiniApertiMutableData.addAll(convertDataModelToListModel(orderList));
private void initFilters() {
var onPredicateChanged = new OnGeneralChangedCallback() {
@Override
public void run() {
refreshList();
}
};
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(onPredicateChanged);
List<FilterChipDTO> filterList = ProdRientroMerceOrderListFilterBindings.AVAILABLE_FILTERS.entrySet().stream()
.map(Map.Entry::getValue)
.sorted(Comparator.comparing(FilterChipDTO::getPosizione))
.collect(Collectors.toList());
for (FilterChipDTO filterChipDTO : filterList) {
FilterChipView filterChipView = new FilterChipView(
requireActivity(),
filterChipDTO.getFilterChipText(),
v -> initBottomSheetDialogFilter(filterChipDTO));
switch (filterChipDTO.getID()) {
case ProdRientroMerceOrderListFilterBindings.COMMESSA_FILTER_ID -> {
mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
@Override
public void run() {
if (mAppliedFilterViewModel.getCurrentCommessaPredicate().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(() -> {
mAppliedFilterViewModel.setCommessaFilter(null);
mAppliedFilterViewModel.getCurrentCommessaPredicate().set(null);
});
}
}
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 ProdRientroMerceOrderListFilterBindings.COMMESSA_FILTER_ID ->
((FilterCommessaLayoutView) filterLayoutView)
.setAllCommesse(mAppliedFilterViewModel.getAllCommesse(this.jtbComtCache))
.setAvailableCommesse(mAppliedFilterViewModel.getAvailableCommesse(this.jtbComtCache))
.setOnFilterApplied(mAppliedFilterViewModel::setCommessaFilter)
.setPreSelectedCommesse(internalOrderList.stream()
.filter(mAppliedFilterViewModel.getCurrentCommessaPredicate().get() == null ?
x -> false :
Objects.requireNonNull(mAppliedFilterViewModel.getCurrentCommessaPredicate().get()))
.map(x -> jtbComtCache.parallelStream()
.filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get())
.collect(Collectors.toList()));
}
if (!filterLayoutView.isAdded())
filterLayoutView.show(requireActivity().getSupportFragmentManager(), "bottom-sheet-filters");
}
private void initJtbComtCache(Runnable onComplete) {
if (this.internalOrderList == null || this.internalOrderList.isEmpty()) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
List<String> jtbComts = this.internalOrderList.stream()
.map(OrdineLavorazioneDTO::getCodJcom)
.distinct()
.filter(Objects::nonNull)
.collect(Collectors.toUnmodifiableList());
if (jtbComts.isEmpty()) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
this.jtbComtCache = jtbComtCache;
onComplete.run();
}, this::onError);
}
public void pushOrderList(List<OrdineLavorazioneDTO> orderList) {
this.internalOrderList = orderList;
onOrderLoadingStarted();
this.initJtbComtCache(() -> {
mAppliedFilterViewModel.init(internalOrderList);
refreshList();
onOrderLoadingEnded();
});
}
private void refreshList() {
requireActivity().runOnUiThread(() -> {
List<OrdineLavorazioneDTO> tmpList;
mAppliedFilterViewModel.applyAllTests();
tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
this.mOrdiniApertiMutableData.clear();
this.mOrdiniApertiMutableData.addAll(convertDataModelToListModel(tmpList));
});
}
public void onOrderLoadingStarted() {
@ -115,6 +274,14 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
}
public void onError(Exception ex) {
requireActivity().runOnUiThread(() -> {
onOrderLoadingEnded();
UtilityExceptions.defaultException(getActivity(), ex);
BarcodeManager.enable();
});
}
private List<ProdRientroMerceOrderListModel> convertDataModelToListModel(List<OrdineLavorazioneDTO> dataList) {
ComparatorCompat<OrdineLavorazioneDTO> comparator = ComparatorCompat

View File

@ -43,7 +43,7 @@ public class OrdineLavorazioneDTO {
private String gestione;
private Integer numOrd;
private int numOrd;
private String descrizioneProd;
@ -166,11 +166,11 @@ public class OrdineLavorazioneDTO {
this.gestione = gestione;
}
public Integer getNumOrd() {
public int getNumOrd() {
return numOrd;
}
public void setNumOrd(Integer numOrd) {
public void setNumOrd(int numOrd) {
this.numOrd = numOrd;
}

View File

@ -9,6 +9,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import it.integry.integrywmsnative.core.di.BindableBoolean;
@ -24,14 +25,26 @@ public abstract class FilterLayoutView extends BottomSheetDialogFragment {
private SearchView mSearchView;
private RunnableArgs<String> mOnFilterChanged;
@Override
public void onStart() {
super.onStart();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
var behavior = BottomSheetBehavior.from((View) view.getParent());
behavior.setSkipCollapsed(true);
getDialog().setOnShowListener(dialogInterface -> {
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
});
if (mSearchView != null) this.initSearchView();
}
protected void initSearchView() {
mSearchView.setOnSearchClickListener(v -> {

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters;
package it.integry.integrywmsnative.ui.filter_chips.filters;
import android.os.Bundle;
import android.view.LayoutInflater;
@ -7,17 +7,16 @@ 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 java.util.stream.Collectors;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.R;
@ -43,16 +42,16 @@ public class FilterCommessaLayoutView extends FilterLayoutView {
@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);
mBindings = LayoutFilterCommessaBinding.inflate(inflater, container, false);
this.mBindings.setView(this);
refreshList();
this.setSearchView(this.mBindings.searchView, newFilter -> {
hiddenCommesse = Stream.of(allCommesse)
hiddenCommesse = allCommesse.stream()
.filter(x -> !x.getCodJcom().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)) &&
!x.getDescrizione().toUpperCase(Locale.ROOT).contains(newFilter.toUpperCase(Locale.ROOT)))
.toList();
.collect(Collectors.toList());
refreshList();
});
@ -73,7 +72,7 @@ public class FilterCommessaLayoutView extends FilterLayoutView {
.thenComparing(new ComparatorCompat<>((x, y) -> y.getOriginalModel().getCodJcom().compareTo(x.getOriginalModel().getCodJcom())))
.reversed();
listModel.setValue(Stream.of(getAllCommesse())
listModel.setValue(getAllCommesse().stream()
.filter(x -> !hiddenCommesse.contains(x))
.map(x -> {
var selectedBoolean = new BindableBoolean(preSelectedCommesse.contains(x));
@ -88,17 +87,17 @@ public class FilterCommessaLayoutView extends FilterLayoutView {
.setOriginalModel(x);
})
.sorted(c)
.toList());
.collect(Collectors.toList()));
}
public void onConfirm() {
if (onFilterApplied == null) return;
this.onFilterApplied.run(Stream.of(Objects.requireNonNull(listModel.getValue()))
this.onFilterApplied.run(Objects.requireNonNull(listModel.getValue()).stream()
.filter(x -> x.selected.get())
.map(x -> x.originalModel)
.toList());
.collect(Collectors.toList()));
dismiss();
}

View File

@ -137,7 +137,7 @@
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{`Ordine #`+ view.currentOrder.numOrd.toString()}"
android:text="@{`Ordine #`+ view.currentOrder.numOrd}"
android:textStyle="bold"
tools:text="Ordine #218" />

View File

@ -78,7 +78,7 @@
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
@ -100,7 +100,7 @@
android:text="@string/no_orders_found_message"
android:textColor="@android:color/black"
android:textSize="18sp" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -131,7 +131,7 @@
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{`Ordine #`+ view.currentOrder.numOrd.toString()}"
android:text="@{`Ordine #`+ view.currentOrder.numOrd}"
android:textStyle="bold"
tools:text="Ordine #218" />

View File

@ -18,13 +18,34 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/filter_chips">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<HorizontalScrollView
android:id="@+id/filter_chips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<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
android:id="@+id/main_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
tools:listitem="@layout/fragment_prod_rientro_merce_order_list__list_group_model" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<androidx.constraintlayout.widget.ConstraintLayout
@ -54,7 +75,7 @@
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
@ -76,7 +97,7 @@
android:text="@string/no_orders_found_message"
android:textColor="@android:color/black"
android:textSize="18sp" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -11,13 +11,13 @@
<variable
name="view"
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView" />
type="it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView" />
</data>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout

View File

@ -10,7 +10,7 @@
<variable
name="item"
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.filters.FilterCommessaLayoutView.ListModel" />
type="it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView.ListModel" />
</data>
<androidx.appcompat.widget.LinearLayoutCompat