Aggiunto filtro posizione in riposizionamento da prod
This commit is contained in:
parent
6a84828506
commit
725372befe
21
.idea/appInsightsSettings.xml
generated
21
.idea/appInsightsSettings.xml
generated
@ -2,5 +2,26 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="AppInsightsSettings">
|
<component name="AppInsightsSettings">
|
||||||
<option name="selectedTabId" value="Android Vitals" />
|
<option name="selectedTabId" value="Android Vitals" />
|
||||||
|
<option name="tabSettings">
|
||||||
|
<map>
|
||||||
|
<entry key="Firebase Crashlytics">
|
||||||
|
<value>
|
||||||
|
<InsightsFilterSettings>
|
||||||
|
<option name="connection">
|
||||||
|
<ConnectionSetting>
|
||||||
|
<option name="appId" value="it.integry.integrywmsnative" />
|
||||||
|
<option name="mobileSdkAppId" value="1:963231271247:android:6d73ab369f33c450" />
|
||||||
|
<option name="projectId" value="wmsfirebaseproject-64854" />
|
||||||
|
<option name="projectNumber" value="963231271247" />
|
||||||
|
</ConnectionSetting>
|
||||||
|
</option>
|
||||||
|
<option name="signal" value="SIGNAL_UNSPECIFIED" />
|
||||||
|
<option name="timeIntervalDays" value="THIRTY_DAYS" />
|
||||||
|
<option name="visibilityType" value="ALL" />
|
||||||
|
</InsightsFilterSettings>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterPosizioneLayoutView;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
|
||||||
|
public class ProdRiposizionamentoDaProdBindings {
|
||||||
|
public static final int POSITIONS_FILTER_ID = 0;
|
||||||
|
|
||||||
|
public static final HashMap<Integer, FilterChipDTO> AVAILABLE_FILTERS = new HashMap<>() {{
|
||||||
|
|
||||||
|
put(POSITIONS_FILTER_ID, new FilterChipDTO()
|
||||||
|
.setID(POSITIONS_FILTER_ID)
|
||||||
|
.setFilterChipText("Posizione")
|
||||||
|
.setFilterLayoutView(new FilterPosizioneLayoutView()));
|
||||||
|
|
||||||
|
}};
|
||||||
|
}
|
||||||
@ -3,7 +3,6 @@ package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.Html;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -12,10 +11,10 @@ import androidx.appcompat.widget.AppCompatTextView;
|
|||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
import com.ravikoradiya.liveadapter.Type;
|
import com.ravikoradiya.liveadapter.Type;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -28,6 +27,7 @@ import it.integry.integrywmsnative.R;
|
|||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
|
||||||
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
|
import it.integry.integrywmsnative.core.expansion.OnGeneralChangedCallback;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
@ -36,14 +36,15 @@ import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
|||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentProdRiposizionamentoDaProdBinding;
|
import it.integry.integrywmsnative.databinding.FragmentProdRiposizionamentoDaProdBinding;
|
||||||
import it.integry.integrywmsnative.databinding.ProdRiposizionamentoDaProdListItemBinding;
|
import it.integry.integrywmsnative.databinding.ProdRiposizionamentoDaProdListItemBinding;
|
||||||
|
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterPosizioneLayoutView;
|
||||||
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaView;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaView;
|
||||||
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.filter.ProdRiposizionamentoDaProdFilterViewModel;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
|
||||||
|
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||||
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
|
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUView;
|
||||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
|
||||||
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUView;
|
|
||||||
import okhttp3.internal.http2.Header;
|
|
||||||
|
|
||||||
public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements ITitledFragment, ProdRiposizionamentoDaProdViewModel.Listener {
|
public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements ITitledFragment, ProdRiposizionamentoDaProdViewModel.Listener {
|
||||||
|
|
||||||
@ -52,11 +53,10 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
private FragmentProdRiposizionamentoDaProdBinding mBindings;
|
private FragmentProdRiposizionamentoDaProdBinding mBindings;
|
||||||
|
|
||||||
private final ObservableArrayList<ArtsInGiacenzaDTO> mItemsInventario = new ObservableArrayList<>();
|
private final ObservableArrayList<ArtsInGiacenzaDTO> mItemsInventario = new ObservableArrayList<>();
|
||||||
|
private ProdRiposizionamentoDaProdFilterViewModel mFilterViewModel = new ProdRiposizionamentoDaProdFilterViewModel();
|
||||||
private final Handler mHandler = new Handler();
|
private final Handler mHandler = new Handler();
|
||||||
private final int mInterval = 120 * 1000; //2 minuti
|
private final int mInterval = 120 * 1000; //2 minuti
|
||||||
private int barcodeScannerIstanceID = -1;
|
private int barcodeScannerIstanceID = -1;
|
||||||
private MtbColt scanedMtbColt;
|
|
||||||
|
|
||||||
|
|
||||||
public ProdRiposizionamentoDaProdFragment() {
|
public ProdRiposizionamentoDaProdFragment() {
|
||||||
@ -94,18 +94,37 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
});
|
});
|
||||||
|
|
||||||
mHandler.postDelayed(mRunnable, mInterval);
|
mHandler.postDelayed(mRunnable, mInterval);
|
||||||
this.initBarcodeReader();
|
|
||||||
|
|
||||||
|
this.initBarcodeReader();
|
||||||
this.initRecyclerView();
|
this.initRecyclerView();
|
||||||
|
this.initFilters();
|
||||||
|
|
||||||
return mBindings.getRoot();
|
return mBindings.getRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void refreshList(List<ArtsInGiacenzaDTO> filteredList) {
|
||||||
|
List<ArtsInGiacenzaDTO> tmpList;
|
||||||
|
|
||||||
|
if (filteredList != null) {
|
||||||
|
tmpList = filteredList;
|
||||||
|
} else if (mFilterViewModel != null) {
|
||||||
|
mFilterViewModel.applyAllTests();
|
||||||
|
tmpList = mFilterViewModel.getCurrentList().getValue();
|
||||||
|
} else {
|
||||||
|
tmpList = mViewModel.getItemsInventario().getValue();
|
||||||
|
}
|
||||||
|
this.mItemsInventario.clear();
|
||||||
|
if (tmpList != null) {
|
||||||
|
this.mItemsInventario.addAll(tmpList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
mViewModel.getItemsInventario().observe(getViewLifecycleOwner(), data -> {
|
mViewModel.getItemsInventario().observe(getViewLifecycleOwner(), data -> {
|
||||||
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
|
mBindings.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
this.mItemsInventario.clear();
|
mFilterViewModel.init(mViewModel.getItemsInventario().getValue());
|
||||||
this.mItemsInventario.addAll(data);
|
this.refreshList(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
var itemType = new Type<ArtsInGiacenzaDTO, ProdRiposizionamentoDaProdListItemBinding>(R.layout.prod_riposizionamento_da_prod__list_item, BR.item);
|
var itemType = new Type<ArtsInGiacenzaDTO, ProdRiposizionamentoDaProdListItemBinding>(R.layout.prod_riposizionamento_da_prod__list_item, BR.item);
|
||||||
@ -120,6 +139,76 @@ public class ProdRiposizionamentoDaProdFragment extends BaseFragment implements
|
|||||||
.into(this.mBindings.inventarioList);
|
.into(this.mBindings.inventarioList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initFilters() {
|
||||||
|
var onPredicateChanged = new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
refreshList(null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
mFilterViewModel.getCurrentPositionPredicate().addOnPropertyChangedCallback(onPredicateChanged);
|
||||||
|
|
||||||
|
for (var filterChipDTO : ProdRiposizionamentoDaProdBindings.AVAILABLE_FILTERS.entrySet()) {
|
||||||
|
|
||||||
|
FilterChipView filterChipView = new FilterChipView(
|
||||||
|
requireActivity(),
|
||||||
|
filterChipDTO.getValue().getFilterChipText(),
|
||||||
|
v -> initBottomSheetDialogFilter(filterChipDTO.getValue()));
|
||||||
|
|
||||||
|
if (filterChipDTO.getKey() == ProdRiposizionamentoDaProdBindings.POSITIONS_FILTER_ID) {
|
||||||
|
mFilterViewModel.getCurrentPositionPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (mFilterViewModel.getCurrentPositionPredicate().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.getCurrentPositionPredicate().set(null));
|
||||||
|
}
|
||||||
|
this.mBindings.filterChipsGroup.addView(filterChipView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initBottomSheetDialogFilter(FilterChipDTO filterChipDTO) {
|
||||||
|
filterChipDTO
|
||||||
|
.getFilterLayoutView()
|
||||||
|
.setFilterName(filterChipDTO.getFilterChipText())
|
||||||
|
.setContext(requireActivity());
|
||||||
|
|
||||||
|
var filterLayoutView = filterChipDTO
|
||||||
|
.getFilterLayoutView();
|
||||||
|
|
||||||
|
if (filterChipDTO.getID() == ProdRiposizionamentoDaProdBindings.POSITIONS_FILTER_ID) {
|
||||||
|
((FilterPosizioneLayoutView) filterLayoutView)
|
||||||
|
.setAll(mFilterViewModel.getAllPosition())
|
||||||
|
.setAvailable(mFilterViewModel.getAvailablePosition())
|
||||||
|
.setOnFilterApplied(mFilterViewModel::setPositionFilter)
|
||||||
|
.setPreselected(
|
||||||
|
Stream.of(Objects.requireNonNull(mViewModel.getItemsInventario().getValue()))
|
||||||
|
.filter(mFilterViewModel.getCurrentPositionPredicate().get() == null ?
|
||||||
|
x -> false : Objects.requireNonNull(mFilterViewModel.getCurrentPositionPredicate().get()))
|
||||||
|
.map(ArtsInGiacenzaDTO::getPosizione)
|
||||||
|
.toList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!filterLayoutView.isAdded())
|
||||||
|
filterLayoutView.show(requireActivity().getSupportFragmentManager(), "TAG");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void onInfoClick(List<MvwSitArtUdcDetInventario> item) {
|
public void onInfoClick(List<MvwSitArtUdcDetInventario> item) {
|
||||||
try {
|
try {
|
||||||
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
|
DialogInfoGiacenzaView.newInstance(item).show(getChildFragmentManager(), DialogInfoGiacenzaView.class.getName());
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod;
|
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod;
|
||||||
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import com.annimon.stream.Optional;
|
import com.annimon.stream.Optional;
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -16,30 +14,19 @@ import java.util.Objects;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||||
import it.integry.integrywmsnative.core.exception.AlreadyAttachedDocumentToLUException;
|
|
||||||
import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
|
|
||||||
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
|
|
||||||
import it.integry.integrywmsnative.core.exception.NoArtsInLUException;
|
|
||||||
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
|
||||||
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException;
|
||||||
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
|
||||||
import it.integry.integrywmsnative.core.model.MtbColt;
|
import it.integry.integrywmsnative.core.model.MtbColt;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
|
||||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
|
||||||
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.GiacenzaRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.magazzino_automatico.MagazzinoAutomaticoPutItemsRequestDTO;
|
|
||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
||||||
|
|
||||||
@ -162,8 +149,8 @@ public class ProdRiposizionamentoDaProdViewModel {
|
|||||||
.map(entry -> {
|
.map(entry -> {
|
||||||
List<MvwSitArtUdcDetInventario> dtoList = entry.getValue();
|
List<MvwSitArtUdcDetInventario> dtoList = entry.getValue();
|
||||||
|
|
||||||
BigDecimal totalQtaCnf = dtoList.stream()
|
BigDecimal totalNumCnf = dtoList.stream()
|
||||||
.map(MvwSitArtUdcDetInventario::getQtaCnf)
|
.map(MvwSitArtUdcDetInventario::getNumCnf)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
|
||||||
return new ArtsInGiacenzaDTO()
|
return new ArtsInGiacenzaDTO()
|
||||||
@ -171,7 +158,8 @@ public class ProdRiposizionamentoDaProdViewModel {
|
|||||||
.setPartitaMag(dtoList.get(0).getPartitaMag())
|
.setPartitaMag(dtoList.get(0).getPartitaMag())
|
||||||
.setPosizione(dtoList.get(0).getPosizione())
|
.setPosizione(dtoList.get(0).getPosizione())
|
||||||
.setDescrizione(dtoList.get(0).getDescrizioneEstesa())
|
.setDescrizione(dtoList.get(0).getDescrizioneEstesa())
|
||||||
.setQtaCnf(totalQtaCnf)
|
.setNumOrd(dtoList.get(0).getNumOrd())
|
||||||
|
.setNumCnf(totalNumCnf)
|
||||||
.setCount(dtoList.size())
|
.setCount(dtoList.size())
|
||||||
.setMvwSitArtUdcDetInventarioDTO(dtoList);
|
.setMvwSitArtUdcDetInventarioDTO(dtoList);
|
||||||
})
|
})
|
||||||
|
|||||||
@ -11,7 +11,7 @@ public class ArtsInGiacenzaDTO {
|
|||||||
private String partitaMag;
|
private String partitaMag;
|
||||||
private String descrizione;
|
private String descrizione;
|
||||||
private String posizione;
|
private String posizione;
|
||||||
private BigDecimal qtaCnf;
|
private BigDecimal numCnf;
|
||||||
private Integer numOrd;
|
private Integer numOrd;
|
||||||
private Integer count;
|
private Integer count;
|
||||||
private List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioDTO;
|
private List<MvwSitArtUdcDetInventario> mvwSitArtUdcDetInventarioDTO;
|
||||||
@ -43,12 +43,12 @@ public class ArtsInGiacenzaDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getQtaCnf() {
|
public BigDecimal getNumCnf() {
|
||||||
return qtaCnf;
|
return numCnf;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArtsInGiacenzaDTO setQtaCnf(BigDecimal qtaCnf) {
|
public ArtsInGiacenzaDTO setNumCnf(BigDecimal numCnf) {
|
||||||
this.qtaCnf = qtaCnf;
|
this.numCnf = numCnf;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,73 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.filter;
|
||||||
|
|
||||||
|
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.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO;
|
||||||
|
|
||||||
|
public class ProdRiposizionamentoDaProdFilterViewModel {
|
||||||
|
private final ObservableField<Predicate<ArtsInGiacenzaDTO>> currentPositionPredicate = new ObservableField<>();
|
||||||
|
|
||||||
|
private List<ArtsInGiacenzaDTO> initialList;
|
||||||
|
private final MutableLiveData<List<ArtsInGiacenzaDTO>> currentList = new MutableLiveData<>();
|
||||||
|
|
||||||
|
public void init(List<ArtsInGiacenzaDTO> initialList){
|
||||||
|
this.initialList = initialList;
|
||||||
|
this.currentList.setValue(this.initialList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MutableLiveData<List<ArtsInGiacenzaDTO>> getCurrentList() {
|
||||||
|
return currentList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPositionFilter(List<String> positions){
|
||||||
|
if (positions == null || positions.isEmpty()) currentPositionPredicate.set(null);
|
||||||
|
else{
|
||||||
|
currentPositionPredicate.set(x -> positions.contains(x.getPosizione()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void applyAllTests(){
|
||||||
|
List<ArtsInGiacenzaDTO> returnList = null;
|
||||||
|
|
||||||
|
if (currentPositionPredicate.get() == null){
|
||||||
|
returnList = this.initialList;
|
||||||
|
}else {
|
||||||
|
Stream<ArtsInGiacenzaDTO> tmpStream = Stream.of(this.initialList)
|
||||||
|
.filter(x -> (currentPositionPredicate.get() == null || (Objects.requireNonNull(currentPositionPredicate.get()).test(x))));
|
||||||
|
returnList = tmpStream.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.currentList.setValue(returnList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableField<Predicate<ArtsInGiacenzaDTO>> getCurrentPositionPredicate() {
|
||||||
|
return currentPositionPredicate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAllPosition(){
|
||||||
|
return Stream
|
||||||
|
.of(initialList)
|
||||||
|
.filter(x -> x.getPosizione() != null)
|
||||||
|
.sortBy(ArtsInGiacenzaDTO::getPosizione)
|
||||||
|
.map(ArtsInGiacenzaDTO::getPosizione)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAvailablePosition(){
|
||||||
|
if (currentPositionPredicate.get() == null) return getAllPosition();
|
||||||
|
else {
|
||||||
|
return Stream.of(this.initialList)
|
||||||
|
.map(ArtsInGiacenzaDTO::getPosizione)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,6 +15,10 @@
|
|||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
|
<import type="java.math.BigDecimal" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="item"
|
name="item"
|
||||||
type="it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO" />
|
type="it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO" />
|
||||||
@ -93,10 +97,12 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:text="PartitaMag" />
|
tools:text="PartitaMag" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="end"
|
android:layout_marginTop="2dp"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
@ -122,6 +128,60 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:text="ped" />
|
tools:text="ped" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="("
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:ignore="SmallSp"
|
||||||
|
tools:text="(" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@{UtilityNumber.decimalToString(item.getNumCnf(), 0)}"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:ignore="SmallSp"
|
||||||
|
tools:text="QTA" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:text="COL"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:ignore="SmallSp"
|
||||||
|
tools:text="col" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Medium"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text=")"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:ignore="SmallSp"
|
||||||
|
tools:text=")" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="end"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
android:id="@+id/info_row"
|
android:id="@+id/info_row"
|
||||||
android:layout_width="22sp"
|
android:layout_width="22sp"
|
||||||
@ -144,7 +204,7 @@
|
|||||||
style="@style/AppTheme.NewMaterial.Text.Small"
|
style="@style/AppTheme.NewMaterial.Text.Small"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="2dp"
|
||||||
android:text="@{item.getDescrizione()}"
|
android:text="@{item.getDescrizione()}"
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
@ -154,23 +214,31 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:paddingLeft="6dp"
|
||||||
|
android:paddingTop="2dp"
|
||||||
|
android:paddingRight="6dp"
|
||||||
|
android:paddingBottom="2dp"
|
||||||
|
style="@style/AppTheme.NewMaterial.Layout.Badge">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Ordine:"
|
||||||
|
tools:text="Ordine:" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/badge4"
|
android:id="@+id/badge4"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:text="NumOrd"
|
|
||||||
android:background="@drawable/badge_round_corner"
|
|
||||||
android:backgroundTint="@color/red_300"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
android:paddingTop="2dp"
|
|
||||||
android:paddingBottom="2dp"
|
|
||||||
android:paddingLeft="6dp"
|
|
||||||
android:paddingRight="6dp"
|
|
||||||
android:layout_marginStart="8dp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:text="@{item.getNumOrdS()}"
|
android:text="@{item.getNumOrdS()}"
|
||||||
style="@style/AppTheme.NewMaterial.Text.Small" />
|
android:layout_marginStart="4dp"
|
||||||
|
tools:text="12345" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
|||||||
@ -68,15 +68,17 @@
|
|||||||
<item name="android:textColor">@drawable/material_text_color</item>
|
<item name="android:textColor">@drawable/material_text_color</item>
|
||||||
<item name="android:textSize">18sp</item>
|
<item name="android:textSize">18sp</item>
|
||||||
</style>
|
</style>
|
||||||
<style name="AppTheme.NewMaterial.Text.Badge" parent = "AppTheme.NewMaterial">
|
<style name="AppTheme.NewMaterial.Layout.Badge" parent = "AppTheme.NewMaterial">
|
||||||
<item name="android:fontFamily">@font/google_sans_regular</item>
|
|
||||||
<item name="android:textStyle">normal</item>
|
|
||||||
<item name="android:background">@drawable/gray_detail_background_round4</item>
|
<item name="android:background">@drawable/gray_detail_background_round4</item>
|
||||||
<item name="android:paddingStart">8dp</item>
|
<item name="android:paddingStart">8dp</item>
|
||||||
<item name="android:paddingEnd">8dp</item>
|
<item name="android:paddingEnd">8dp</item>
|
||||||
<item name="android:paddingTop">2dp</item>
|
<item name="android:paddingTop">2dp</item>
|
||||||
<item name="android:paddingBottom">2dp</item>
|
<item name="android:paddingBottom">2dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="AppTheme.NewMaterial.Text.Badge" parent = "AppTheme.NewMaterial.Layout.Badge">
|
||||||
|
<item name="android:fontFamily">@font/google_sans_regular</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.NewMaterial.Text.ToolbarTitle" parent="AppTheme.NewMaterial.Text">
|
<style name="AppTheme.NewMaterial.Text.ToolbarTitle" parent="AppTheme.NewMaterial.Text">
|
||||||
<item name="android:textSize">20sp</item>
|
<item name="android:textSize">20sp</item>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user