diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index 1c527bc4..cd886fff 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -22,6 +22,7 @@ import android.widget.Toast; import com.annimon.stream.Stream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -147,8 +148,6 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag private void groupOrdiniAndMakeRecycler(List ordini){ - String prevCodAnag = ""; - for(OrdineAccettazioneInevasoDTO ordine : ordini){ if(UtilityString.isNullOrEmpty(ordine.codJcom) || ordine.codJcom.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){ ordine.codJcom = CommonConst.Config.COMMESSA_MAG; @@ -159,84 +158,82 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag groupedOrdiniInevasi = new ArrayList<>(); //Splitto gli ordini per codAnagClie - for(int i = 0; i < ordini.size(); i++){ - if(prevCodAnag.equalsIgnoreCase(ordini.get(i).codAnagOrd)) continue; - else prevCodAnag = ordini.get(i).codAnagOrd; + List groupedOrdini = Stream.of(ordini) + .map(x -> { + OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO(); - OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO(); + groupedOrdine.codAnagForn = x.codAnagOrd; + groupedOrdine.nomeFornitore = x.ragSocOrd; + groupedOrdine.ordini = new ArrayList<>(); - groupedOrdine.codAnagForn = ordini.get(i).codAnagOrd; - groupedOrdine.nomeFornitore = ordini.get(i).ragSocOrd; - groupedOrdine.ordini = new ArrayList<>(); - - List filteredByCodAnagOrders = - Coollection - .from(ordini) - .where("codAnagOrd", Coollection.eq(ordini.get(i).codAnagOrd)).all(); + return groupedOrdine; + }) + .distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore) + .toList(); - int prevNumOrd = -1; - String prevDataOrd = ""; + Stream.of(groupedOrdini).forEach(groupedOrdine -> { //Splitto gli ordini di ogni fornitore per data e numero - for(int j = 0; j < filteredByCodAnagOrders.size(); j++) { - if( prevNumOrd == filteredByCodAnagOrders.get(j).numero && - prevDataOrd.equalsIgnoreCase(filteredByCodAnagOrders.get(j).data)) continue; + List tmpOrd = Stream.of(ordini) + .filter(x -> x.codAnagOrd.equals(groupedOrdine.codAnagForn)) + .map(x -> { - else { - prevNumOrd = filteredByCodAnagOrders.get(j).numero; - prevDataOrd = filteredByCodAnagOrders.get(j).data; - } + OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine(); - OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine(); + rigaOrdine.data = x.data; + rigaOrdine.numero = x.numero; + rigaOrdine.codAnagOrd = x.codAnagOrd; + rigaOrdine.ragSocOrd = x.ragSocOrd; + rigaOrdine.pesoTotale = x.pesoTotale; + rigaOrdine.barcode = x.barcode; + rigaOrdine.termCons = x.termCons; + rigaOrdine.dataCons = x.dataCons; + rigaOrdine.rifOrd = x.rifOrd; + rigaOrdine.clienti = new ArrayList<>(); - rigaOrdine.data = filteredByCodAnagOrders.get(j).data; - rigaOrdine.numero = filteredByCodAnagOrders.get(j).numero; - rigaOrdine.codAnagOrd = filteredByCodAnagOrders.get(j).codAnagOrd; - rigaOrdine.ragSocOrd = filteredByCodAnagOrders.get(j).ragSocOrd; - rigaOrdine.pesoTotale = filteredByCodAnagOrders.get(j).pesoTotale; - rigaOrdine.barcode = filteredByCodAnagOrders.get(j).barcode; - rigaOrdine.termCons = filteredByCodAnagOrders.get(j).termCons; - rigaOrdine.dataCons = filteredByCodAnagOrders.get(j).dataCons; - rigaOrdine.rifOrd = filteredByCodAnagOrders.get(j).rifOrd; - rigaOrdine.clienti = new ArrayList<>(); + return rigaOrdine; + }) + .distinctBy(x -> x.barcode) + .toList(); + + + Stream.of(tmpOrd) + .forEach(rigaOrdine -> { + + Stream.of(ordini) + .filter(x -> + x.codAnagOrd.equals(rigaOrdine.codAnagOrd) && + x.numero == rigaOrdine.numero && + x.data.equals(rigaOrdine.data)) + .forEach(x -> { + OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente(); + + cliente.codJcom = x.codJcom; + cliente.ragSocCom = x.ragSocCom; + cliente.descrCom = x.descrizioneCom; + cliente.dataCons = x.dataCons; + cliente.numCnf = x.numCnf; + cliente.rifOrd = x.rifOrd; + + rigaOrdine.clienti.add(cliente); + }); + +// List filteredByCodAnagAndDateAndNumberOrders = Stream.of(tmpOrd) +// .filter(x -> +// x.codAnagOrd.equals(rigaOrdine.codAnagOrd) && +// x.numero == rigaOrdine.numero && +// x.data.equals(rigaOrdine.data)).toList(); - List filteredByCodAnagAndDateAndNumberOrders = - Coollection - .from(ordini) - .where("codAnagOrd", Coollection.eq(filteredByCodAnagOrders.get(j).codAnagOrd)) - .and("numero", Coollection.eq(filteredByCodAnagOrders.get(j).numero)) - .and("data", Coollection.eq(filteredByCodAnagOrders.get(j).data)).all(); + groupedOrdine.ordini.add(rigaOrdine); - - String prevCodJcomAndDataCons = ""; - - //Splitto gli ordini per codJcom e dataCons - for(int k = 0; k < filteredByCodAnagAndDateAndNumberOrders.size(); k++) { - if(prevCodJcomAndDataCons.equalsIgnoreCase(filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom + "_" + filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons)) continue; - else prevCodJcomAndDataCons = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom + "_" + filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons; - - OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente(); - - cliente.codJcom = filteredByCodAnagAndDateAndNumberOrders.get(k).codJcom; - cliente.ragSocCom = filteredByCodAnagAndDateAndNumberOrders.get(k).ragSocCom; - cliente.descrCom = filteredByCodAnagAndDateAndNumberOrders.get(k).descrizioneCom; - cliente.dataCons = filteredByCodAnagAndDateAndNumberOrders.get(k).dataCons; - cliente.numCnf = filteredByCodAnagAndDateAndNumberOrders.get(k).numCnf; - cliente.rifOrd = filteredByCodAnagAndDateAndNumberOrders.get(k).rifOrd; - - rigaOrdine.clienti.add(cliente); - } - - - groupedOrdine.ordini.add(rigaOrdine); - } + }); groupedOrdiniInevasi.add(groupedOrdine); - } + }); mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged); mBinding.accettazioneMainList.setAdapter(mAdapter); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java index aed2be5f..6d06f8ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java @@ -12,6 +12,7 @@ import java.util.List; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; /** * Created by GiuseppeS on 06/03/2018. @@ -129,6 +130,10 @@ public class OrdineAccettazioneDTO implements Parcelable { return gestioneOrd; } + public GestioneEnum getGestioneOrdEnum() { + return GestioneEnum.fromString(gestioneOrd); + } + public String getDataCons() { return dataCons; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java index 9939fc97..9bc7c55c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOnOrdineAccettazioneInevasoViewModel.java @@ -49,6 +49,7 @@ import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.core.MainLis import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.rest.OrdineAccettazioneInevasoRESTConsumerService; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.views.NoteAggiuntiveNuovaULDialog; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.ui.StatusBarAlert; import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback; import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; @@ -75,6 +76,8 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl private AccettazioneOrdineInevasoOrderBy.Enum currentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.COD_ART_FOR; private MainListOrdineAccettazioneAdapter mAdapter; + private GestioneEnum defaultGestioneOfUL = null; + public AccettazioneOnOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List orders) { this.mActivity = activity; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; @@ -102,6 +105,18 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini, true); initRecyclerView(groupedRighe); + + + //Definizione della gestione collo di default + List foundGestioni = Stream.of(groupedOrdini) + .map(OrdineAccettazioneDTO.Riga::getGestioneOrdEnum) + .withoutNulls() + .distinctBy(x -> x) + .toList(); + + if(foundGestioni != null && foundGestioni.size() == 1){ + defaultGestioneOfUL = foundGestioni.get(0); + } } @@ -396,7 +411,8 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value; MtbColt mtbColt = new MtbColt(); - mtbColt .setGestione(GestioneEnum.ACQUISTO) + mtbColt + .setGestione(defaultGestioneOfUL) .setPreparatoDa(SettingsManager.i().user.fullname) .setAnnotazioni(noteString) .setPosizione(defaultPosAccettazione)