Completata implementazione ordini di lavorazione in accettazione

This commit is contained in:
Giuseppe Scorrano 2019-03-11 12:39:17 +01:00
parent 3097691b48
commit 3573480ca1
3 changed files with 83 additions and 65 deletions

View File

@ -22,6 +22,7 @@ import android.widget.Toast;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -147,8 +148,6 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
private void groupOrdiniAndMakeRecycler(List<OrdineAccettazioneInevasoDTO> ordini){ private void groupOrdiniAndMakeRecycler(List<OrdineAccettazioneInevasoDTO> ordini){
String prevCodAnag = "";
for(OrdineAccettazioneInevasoDTO ordine : ordini){ for(OrdineAccettazioneInevasoDTO ordine : ordini){
if(UtilityString.isNullOrEmpty(ordine.codJcom) || ordine.codJcom.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){ if(UtilityString.isNullOrEmpty(ordine.codJcom) || ordine.codJcom.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){
ordine.codJcom = CommonConst.Config.COMMESSA_MAG; ordine.codJcom = CommonConst.Config.COMMESSA_MAG;
@ -159,84 +158,82 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag
groupedOrdiniInevasi = new ArrayList<>(); groupedOrdiniInevasi = new ArrayList<>();
//Splitto gli ordini per codAnagClie //Splitto gli ordini per codAnagClie
for(int i = 0; i < ordini.size(); i++){ List<OrdineAccettazioneGroupedInevasoDTO> groupedOrdini = Stream.of(ordini)
if(prevCodAnag.equalsIgnoreCase(ordini.get(i).codAnagOrd)) continue; .map(x -> {
else prevCodAnag = ordini.get(i).codAnagOrd; 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; return groupedOrdine;
groupedOrdine.nomeFornitore = ordini.get(i).ragSocOrd; })
groupedOrdine.ordini = new ArrayList<>(); .distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore)
.toList();
List<OrdineAccettazioneInevasoDTO> filteredByCodAnagOrders =
Coollection
.from(ordini)
.where("codAnagOrd", Coollection.eq(ordini.get(i).codAnagOrd)).all();
int prevNumOrd = -1; Stream.of(groupedOrdini).forEach(groupedOrdine -> {
String prevDataOrd = "";
//Splitto gli ordini di ogni fornitore per data e numero //Splitto gli ordini di ogni fornitore per data e numero
for(int j = 0; j < filteredByCodAnagOrders.size(); j++) { List<OrdineAccettazioneGroupedInevasoDTO.Ordine> tmpOrd = Stream.of(ordini)
if( prevNumOrd == filteredByCodAnagOrders.get(j).numero && .filter(x -> x.codAnagOrd.equals(groupedOrdine.codAnagForn))
prevDataOrd.equalsIgnoreCase(filteredByCodAnagOrders.get(j).data)) continue; .map(x -> {
else { OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine();
prevNumOrd = filteredByCodAnagOrders.get(j).numero;
prevDataOrd = filteredByCodAnagOrders.get(j).data;
}
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; return rigaOrdine;
rigaOrdine.numero = filteredByCodAnagOrders.get(j).numero; })
rigaOrdine.codAnagOrd = filteredByCodAnagOrders.get(j).codAnagOrd; .distinctBy(x -> x.barcode)
rigaOrdine.ragSocOrd = filteredByCodAnagOrders.get(j).ragSocOrd; .toList();
rigaOrdine.pesoTotale = filteredByCodAnagOrders.get(j).pesoTotale;
rigaOrdine.barcode = filteredByCodAnagOrders.get(j).barcode;
rigaOrdine.termCons = filteredByCodAnagOrders.get(j).termCons; Stream.of(tmpOrd)
rigaOrdine.dataCons = filteredByCodAnagOrders.get(j).dataCons; .forEach(rigaOrdine -> {
rigaOrdine.rifOrd = filteredByCodAnagOrders.get(j).rifOrd;
rigaOrdine.clienti = new ArrayList<>(); 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<OrdineAccettazioneInevasoDTO> filteredByCodAnagAndDateAndNumberOrders = Stream.of(tmpOrd)
// .filter(x ->
// x.codAnagOrd.equals(rigaOrdine.codAnagOrd) &&
// x.numero == rigaOrdine.numero &&
// x.data.equals(rigaOrdine.data)).toList();
List<OrdineAccettazioneInevasoDTO> filteredByCodAnagAndDateAndNumberOrders = groupedOrdine.ordini.add(rigaOrdine);
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();
});
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); groupedOrdiniInevasi.add(groupedOrdine);
} });
mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged); mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
mBinding.accettazioneMainList.setAdapter(mAdapter); mBinding.accettazioneMainList.setAdapter(mAdapter);

View File

@ -12,6 +12,7 @@ import java.util.List;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
/** /**
* Created by GiuseppeS on 06/03/2018. * Created by GiuseppeS on 06/03/2018.
@ -129,6 +130,10 @@ public class OrdineAccettazioneDTO implements Parcelable {
return gestioneOrd; return gestioneOrd;
} }
public GestioneEnum getGestioneOrdEnum() {
return GestioneEnum.fromString(gestioneOrd);
}
public String getDataCons() { public String getDataCons() {
return dataCons; return dataCons;
} }

View File

@ -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.dto.AccettazioneOrdineInevasoOrderBy;
import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.rest.OrdineAccettazioneInevasoRESTConsumerService; 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.accettazione_ordine_inevaso.views.NoteAggiuntiveNuovaULDialog;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
import it.integry.integrywmsnative.ui.StatusBarAlert; import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback; import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; 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 AccettazioneOrdineInevasoOrderBy.Enum currentOrderBy = AccettazioneOrdineInevasoOrderBy.Enum.COD_ART_FOR;
private MainListOrdineAccettazioneAdapter mAdapter; private MainListOrdineAccettazioneAdapter mAdapter;
private GestioneEnum defaultGestioneOfUL = null;
public AccettazioneOnOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<OrdineAccettazioneDTO> orders) { public AccettazioneOnOrdineAccettazioneInevasoViewModel(AccettazioneOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<OrdineAccettazioneDTO> orders) {
this.mActivity = activity; this.mActivity = activity;
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
@ -102,6 +105,18 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini, true); groupedRighe = helper.getOrdiniRaggruppatiPerCodArtForn(groupedOrdini, true);
initRecyclerView(groupedRighe); initRecyclerView(groupedRighe);
//Definizione della gestione collo di default
List<GestioneEnum> 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; if(defaultPosAccettazioneDTO != null && !UtilityString.isNullOrEmpty(defaultPosAccettazioneDTO.value)) defaultPosAccettazione = defaultPosAccettazioneDTO.value;
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt .setGestione(GestioneEnum.ACQUISTO) mtbColt
.setGestione(defaultGestioneOfUL)
.setPreparatoDa(SettingsManager.i().user.fullname) .setPreparatoDa(SettingsManager.i().user.fullname)
.setAnnotazioni(noteString) .setAnnotazioni(noteString)
.setPosizione(defaultPosAccettazione) .setPosizione(defaultPosAccettazione)