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 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<OrdineAccettazioneInevasoDTO> 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<OrdineAccettazioneGroupedInevasoDTO> 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<OrdineAccettazioneInevasoDTO> 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<OrdineAccettazioneGroupedInevasoDTO.Ordine> 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<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 =
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);

View File

@ -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;
}

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.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<OrdineAccettazioneDTO> 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<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;
MtbColt mtbColt = new MtbColt();
mtbColt .setGestione(GestioneEnum.ACQUISTO)
mtbColt
.setGestione(defaultGestioneOfUL)
.setPreparatoDa(SettingsManager.i().user.fullname)
.setAnnotazioni(noteString)
.setPosizione(defaultPosAccettazione)