From 7182782c2551065281f5b022b012e155030032d2 Mon Sep 17 00:00:00 2001 From: Giuseppe Scorrano Date: Thu, 22 Nov 2018 19:13:39 +0100 Subject: [PATCH] Implementata empty view in ListaBancali. Implementata Activity OrdineVenditaInevaso --- .idea/assetWizardSettings.xml | 4 +- .idea/caches/build_file_checksums.ser | Bin 667 -> 667 bytes app/src/main/AndroidManifest.xml | 6 +- .../core/model/FiltroOrdineDTO.java | 50 ++ .../integrywmsnative/core/model/MtbColt.java | 29 +- .../core/AccettazioneOrdineInevasoHelper.java | 15 +- .../core/MainListListaColliAdapter.java | 19 +- .../viewmodel/ListaBancaliViewModel.java | 2 +- .../gest/vendita/MainVenditaFragment.java | 75 +-- .../vendita/core/MainListVenditaAdapter.java | 4 +- .../gest/vendita/core/VenditaHelper.java | 2 +- .../dto/OrdineVenditaGroupedInevasoDTO.java | 150 +++++- .../vendita/dto/OrdineVenditaInevasoDTO.java | 459 +++++++++++++++++- .../gest/vendita/dto/PickingObjectDTO.java | 181 ++++++- .../VenditaOrdineInevasoActivity.java | 108 +++++ .../MainListOrdineVenditaInevasoAdapter.java | 227 +++++++++ .../core/VenditaOrdineInevasoHelper.java | 114 +++++ .../VenditaOrdineInevasoListViewModel.java | 85 ++++ ...dineVenditaInevasoRESTConsumerService.java | 4 + .../VenditaOrdineInevasoViewModel.java | 222 +++++++++ .../drawable/ic_playlist_add_check_24dp.xml | 9 + .../res/layout/activity_lista_bancali.xml | 70 ++- .../activity_vendita_ordine_inevaso.xml | 150 ++++++ ...ne_inevaso_main_list_child_group_model.xml | 101 ++++ ...vendita_ordine_inevaso_main_list_model.xml | 32 ++ .../menu/activity_vendita_ordine_inevaso.xml | 4 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 28 files changed, 2012 insertions(+), 112 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java create mode 100644 app/src/main/res/drawable/ic_playlist_add_check_24dp.xml create mode 100644 app/src/main/res/layout/activity_vendita_ordine_inevaso.xml create mode 100644 app/src/main/res/layout/vendita_ordine_inevaso_main_list_child_group_model.xml create mode 100644 app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml create mode 100644 app/src/main/res/menu/activity_vendita_ordine_inevaso.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index 1338d8bc..7cc9fb08 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -23,7 +23,7 @@ @@ -33,7 +33,7 @@ diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 77923a7e63f16087b996f9325459af7c7085769b..3316d15e31b26fc9477f9c5af8bb21ad5f42a046 100644 GIT binary patch delta 15 XcmbQuI-7OE3>I_o$s0G$`OgRdEuaQW delta 15 XcmbQuI-7OE3>G6170Hcr{xbpqC(#8x diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d70e7d87..6d39ff28 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,10 @@ android:name=".gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="adjustNothing" /> + @@ -38,7 +42,7 @@ + android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java new file mode 100644 index 00000000..0e9e5ea1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java @@ -0,0 +1,50 @@ +package it.integry.integrywmsnative.core.model; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class FiltroOrdineDTO { + + private String gestioneOrd; + private String dataOrd; + private int numOrd; + + public String getGestioneOrd() { + return gestioneOrd; + } + + public FiltroOrdineDTO setGestioneOrd(String gestioneOrd) { + this.gestioneOrd = gestioneOrd; + return this; + } + + public String getDataOrdS() { + return dataOrd; + } + + public Date getDataOrdD() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataOrdS()); + } + + public FiltroOrdineDTO setDataOrd(String dataOrd) { + this.dataOrd = dataOrd; + return this; + } + + public FiltroOrdineDTO setDataOrd(Date dataOrd) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + this.dataOrd = sdf.format(dataOrd); + return this; + } + + public int getNumOrd() { + return numOrd; + } + + public FiltroOrdineDTO setNumOrd(int numOrd) { + this.numOrd = numOrd; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index dbaed722..418878ac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -4,12 +4,14 @@ import android.databinding.ObservableArrayList; import android.os.Parcel; import android.os.Parcelable; +import com.annimon.stream.Stream; + import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.atomic.AtomicReference; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -618,5 +620,30 @@ public class MtbColt extends EntityBase implements Parcelable { + public void generaFiltroOrdineFromDTO(List filtroOrdineDtos) { + + String xmlPrefix = ""; + String xmlSuffix = ""; + + StringBuilder xmlContent = new StringBuilder(); + + if(filtroOrdineDtos != null && filtroOrdineDtos.size() > 0) { + + for(int i = 0; i < filtroOrdineDtos.size(); i++){ + FiltroOrdineDTO x = filtroOrdineDtos.get(i); + + try { + xmlContent.append("" + x.getGestioneOrd() + "" + UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) + "" + x.getNumOrd() + ""); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + } + + this.filtroOrdini = xmlPrefix + xmlContent + xmlSuffix; + } + + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java index d04b81bf..64519347 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/core/AccettazioneOrdineInevasoHelper.java @@ -73,12 +73,15 @@ public class AccettazioneOrdineInevasoHelper { if(mDataset.get(i).codJcom.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)) mDataset.get(i).descrizioneCommessa = null; } - Collections.sort(codArtForns, (str1, str2) -> { - if(str1 != null && str2 != null) { - return str1.compareToIgnoreCase(str2); - } - return 0; - }); + codArtForns = Stream.of(codArtForns) + .sortBy(x -> x).toList(); + +// Collections.sort(codArtForns, (str1, str2) -> { +// if(str1 != null && str2 != null) { +// return str1.compareToIgnoreCase(str2); +// } +// return 0; +// }); List> groupedRighe = new ArrayList<>(); for (String codArtForn : codArtForns) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java index e10624ee..24f09a27 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/core/MainListListaColliAdapter.java @@ -19,6 +19,8 @@ public class MainListListaColliAdapter extends RecyclerView.Adapter mDataset; + private View mEmptyView; + private IRecyclerItemClicked mOnItemClickListener; public static class ViewHolder extends RecyclerView.ViewHolder { @@ -36,12 +38,15 @@ public class MainListListaColliAdapter extends RecyclerView.Adapter myDataset, IRecyclerItemClicked onItemClickListener) { + public MainListListaColliAdapter(Context context, ObservableArrayList myDataset, IRecyclerItemClicked onItemClickListener, View emptyView) { mContext = context; mDataset = myDataset; + mEmptyView = emptyView; mOnItemClickListener = onItemClickListener; myDataset.addOnListChangedCallback(onListChangedCallback); + + checkIfEmpty(); } @@ -78,33 +83,43 @@ public class MainListListaColliAdapter extends RecyclerView.Adapter>() { @Override public void onChanged(ObservableList sender) { notifyDataSetChanged(); + checkIfEmpty(); } @Override public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { notifyDataSetChanged(); + checkIfEmpty(); } @Override public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { notifyDataSetChanged(); + checkIfEmpty(); } @Override public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { notifyDataSetChanged(); + checkIfEmpty(); } @Override public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { notifyDataSetChanged(); + checkIfEmpty(); } }; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java index 4a109ef2..c5477422 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java @@ -60,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked { mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator); - mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this); + mAdapter = new MainListListaColliAdapter(mContext, mMtbColts, this, mContext.bindings.listaBancaliEmptyView); mContext.bindings.listaColliMainList.setAdapter(mAdapter); mContext.bindings.waterfallToolbar.setRecyclerView(mContext.bindings.listaColliMainList); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 8edfefbf..deea11b3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.vendita; import android.app.ProgressDialog; import android.content.Context; +import android.content.Intent; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v4.app.Fragment; @@ -25,6 +26,7 @@ import butterknife.OnClick; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.CommonRESTException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ITitledFragment; @@ -33,6 +35,7 @@ import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; public class MainVenditaFragment extends Fragment implements ITitledFragment { @@ -123,9 +126,9 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment { //Splitto gli ordini per codAnagOrd (Cliente) Stream.of(ordini) - .distinctBy(x -> x.codAnagOrd) - .sortBy(x -> x.ragSocOrd) - .map(x -> x.codAnagOrd + "#_#" + x.ragSocOrd) + .distinctBy(OrdineVenditaInevasoDTO::getCodAnagOrd) + .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd) + .map(x -> x.getCodAnagOrd() + "#_#" + x.getRagSocOrd()) .forEach(anagOrd -> { String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#")); @@ -140,42 +143,45 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment { //Raggruppo gli ordini del singolo fornitore suddivisi per data, dataCons e numero Stream.of(ordini) - .filter(x -> x.codAnagOrd.equalsIgnoreCase(codAnagOrd)) - .distinctBy(x -> x.data + " - " + x.dataCons + " - " + x.numero) + .filter(x -> x.getCodAnagOrd().equalsIgnoreCase(codAnagOrd)) + .distinctBy(x -> x.getDataOrdS() + " - " + x.getDataConsS() + " - " + x.getNumOrd()) .forEach(ord -> { OrdineVenditaGroupedInevasoDTO.Ordine rigaOrdine = new OrdineVenditaGroupedInevasoDTO.Ordine(); - rigaOrdine.data = ord.data; - rigaOrdine.numero = ord.numero; - rigaOrdine.codAnagOrd = ord.codAnagOrd; - rigaOrdine.ragSocOrd = ord.ragSocOrd; - rigaOrdine.pesoTotale = ord.pesoTotale; - rigaOrdine.barcode = ord.barcode; - rigaOrdine.termCons = ord.termCons; - rigaOrdine.dataCons = ord.dataCons; - rigaOrdine.rifOrd = ord.rifOrd; + rigaOrdine + .setData(ord.getDataOrdS()) + .setNumero(ord.getNumOrd()) + .setCodAnagOrd(ord.getCodAnagOrd()) + .setRagSocOrd(ord.getRagSocOrd()) + .setPesoTotale(ord.getPesoTotale() != null ? ord.getPesoTotale().floatValue() : null) + .setBarcode(ord.getBarcode()) + .setTermCons(ord.getTermCons()) + .setDataCons(ord.getDataConsS()) + .setRifOrd(ord.getRifOrd()) + .setGestione(ord.getGestione()); + rigaOrdine.clienti = new ArrayList<>(); //Leggo tutti i clienti dell'ordine corrente Stream.of(ordini) - .filter(x -> x.codAnagOrd.equalsIgnoreCase(codAnagOrd) && - x.numero == ord.numero && - x.data.equalsIgnoreCase(ord.data) && - x.dataCons.equalsIgnoreCase(ord.dataCons)) - .distinctBy(x -> x.codJcom) + .filter(x -> x.getCodAnagOrd().equalsIgnoreCase(codAnagOrd) && + x.getNumOrd().equals(ord.getNumOrd()) && + x.getDataOrdS().equalsIgnoreCase(ord.getDataOrdS()) && + x.getDataConsS().equalsIgnoreCase(ord.getDataConsS())) + .distinctBy(OrdineVenditaInevasoDTO::getCodJcom) .forEach(ordCliente -> { OrdineVenditaGroupedInevasoDTO.Cliente cliente = new OrdineVenditaGroupedInevasoDTO.Cliente(); - cliente.codJcom = ordCliente.codJcom; - cliente.ragSocCom = ordCliente.ragSocCom; - cliente.descrCom = ordCliente.descrizioneCom; - cliente.dataCons = ordCliente.dataCons; - cliente.numCnf = ordCliente.numCnf; - cliente.rifOrd = ordCliente.rifOrd; + cliente.codJcom = ordCliente.getCodJcom(); + cliente.ragSocCom = ordCliente.getRagSocCom(); + cliente.descrCom = ordCliente.getDescrizioneCom(); + cliente.dataCons = ordCliente.getDataConsS(); + cliente.numCnf = ordCliente.getNumCnfdaEvadere() != null ? ordCliente.getNumCnfdaEvadere().floatValue() : 0; + cliente.rifOrd = ordCliente.getRifOrd(); rigaOrdine.clienti.add(cliente); @@ -219,10 +225,10 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment { for(OrdineVenditaGroupedInevasoDTO ordine : selectedOrders){ for(OrdineVenditaGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){ - if(!barcodes.contains(righeOrd.barcode)) barcodes.add(righeOrd.barcode); + if(!barcodes.contains(righeOrd.getBarcode())) barcodes.add(righeOrd.getBarcode()); - if(dataCons == null) dataCons = righeOrd.dataCons; - else if(!dataCons.equalsIgnoreCase(righeOrd.dataCons)) dataCons = ""; + if(dataCons == null) dataCons = righeOrd.getDataConsS(); + else if(!dataCons.equalsIgnoreCase(righeOrd.getDataConsS())) dataCons = ""; } } @@ -238,7 +244,10 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment { progress.dismiss(); - List codMarts = Stream.of(ordini).distinctBy(x -> x.codMart).map(x -> x.codMart).toList(); + List codMarts = Stream.of(ordini) + .distinctBy(PickingObjectDTO::getCodMart) + .map(PickingObjectDTO::getCodMart) + .toList(); int alreadyRegisteredUL = mtbColtList.size(); @@ -252,9 +261,11 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment { null, () -> { -// Intent myIntent = new Intent(getActivity(), AccettazioneOrdineInevasoActivity.class); -// myIntent.putExtra("key", (ArrayList) ordini); //Optional parameters -// getActivity().startActivity(myIntent); + Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class); + myIntent.putExtra("keyPickingList", (ArrayList) ordini); //Optional parameters + myIntent.putExtra("keyTestateOrdini", (ArrayList)selectedOrders); + myIntent.putExtra("keyColliRegistrati", (ArrayList)mtbColtList); + getActivity().startActivity(myIntent); }).show(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java index e43b99c9..ee85308b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java @@ -127,11 +127,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter clienti; public boolean checkBox; public List checkBoxCallback = new ArrayList<>(); + + + public void setCheckbox(boolean newValue){ checkBox = newValue; if(checkBoxCallback != null && checkBoxCallback.size() > 0) { @@ -42,8 +49,6 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, } } - public List clienti; - public Date getData(){ try { @@ -54,7 +59,70 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, return null; } - public Date getDataCons(){ + public Ordine setData(String data) { + this.data = data; + return this; + } + + public int getNumero() { + return numero; + } + + public Ordine setNumero(int numero) { + this.numero = numero; + return this; + } + + public String getCodAnagOrd() { + return codAnagOrd; + } + + public Ordine setCodAnagOrd(String codAnagOrd) { + this.codAnagOrd = codAnagOrd; + return this; + } + + public String getRagSocOrd() { + return ragSocOrd; + } + + public Ordine setRagSocOrd(String ragSocOrd) { + this.ragSocOrd = ragSocOrd; + return this; + } + + public Float getPesoTotale() { + return pesoTotale; + } + + public Ordine setPesoTotale(Float pesoTotale) { + this.pesoTotale = pesoTotale; + return this; + } + + public String getBarcode() { + return barcode; + } + + public Ordine setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public String getTermCons() { + return termCons; + } + + public Ordine setTermCons(String termCons) { + this.termCons = termCons; + return this; + } + + public String getDataConsS(){ + return dataCons; + } + + public Date getDataConsD(){ try { return UtilityDate.recognizeDate(dataCons); } catch (Exception e) { @@ -62,6 +130,52 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, } return null; } + + public Ordine setDataCons(String dataCons) { + this.dataCons = dataCons; + return this; + } + + public String getRifOrd() { + return rifOrd; + } + + public Ordine setRifOrd(String rifOrd) { + this.rifOrd = rifOrd; + return this; + } + + public String getGestione() { + return gestione; + } + + public GestioneEnum getGestioneEnum() { + return GestioneEnum.fromString(getGestione()); + } + + public Ordine setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public List getClienti() { + return clienti; + } + + public Ordine setClienti(List clienti) { + this.clienti = clienti; + return this; + } + + public boolean isCheckBox() { + return checkBox; + } + + public Ordine setCheckBox(boolean checkBox) { + this.checkBox = checkBox; + return this; + } + public Ordine(){} protected Ordine(Parcel in) { @@ -75,11 +189,12 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, dataCons = in.readString(); rifOrd = in.readString(); if (in.readByte() == 0x01) { - clienti = new ArrayList(); + clienti = new ArrayList<>(); in.readList(clienti, Cliente.class.getClassLoader()); } else { clienti = null; } + gestione = in.readString(); } @Override @@ -109,6 +224,7 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, dest.writeByte((byte) (0x01)); dest.writeList(clienti); } + dest.writeString(gestione); } @SuppressWarnings("unused") @@ -131,7 +247,7 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, public String ragSocCom; public int idRiga; public String dataCons; - public Integer numCnf; + public Float numCnf; public String descrCom; public String rifOrd; @@ -151,7 +267,7 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, ragSocCom = in.readString(); idRiga = in.readInt(); dataCons = in.readString(); - numCnf = in.readByte() == 0x00 ? null : in.readInt(); + numCnf = in.readByte() == 0x00 ? null : in.readFloat(); descrCom = in.readString(); rifOrd = in.readString(); } @@ -171,7 +287,7 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, dest.writeByte((byte) (0x00)); } else { dest.writeByte((byte) (0x01)); - dest.writeInt(numCnf); + dest.writeFloat(numCnf); } dest.writeString(descrCom); dest.writeString(rifOrd); @@ -197,7 +313,7 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, codAnagClie = in.readString(); nomeCliente = in.readString(); if (in.readByte() == 0x01) { - ordini = new ArrayList(); + ordini = new ArrayList<>(); in.readList(ordini, Ordine.class.getClassLoader()); } else { ordini = null; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java index 5f80d7dd..17e49370 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java @@ -1,23 +1,444 @@ package it.integry.integrywmsnative.gest.vendita.dto; -public class OrdineVenditaInevasoDTO { - public String data; - public int numero; - public String termCons; - public String codAuto; - public String descrizioneAuto; - public String rifOrd; - public String codVvet; - public String descrizioneVettore; - public String dataInizTrasp; - public String codJcom = ""; - public String descrizioneCom = ""; - public String codAnagOrd = ""; - public String ragSocOrd = ""; - public String ragSocCom = ""; - public Float pesoTotale; - public Integer numCnf; - public String dataCons; - public String barcode; +import android.os.Parcel; +import android.os.Parcelable; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class OrdineVenditaInevasoDTO implements Parcelable { + + private String data; + private Integer numero; + private String gestione; + private String listino; + private String termCons; + private String codAuto; + private String descrizioneAuto; + private String codVvet; + private String descrizioneVettore; + private String dataInizTrasp; + private String descrizionePaga; + private String rifOrd; + private String codAnagOrd; + private String codJcom; + private String descrizioneCom; + private String ragSocCom; + private String ragSocOrd; + private String destinatario; + private String citta; + private String provincia; + private String indirizzo; + private BigDecimal pesoTotale; + private BigDecimal numCnfdaEvadere; + private BigDecimal numCnfDisp; + private String dataCons; + private String barcode; + private Integer numRighe; + private Integer righeInPartenza; + private BigDecimal saldoContabile; + private String codVzon; + private String ragSocOrdV; + + + protected OrdineVenditaInevasoDTO(Parcel in) { + data = in.readString(); + if (in.readByte() == 0) { + numero = null; + } else { + numero = in.readInt(); + } + gestione = in.readString(); + listino = in.readString(); + termCons = in.readString(); + codAuto = in.readString(); + descrizioneAuto = in.readString(); + codVvet = in.readString(); + descrizioneVettore = in.readString(); + dataInizTrasp = in.readString(); + descrizionePaga = in.readString(); + rifOrd = in.readString(); + codAnagOrd = in.readString(); + codJcom = in.readString(); + descrizioneCom = in.readString(); + ragSocCom = in.readString(); + ragSocOrd = in.readString(); + destinatario = in.readString(); + citta = in.readString(); + provincia = in.readString(); + indirizzo = in.readString(); + dataCons = in.readString(); + barcode = in.readString(); + if (in.readByte() == 0) { + numRighe = null; + } else { + numRighe = in.readInt(); + } + if (in.readByte() == 0) { + righeInPartenza = null; + } else { + righeInPartenza = in.readInt(); + } + codVzon = in.readString(); + ragSocOrdV = in.readString(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(data); + if (numero == null) { + dest.writeByte((byte) 0); + } else { + dest.writeByte((byte) 1); + dest.writeInt(numero); + } + dest.writeString(gestione); + dest.writeString(listino); + dest.writeString(termCons); + dest.writeString(codAuto); + dest.writeString(descrizioneAuto); + dest.writeString(codVvet); + dest.writeString(descrizioneVettore); + dest.writeString(dataInizTrasp); + dest.writeString(descrizionePaga); + dest.writeString(rifOrd); + dest.writeString(codAnagOrd); + dest.writeString(codJcom); + dest.writeString(descrizioneCom); + dest.writeString(ragSocCom); + dest.writeString(ragSocOrd); + dest.writeString(destinatario); + dest.writeString(citta); + dest.writeString(provincia); + dest.writeString(indirizzo); + dest.writeString(dataCons); + dest.writeString(barcode); + if (numRighe == null) { + dest.writeByte((byte) 0); + } else { + dest.writeByte((byte) 1); + dest.writeInt(numRighe); + } + if (righeInPartenza == null) { + dest.writeByte((byte) 0); + } else { + dest.writeByte((byte) 1); + dest.writeInt(righeInPartenza); + } + dest.writeString(codVzon); + dest.writeString(ragSocOrdV); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public OrdineVenditaInevasoDTO createFromParcel(Parcel in) { + return new OrdineVenditaInevasoDTO(in); + } + + @Override + public OrdineVenditaInevasoDTO[] newArray(int size) { + return new OrdineVenditaInevasoDTO[size]; + } + }; + + public String getDataOrdS() { + return data; + } + + public Date getDataOrdD() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataOrdS()); + } + + public OrdineVenditaInevasoDTO setData(String data) { + this.data = data; + return this; + } + + public Integer getNumOrd() { + return numero; + } + + public OrdineVenditaInevasoDTO setNumero(Integer numero) { + this.numero = numero; + return this; + } + + public String getGestione() { + return gestione; + } + + public OrdineVenditaInevasoDTO setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public String getListino() { + return listino; + } + + public OrdineVenditaInevasoDTO setListino(String listino) { + this.listino = listino; + return this; + } + + public String getTermCons() { + return termCons; + } + + public OrdineVenditaInevasoDTO setTermCons(String termCons) { + this.termCons = termCons; + return this; + } + + public String getCodAuto() { + return codAuto; + } + + public OrdineVenditaInevasoDTO setCodAuto(String codAuto) { + this.codAuto = codAuto; + return this; + } + + public String getDescrizioneAuto() { + return descrizioneAuto; + } + + public OrdineVenditaInevasoDTO setDescrizioneAuto(String descrizioneAuto) { + this.descrizioneAuto = descrizioneAuto; + return this; + } + + public String getCodVvet() { + return codVvet; + } + + public OrdineVenditaInevasoDTO setCodVvet(String codVvet) { + this.codVvet = codVvet; + return this; + } + + public String getDescrizioneVettore() { + return descrizioneVettore; + } + + public OrdineVenditaInevasoDTO setDescrizioneVettore(String descrizioneVettore) { + this.descrizioneVettore = descrizioneVettore; + return this; + } + + public String getDataInizTraspS() { + return dataInizTrasp; + } + + public Date getDataInizTraspD() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataInizTraspS()); + } + + public OrdineVenditaInevasoDTO setDataInizTrasp(String dataInizTrasp) { + this.dataInizTrasp = dataInizTrasp; + return this; + } + + public String getDescrizionePaga() { + return descrizionePaga; + } + + public OrdineVenditaInevasoDTO setDescrizionePaga(String descrizionePaga) { + this.descrizionePaga = descrizionePaga; + return this; + } + + public String getRifOrd() { + return rifOrd; + } + + public OrdineVenditaInevasoDTO setRifOrd(String rifOrd) { + this.rifOrd = rifOrd; + return this; + } + + public String getCodAnagOrd() { + return codAnagOrd; + } + + public OrdineVenditaInevasoDTO setCodAnagOrd(String codAnagOrd) { + this.codAnagOrd = codAnagOrd; + return this; + } + + public String getCodJcom() { + return codJcom; + } + + public OrdineVenditaInevasoDTO setCodJcom(String codJcom) { + this.codJcom = codJcom; + return this; + } + + public String getDescrizioneCom() { + return descrizioneCom; + } + + public OrdineVenditaInevasoDTO setDescrizioneCom(String descrizioneCom) { + this.descrizioneCom = descrizioneCom; + return this; + } + + public String getRagSocCom() { + return ragSocCom; + } + + public OrdineVenditaInevasoDTO setRagSocCom(String ragSocCom) { + this.ragSocCom = ragSocCom; + return this; + } + + public String getRagSocOrd() { + return ragSocOrd; + } + + public OrdineVenditaInevasoDTO setRagSocOrd(String ragSocOrd) { + this.ragSocOrd = ragSocOrd; + return this; + } + + public String getDestinatario() { + return destinatario; + } + + public OrdineVenditaInevasoDTO setDestinatario(String destinatario) { + this.destinatario = destinatario; + return this; + } + + public String getCitta() { + return citta; + } + + public OrdineVenditaInevasoDTO setCitta(String citta) { + this.citta = citta; + return this; + } + + public String getProvincia() { + return provincia; + } + + public OrdineVenditaInevasoDTO setProvincia(String provincia) { + this.provincia = provincia; + return this; + } + + public String getIndirizzo() { + return indirizzo; + } + + public OrdineVenditaInevasoDTO setIndirizzo(String indirizzo) { + this.indirizzo = indirizzo; + return this; + } + + public BigDecimal getPesoTotale() { + return pesoTotale; + } + + public OrdineVenditaInevasoDTO setPesoTotale(BigDecimal pesoTotale) { + this.pesoTotale = pesoTotale; + return this; + } + + public BigDecimal getNumCnfdaEvadere() { + return numCnfdaEvadere; + } + + public OrdineVenditaInevasoDTO setNumCnfdaEvadere(BigDecimal numCnfdaEvadere) { + this.numCnfdaEvadere = numCnfdaEvadere; + return this; + } + + public BigDecimal getNumCnfDisp() { + return numCnfDisp; + } + + public OrdineVenditaInevasoDTO setNumCnfDisp(BigDecimal numCnfDisp) { + this.numCnfDisp = numCnfDisp; + return this; + } + + public String getDataConsS() { + return dataCons; + } + + public Date getDataConsD() throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataConsS()); + } + + public OrdineVenditaInevasoDTO setDataCons(String dataCons) { + this.dataCons = dataCons; + return this; + } + + public String getBarcode() { + return barcode; + } + + public OrdineVenditaInevasoDTO setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public Integer getNumRighe() { + return numRighe; + } + + public OrdineVenditaInevasoDTO setNumRighe(Integer numRighe) { + this.numRighe = numRighe; + return this; + } + + public Integer getRigheInPartenza() { + return righeInPartenza; + } + + public OrdineVenditaInevasoDTO setRigheInPartenza(Integer righeInPartenza) { + this.righeInPartenza = righeInPartenza; + return this; + } + + public BigDecimal getSaldoContabile() { + return saldoContabile; + } + + public OrdineVenditaInevasoDTO setSaldoContabile(BigDecimal saldoContabile) { + this.saldoContabile = saldoContabile; + return this; + } + + public String getCodVzon() { + return codVzon; + } + + public OrdineVenditaInevasoDTO setCodVzon(String codVzon) { + this.codVzon = codVzon; + return this; + } + + public String getRagSocOrdV() { + return ragSocOrdV; + } + + public OrdineVenditaInevasoDTO setRagSocOrdV(String ragSocOrdV) { + this.ragSocOrdV = ragSocOrdV; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java index 96576aea..e742e99d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java @@ -1,32 +1,162 @@ package it.integry.integrywmsnative.gest.vendita.dto; +import android.os.Parcel; +import android.os.Parcelable; + import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -public class PickingObjectDTO { +public class PickingObjectDTO implements Parcelable { - public Integer numCollo; - public String gestione; - public String serCollo; - public String descrizioneEstesa; - public String codJcom; - public String codMart; - public String posizione; - public BigDecimal qtaCollo; - public String dataCollo; - public Integer idViaggio; - public String codTagl; - public String codCol; - public String dataScad; - public String codArtFor; - public String partitaMag; - public BigDecimal qtaOrd; - public BigDecimal numCnfCollo; - public BigDecimal numCnf; - public String codAlis; - public BigDecimal colliPedana; + private Integer numCollo; + private String gestione; + private String serCollo; + private String descrizioneEstesa; + private String codJcom; + private String codMart; + private String posizione; + private BigDecimal qtaCollo; + private String dataCollo; + private Integer idViaggio; + private String codTagl; + private String codCol; + private String dataScad; + private String codArtFor; + private String partitaMag; + private BigDecimal qtaOrd; + private BigDecimal numCnfCollo; + private BigDecimal numCnf; + private String codAlis; + private BigDecimal colliPedana; + + private Boolean hidden = null; + + protected PickingObjectDTO(Parcel in) { + if (in.readByte() == 0) { + numCollo = null; + } else { + numCollo = in.readInt(); + } + gestione = in.readString(); + serCollo = in.readString(); + descrizioneEstesa = in.readString(); + codJcom = in.readString(); + codMart = in.readString(); + posizione = in.readString(); + dataCollo = in.readString(); + if (in.readByte() == 0) { + idViaggio = null; + } else { + idViaggio = in.readInt(); + } + codTagl = in.readString(); + codCol = in.readString(); + dataScad = in.readString(); + codArtFor = in.readString(); + partitaMag = in.readString(); + codAlis = in.readString(); + hidden = in.readByte() == 0x00 ? null : in.readByte() != 0x00; + + if (in.readByte() == 0) { + qtaCollo = null; + } else { + qtaCollo = new BigDecimal(in.readFloat()); + } + if (in.readByte() == 0) { + qtaOrd = null; + } else { + qtaOrd = new BigDecimal(in.readFloat()); + } + if (in.readByte() == 0) { + numCnf = null; + } else { + numCnf = new BigDecimal(in.readFloat()); + } + if (in.readByte() == 0) { + numCnfCollo = null; + } else { + numCnfCollo = new BigDecimal(in.readFloat()); + } + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + if (numCollo == null) { + dest.writeByte((byte) 0); + } else { + dest.writeByte((byte) 1); + dest.writeInt(numCollo); + } + dest.writeString(gestione); + dest.writeString(serCollo); + dest.writeString(descrizioneEstesa); + dest.writeString(codJcom); + dest.writeString(codMart); + dest.writeString(posizione); + dest.writeString(dataCollo); + if (idViaggio == null) { + dest.writeByte((byte) 0); + } else { + dest.writeByte((byte) 1); + dest.writeInt(idViaggio); + } + dest.writeString(codTagl); + dest.writeString(codCol); + dest.writeString(dataScad); + dest.writeString(codArtFor); + dest.writeString(partitaMag); + dest.writeString(codAlis); + if (hidden == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeByte((byte) (hidden ? 0x01 : 0x00)); + } + + if (qtaCollo == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(qtaCollo.floatValue()); + } + if (qtaOrd == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(qtaOrd.floatValue()); + } + if (numCnf == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(numCnf.floatValue()); + } + if (numCnfCollo == null) { + dest.writeByte((byte) (0x00)); + } else { + dest.writeByte((byte) (0x01)); + dest.writeFloat(numCnfCollo.floatValue()); + } + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public PickingObjectDTO createFromParcel(Parcel in) { + return new PickingObjectDTO(in); + } + + @Override + public PickingObjectDTO[] newArray(int size) { + return new PickingObjectDTO[size]; + } + }; public Integer getNumCollo() { return numCollo; @@ -217,4 +347,13 @@ public class PickingObjectDTO { this.colliPedana = colliPedana; return this; } + + public Boolean isHidden() { + return hidden; + } + + public PickingObjectDTO setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java new file mode 100644 index 00000000..4de603c9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java @@ -0,0 +1,108 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso; + +import android.content.Intent; +import android.databinding.DataBindingUtil; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding; +import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding; +import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel.VenditaOrdineInevasoViewModel; +import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; + +public class VenditaOrdineInevasoActivity extends AppCompatActivity { + + + public ActivityVenditaOrdineInevasoBinding bindings; + private VenditaOrdineInevasoViewModel mVenditaOrdineInevasoViewModel; + private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; + + + private static final int PICK_UL_REQUEST = 1; // The request code + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + bindings = DataBindingUtil.setContentView(this, R.layout.activity_vendita_ordine_inevaso); + FragmentArticoliInColloBottomSheetBinding bindings = this.bindings.bottomSheetInclude; + mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings); + + List pickingList = (ArrayList)getIntent().getSerializableExtra("keyPickingList"); + List testateOrdini = (ArrayList)getIntent().getSerializableExtra("keyTestateOrdini"); + List colliRegistrati = (ArrayList) getIntent().getSerializableExtra("keyColliRegistrati"); + mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel( + this, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati); + + setSupportActionBar(this.bindings.toolbar); + + setTitle(R.string.activity_vendita_inevaso_title); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + } + + @Override + public boolean onSupportNavigateUp() { + onBackPressed(); + return true; + } + + @Override + public void onBackPressed() { + if(mArticoliInColloBottomSheetViewModel.isExpanded()){ + mArticoliInColloBottomSheetViewModel.collapse(); + } else if(mVenditaOrdineInevasoViewModel.thereIsAnOpenedUL()) { + mArticoliInColloBottomSheetViewModel.closeCurrentUL(); + } else super.onBackPressed(); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.activity_vendita_ordine_inevaso, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle item selection + switch (item.getItemId()) { + default: + return super.onOptionsItemSelected(item); + } + } + + + public void startListaBancaliRegistratiActivity(ArrayList mtbColts){ + Intent myIntent = new Intent(this, ListaBancaliActivity.class); + myIntent.putExtra("key", mtbColts); //Optional parameters + myIntent.putExtra(ListaBancaliActivity.Key.CanRecoverUL, true); + this.startActivityForResult(myIntent, PICK_UL_REQUEST); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + // Check which request we're responding to + if (requestCode == PICK_UL_REQUEST) { + // Make sure the request was successful + if (resultCode == RESULT_OK) { + + MtbColt recoveredMtbColt = data.getParcelableExtra("key"); + + mVenditaOrdineInevasoViewModel.recoverUL(recoveredMtbColt); + } + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java new file mode 100644 index 00000000..9e7849f0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java @@ -0,0 +1,227 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core; + +import android.content.Context; +import android.databinding.ObservableArrayList; +import android.databinding.ObservableList; +import android.graphics.Color; +import android.support.v4.util.Pools; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.utility.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto.VenditaOrdineInevasoListViewModel; + +public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter { + + protected Context mContext; + protected List mDataset; + protected ObservableArrayList mObservableDataset; + protected IOnOrdineRowDispatchCallback mOrdineRowDispatch; + + private static final Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(200); + + public static class ViewHolder extends RecyclerView.ViewHolder { + // each data item is just a string in this case + protected View mGroupTitle; + protected LinearLayout mLinearLayoutGroupItemContainer; + + protected List pool = new ArrayList<>(); + + public ViewHolder(View v) { + super(v); + } + } + + public MainListOrdineVenditaInevasoAdapter(Context context, ObservableArrayList myDataset) { + mContext = context; + mObservableDataset = myDataset; + + + mDataset = Stream.of(mObservableDataset).filter(x -> !x.isHidden()).toList(); + mObservableDataset.addOnListChangedCallback(onListChangedCallback); + } + + public void setOnOrdineRowDispatchCallback(IOnOrdineRowDispatchCallback ordineRowDispatch) { + mOrdineRowDispatch = ordineRowDispatch; + } + + private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>() { + @Override + public void onChanged(ObservableList sender) { + refreshNotHiddenElements(); + notifyDataSetChanged(); + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + refreshNotHiddenElements(); + notifyDataSetChanged(); + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + refreshNotHiddenElements(); + notifyDataSetChanged(); + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + refreshNotHiddenElements(); + notifyDataSetChanged(); + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + refreshNotHiddenElements(); + notifyDataSetChanged(); + } + + private void refreshNotHiddenElements() { + mDataset = Stream.of(mObservableDataset).filter(x -> !x.isHidden()).toList(); + } + }; + + + @Override + public MainListOrdineVenditaInevasoAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + View v = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.vendita_ordine_inevaso_main_list_model, parent, false); + + + ViewHolder vh = new ViewHolder(v); + + TextView descrizioneArtForn = v.findViewById(R.id.vendita_ordine_inevaso_main_list__descrizione_gruppo); + vh.mGroupTitle = descrizioneArtForn; + + LinearLayout groupItemContainer = v.findViewById(R.id.vendita_ordine_inevaso_main_list__group_item_container); + vh.mLinearLayoutGroupItemContainer = groupItemContainer; + + return vh; + } + + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(MainListOrdineVenditaInevasoAdapter.ViewHolder holder, int position) { + ((TextView)holder.mGroupTitle).setText(mDataset.get(position).descrizioneGroup); + + List subset = mDataset.get(position).rows; + + int visibleElementsCounter = 0; + + for(int i = 0; i < subset.size(); i++) { + + final VenditaOrdineInevasoListViewModel.SubItem rowItem = subset.get(i); + + if(!rowItem.getOriginalModel().isHidden()) { + visibleElementsCounter++; + + View groupModelViewPool = (View) sPool.acquire(); + if (groupModelViewPool == null) { + groupModelViewPool = LayoutInflater.from(mContext) + .inflate(R.layout.vendita_ordine_inevaso_main_list_child_group_model, holder.mLinearLayoutGroupItemContainer, false); + } + + View groupModelView = groupModelViewPool; + holder.pool.add(groupModelView); + + if (rowItem.getQtaRiservata().subtract(rowItem.getQtaOrdinata()).floatValue() >= 0 ) { + groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha)); + } else if (rowItem.getQtaRiservata().floatValue() > 0) { + groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha)); + } else if (visibleElementsCounter % 2 == 1) { + groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); + } else { + groupModelView.setBackgroundColor(Color.WHITE); + } + + final TextView badge1 = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_badge1); + badge1.setText(rowItem.getBadge1()); + + final TextView badge2 = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_badge2); + badge2.setText(rowItem.getBadge2()); + badge2.setVisibility(UtilityString.isNullOrEmpty(rowItem.getBadge2()) ? View.GONE : View.VISIBLE); + + + final TextView descrizione = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_descrizione); + + String descrizioneString = rowItem.getDescrizione(); + int descrizioneColor = Color.BLACK; + + if (UtilityString.isNullOrEmpty(descrizioneString)) { + descrizioneString = mContext.getString(R.string.no_description); + descrizioneColor = Color.GRAY; + } else if (descrizioneString.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)) { + descrizioneString = mContext.getString(R.string.stock); + } + + descrizione.setText(descrizioneString); + descrizione.setTextColor(descrizioneColor); + + final TextView qtaEvasa = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_qta_evasa); + qtaEvasa.setText(UtilityNumber.decimalToString(rowItem.getQtaRiservata())); + + final TextView qtaTot = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_qta_tot); + qtaTot.setText(UtilityNumber.decimalToString(rowItem.getQtaOrdinata())); + + + groupModelView.setOnClickListener(view -> { + if (mOrdineRowDispatch != null) { + mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel()); + } + }); + + holder.mLinearLayoutGroupItemContainer.addView(groupModelView); + + } + + } + + } + + + + @Override + public void onViewRecycled(MainListOrdineVenditaInevasoAdapter.ViewHolder holder){ + if(holder != null){ + for(int i = 0; i < holder.pool.size(); i++){ + ((ViewGroup) holder.pool.get(i).getParent()).removeView(holder.pool.get(i)); + sPool.release(holder.pool.get(i)); + } + + holder.pool.clear(); + } + + super.onViewRecycled(holder); + } + + + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return mDataset.size(); + } + + + public interface IOnOrdineRowDispatchCallback { + + void onOrdineRowDispatch(PickingObjectDTO item); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java new file mode 100644 index 00000000..fcf2422a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java @@ -0,0 +1,114 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core; + +import android.content.Context; +import android.databinding.ObservableArrayList; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto.VenditaOrdineInevasoListViewModel; + +public class VenditaOrdineInevasoHelper { + + private Context mContext; + + private ObservableArrayList mListViewModels = new ObservableArrayList<>(); + + public VenditaOrdineInevasoHelper(Context context){ + mContext = context; + } + + public MainListOrdineVenditaInevasoAdapter getRightListAdapter() { + return new MainListOrdineVenditaInevasoAdapter(mContext, mListViewModels); + } + + public void updateListModel(List> mDataset, List mtbColrs) throws Exception { + + mListViewModels.clear(); + + mListViewModels.addAll(getListViewModelPerPosizione(mDataset, mtbColrs)); + + } + + public List> getPickingListRaggruppataPerPosizione(List mPickingList, boolean forceHiddenCheck){ + + List listOfKnownPositions = Stream.of(mPickingList) + .map(PickingObjectDTO::getPosizione) + .distinctBy(x -> x) + .withoutNulls() + .sortBy(x -> x) + .toList(); + + listOfKnownPositions.add(null); + + List> groupedRighe = new ArrayList<>(); + for (String position : listOfKnownPositions) { + + List tmpList = Stream.of(mPickingList) + .filter(x -> (x.getPosizione() == null && position == null) || + (x.getPosizione() != null && x.getPosizione().equalsIgnoreCase(position))).toList(); + + for(int i = 0; i < tmpList.size(); i++){ + if(tmpList.get(i).isHidden() == null || forceHiddenCheck) { + if (tmpList.get(i).getQtaCollo().floatValue() <= 0) { + tmpList.get(i).setHidden(true); + } else tmpList.get(i).setHidden(false); + } + } + + if(tmpList.size() > 0){ + groupedRighe.add(tmpList); + } + + } + + return groupedRighe; + } + + + public List getListViewModelPerPosizione(List> groupedRighe, List mtbColrs) { + + List listModel = new ArrayList<>(); + + for(int i = 0; i < groupedRighe.size(); i++) { + List currentGroup = groupedRighe.get(i); + + VenditaOrdineInevasoListViewModel itemModel = new VenditaOrdineInevasoListViewModel(); + + + String posizione = UtilityString.isNullOrEmpty(currentGroup.get(0).getPosizione()) ? "N.A." : currentGroup.get(0).getPosizione(); + itemModel.descrizioneGroup = mContext.getResources().getText(R.string.position_text) + ": " + posizione; + itemModel.rows = new ArrayList<>(); + + for(int k = 0; k < currentGroup.size(); k++) { + final PickingObjectDTO currentItem = currentGroup.get(k); + final VenditaOrdineInevasoListViewModel.SubItem rowModel = new VenditaOrdineInevasoListViewModel.SubItem(); + + String badge1 = currentItem.getCodAlis() + " - " + (!UtilityString.isNullOrEmpty(currentItem.getCodArtFor()) ? currentItem.getCodArtFor() : currentItem.getCodMart()); + rowModel.setBadge1(badge1); + + rowModel.setBadge2(UtilityString.isNullOrEmpty(currentItem.getCodJcom()) ? null : currentItem.getCodJcom()); + + rowModel.setDescrizione(currentItem.getDescrizioneEstesa()); + + //TODO: Aggiungere la qta evasa + rowModel.setQtaOrdinata(currentItem.getNumCollo() != null ? currentItem.getQtaCollo() : currentItem.getQtaOrd()); + + rowModel.setOriginalModel(currentItem); + + itemModel.rows.add(rowModel); + } + listModel.add(itemModel); + } + + return listModel; + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java new file mode 100644 index 00000000..3278bdf7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java @@ -0,0 +1,85 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto; + +import com.annimon.stream.Stream; + +import java.math.BigDecimal; +import java.util.List; + +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + +public class VenditaOrdineInevasoListViewModel { + public String descrizioneGroup; + public List rows; + + public boolean isHidden(){ + if(rows == null || rows.size() == 0) return true; + return Stream.of(rows).filter(x -> x.originalModel.isHidden() != null && !x.originalModel.isHidden()).count() == 0; + } + + public static class SubItem { + + private String badge1; + private String badge2; + + private String descrizione; + private BigDecimal qtaRiservata; + private BigDecimal qtaOrdinata; + + private PickingObjectDTO originalModel; + + public String getBadge1() { + return badge1; + } + + public SubItem setBadge1(String badge1) { + this.badge1 = badge1; + return this; + } + + public String getBadge2() { + return badge2; + } + + public SubItem setBadge2(String badge2) { + this.badge2 = badge2; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public SubItem setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public BigDecimal getQtaRiservata() { + return qtaRiservata == null ? BigDecimal.ZERO : qtaRiservata; + } + + public SubItem setQtaRiservata(BigDecimal qtaRiservata) { + this.qtaRiservata = qtaRiservata; + return this; + } + + public BigDecimal getQtaOrdinata() { + return qtaOrdinata == null ? BigDecimal.ZERO : qtaOrdinata; + } + + public SubItem setQtaOrdinata(BigDecimal qtaOrdinata) { + this.qtaOrdinata = qtaOrdinata; + return this; + } + + public PickingObjectDTO getOriginalModel() { + return originalModel; + } + + public SubItem setOriginalModel(PickingObjectDTO originalModel) { + this.originalModel = originalModel; + return this; + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java new file mode 100644 index 00000000..19adc825 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.rest; + +public interface OrdineVenditaInevasoRESTConsumerService { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java new file mode 100644 index 00000000..016860ce --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -0,0 +1,222 @@ +package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel; + +import android.app.ProgressDialog; +import android.databinding.ObservableField; +import android.support.v7.widget.LinearLayoutManager; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.vendita.rest.OrdiniVenditaRESTConsumerService; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.VenditaOrdineInevasoHelper; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.MainListOrdineVenditaInevasoAdapter; +import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.rest.OrdineVenditaInevasoRESTConsumerService; +import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback; +import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; + +import it.integry.integrywmsnative.BR; + +public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback { + + public ObservableField isFabVisible = new ObservableField<>(); + + private final VenditaOrdineInevasoActivity mActivity; + private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel; + + private final List mPickingList; + private List> mGroupedPickingList; + private final List mTestateOrdini; + private final List mColliRegistrati; + + private VenditaOrdineInevasoHelper mHelper; + private MainListOrdineVenditaInevasoAdapter mAdapter; + + private GestioneEnum defaultGestioneOfUL = null; + private List defaultFiltroOrdine = null; + + public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List pickingList, List orders, List colliRegistrati) { + this.mActivity = activity; + this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel; + this.mPickingList = pickingList; + this.mTestateOrdini = orders; + this.mColliRegistrati = colliRegistrati; + + this.isFabVisible.set(true); + + this.mActivity.bindings.setVariable(BR.viewmodel, this); + + this.init(); + this.initDatiPicking(); + } + + private void init(){ + mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this); + mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(() -> this.refreshOrderBy(false)); + mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(() -> this.refreshOrderBy(false)); + + mHelper = new VenditaOrdineInevasoHelper(mActivity); + + initRecyclerView(); + } + + private void initRecyclerView(){ + //RecyclerView setup + mActivity.bindings.venditaOrdineMainList.setHasFixedSize(true); + + mActivity.bindings.venditaOrdineMainList.setLayoutManager(new LinearLayoutManager(mActivity)); + + mAdapter = mHelper.getRightListAdapter(); + + try { + this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, true); + mHelper.updateListModel(this.mGroupedPickingList, null); + } catch (Exception e) { + UtilityExceptions.defaultException(mActivity, e); + } + +// mAdapter.setOnOrdineRowDispatchCallback(this); + mActivity.bindings.venditaOrdineMainList.setAdapter(mAdapter); + } + + private void initDatiPicking() { + if(this.mTestateOrdini != null && this.mTestateOrdini.size() > 0){ + boolean shouldBreak = false; + + //Definizione della gestione collo di default + for(int i = 0; i < this.mTestateOrdini.size(); i++){ + + for(int j = 0; j < this.mTestateOrdini.get(i).ordini.size(); j++){ + + OrdineVenditaGroupedInevasoDTO.Ordine dto = this.mTestateOrdini.get(i).ordini.get(j); + + if(defaultGestioneOfUL == null) { + defaultGestioneOfUL = dto.getGestioneEnum(); + } + + if(dto.getGestioneEnum() != defaultGestioneOfUL){ + //TODO: scrivere qui la gestione di default che deve avere il collo nel caso in cui ho fatto il pick di ordini L e V insieme + defaultGestioneOfUL = GestioneEnum.LAVORAZIONE; + shouldBreak = true; + break; + } + } + + if(shouldBreak) { + break; + } + } + + //Definizione del filtro ordine da applicare a tutti i colli generati + for(int i = 0; i < this.mTestateOrdini.size(); i++){ + + if(defaultFiltroOrdine == null) defaultFiltroOrdine = new ArrayList<>(); + + for(int j = 0; j < this.mTestateOrdini.get(i).ordini.size(); j++){ + OrdineVenditaGroupedInevasoDTO.Ordine dto = this.mTestateOrdini.get(i).ordini.get(j); + + defaultFiltroOrdine.add(new FiltroOrdineDTO() + .setDataOrd(dto.getData()) + .setNumOrd(dto.getNumero()) + .setGestioneOrd(dto.getGestione())); + + } + } + } + } + + public void refreshOrderBy(boolean forceHiddenCheck){ + + try { + List mtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get() != null ? mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() : null; + + this.mGroupedPickingList = mHelper.getPickingListRaggruppataPerPosizione(mPickingList, forceHiddenCheck); + mHelper.updateListModel(this.mGroupedPickingList, mtbColrs); + } catch (Exception e) { + UtilityExceptions.defaultException(mActivity, e); + } + } + + public void recoverUL(MtbColt recoveredMtbColt){ + + for(int i = 0; i < recoveredMtbColt.getMtbColr().size(); i++){ + + MtbColr currentMtbColr = recoveredMtbColt.getMtbColr().get(i); + +// List foundRows = Stream.of(groupedOrdini) +// .filter(x -> x.getNumOrd() == currentMtbColr.getNumOrd() && +// x.getRigaOrd() == currentMtbColr.getRigaOrd()&& +// x.getDataOrd().equals(currentMtbColr.getDataOrdD())) +// .toList(); +// +// if(foundRows != null && foundRows.size() > 0){ +// OrdineAccettazioneDTO.Riga currentRow = foundRows.get(0); +// +// currentRow.setHidden(false); +// currentRow.setQtaRiservate(currentRow.getQtaRiservate().subtract(currentMtbColr.getQtaCol())); +// } + + } + + + setULToCurrentContext(recoveredMtbColt); + refreshOrderBy(false); + } + + public void createNewUL() { + + } + + private void setULToCurrentContext(MtbColt mtbColt){ + isFabVisible.set(false); + mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt); + } + + public void showCreatedUL() { + + mActivity.bindings.venditaOrdineInevasoFab.close(false); + mActivity.startListaBancaliRegistratiActivity((ArrayList) mColliRegistrati); + } + + @Override + public void onColloClosed() { + if(thereIsAnOpenedUL()) { + + if(thereIsAnyRowInUL()) { + printCollo(); + } else { + deleteCollo(); + } + + } + } + + private void printCollo() { + + } + + private void deleteCollo() { + + } + + public boolean thereIsAnOpenedUL() { + return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null; + } + public boolean thereIsAnyRowInUL() { + return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null && + mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null && + mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().size() > 0; + } + + +} diff --git a/app/src/main/res/drawable/ic_playlist_add_check_24dp.xml b/app/src/main/res/drawable/ic_playlist_add_check_24dp.xml new file mode 100644 index 00000000..4f7a1c13 --- /dev/null +++ b/app/src/main/res/drawable/ic_playlist_add_check_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_lista_bancali.xml b/app/src/main/res/layout/activity_lista_bancali.xml index 484b69e7..827b3eff 100644 --- a/app/src/main/res/layout/activity_lista_bancali.xml +++ b/app/src/main/res/layout/activity_lista_bancali.xml @@ -12,7 +12,6 @@ android:orientation="vertical" android:background="@color/full_white"> - - + android:layout_height="match_parent"> + - - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml new file mode 100644 index 00000000..57aad72d --- /dev/null +++ b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/vendita_ordine_inevaso_main_list_child_group_model.xml b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_child_group_model.xml new file mode 100644 index 00000000..0d1b4961 --- /dev/null +++ b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_child_group_model.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml new file mode 100644 index 00000000..802283f2 --- /dev/null +++ b/app/src/main/res/layout/vendita_ordine_inevaso_main_list_model.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_vendita_ordine_inevaso.xml b/app/src/main/res/menu/activity_vendita_ordine_inevaso.xml new file mode 100644 index 00000000..fe187c0c --- /dev/null +++ b/app/src/main/res/menu/activity_vendita_ordine_inevaso.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 37f0629f..30534b14 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -112,6 +112,7 @@ Lista UL Contenuto UL + Spedizione merce Salta stampa diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fef1f7e5..06a275cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,6 +120,7 @@ LU List LU Content + Shipping goods Skip print