Implementata empty view in ListaBancali.

Implementata Activity OrdineVenditaInevaso
This commit is contained in:
Giuseppe Scorrano 2018-11-22 19:13:39 +01:00
parent 2bcfd32399
commit 7182782c25
28 changed files with 2012 additions and 112 deletions

View File

@ -23,7 +23,7 @@
<PersistentState>
<option name="values">
<map>
<entry key="url" value="jar:file:/C:/Program%20Files/Android/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/action/ic_delete_black_24dp.xml" />
<entry key="url" value="jar:file:/C:/Program%20Files/Android/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/av/ic_playlist_add_check_black_24dp.xml" />
</map>
</option>
</PersistentState>
@ -33,7 +33,7 @@
</option>
<option name="values">
<map>
<entry key="outputName" value="ic_delete_24dp" />
<entry key="outputName" value="ic_playlist_add_check_24dp" />
<entry key="sourceFile" value="C:\Users\GiuseppeS" />
</map>
</option>

Binary file not shown.

View File

@ -28,6 +28,10 @@
android:name=".gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.login.LoginActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
@ -38,7 +42,7 @@
<activity
android:name=".gest.contenuto_bancale.ContenutoBancaleActivity"
android:label="@string/activity_contenuto_bancale_title"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"></activity>
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
</application>
</manifest>

View File

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

View File

@ -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<FiltroOrdineDTO> filtroOrdineDtos) {
String xmlPrefix = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ROOT><FILTER>";
String xmlSuffix = "</FILTER></ROOT>";
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("<DTB_ORDT COND=\"OR\"><GESTIONE type=\"V\">" + x.getGestioneOrd() + "</GESTIONE><DATA_ORD type=\"D\">" + UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) + "</DATA_ORD><NUM_ORD type=\"N\">" + x.getNumOrd() + "</NUM_ORD></DTB_ORDT>");
} catch (ParseException e) {
e.printStackTrace();
}
}
}
this.filtroOrdini = xmlPrefix + xmlContent + xmlSuffix;
}
}

View File

@ -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<List<OrdineAccettazioneDTO.Riga>> groupedRighe = new ArrayList<>();
for (String codArtForn : codArtForns) {

View File

@ -19,6 +19,8 @@ public class MainListListaColliAdapter extends RecyclerView.Adapter<MainListList
protected Context mContext;
protected ObservableArrayList<MtbColt> mDataset;
private View mEmptyView;
private IRecyclerItemClicked<MtbColt> mOnItemClickListener;
public static class ViewHolder extends RecyclerView.ViewHolder {
@ -36,12 +38,15 @@ public class MainListListaColliAdapter extends RecyclerView.Adapter<MainListList
}
}
public MainListListaColliAdapter(Context context, ObservableArrayList<MtbColt> myDataset, IRecyclerItemClicked<MtbColt> onItemClickListener) {
public MainListListaColliAdapter(Context context, ObservableArrayList<MtbColt> myDataset, IRecyclerItemClicked<MtbColt> 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<MainListList
}
void checkIfEmpty() {
if (mEmptyView != null) {
final boolean emptyViewVisible = getItemCount() == 0;
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
}
}
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<MtbColt>>() {
@Override
public void onChanged(ObservableList<MtbColt> sender) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColt> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColt> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
};

View File

@ -60,7 +60,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked<MtbColt> {
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);

View File

@ -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<String> codMarts = Stream.of(ordini).distinctBy(x -> x.codMart).map(x -> x.codMart).toList();
List<String> 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<OrdineAccettazioneDTO>) ordini); //Optional parameters
// getActivity().startActivity(myIntent);
Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class);
myIntent.putExtra("keyPickingList", (ArrayList<PickingObjectDTO>) ordini); //Optional parameters
myIntent.putExtra("keyTestateOrdini", (ArrayList<OrdineVenditaGroupedInevasoDTO>)selectedOrders);
myIntent.putExtra("keyColliRegistrati", (ArrayList<MtbColt>)mtbColtList);
getActivity().startActivity(myIntent);
}).show();

View File

@ -127,11 +127,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
});
TextView testataOrdTextView = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_testata_ord);
String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.numero), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
testataOrdTextView.setText(Html.fromHtml(testataOrdString));
TextView testataDataConsTextView = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_testata_data_cons);
String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
testataDataConsTextView.setText(Html.fromHtml(testataDataConsString));
LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord);

View File

@ -136,7 +136,7 @@ public class VenditaHelper {
for(int j = 0; j < currentOrders.size(); j++){
whereCond += "(mtb_colr.data_ord = " + UtilityDate.formatDate(currentOrders.get(j).getData(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) + " " +
"AND mtb_colr.num_ord = " + currentOrders.get(j).numero + ") ";
"AND mtb_colr.num_ord = " + currentOrders.get(j).getNumero() + ") ";
if(i != (orders.size() - 1)){
whereCond += "OR ";

View File

@ -9,6 +9,7 @@ import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.interfaces.ICheckBoxCallback;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable, Parcelable {
@ -23,18 +24,24 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable,
public static class Ordine implements Parcelable{
public String data;
public int numero;
public String codAnagOrd = "";
public String ragSocOrd = "";
public Float pesoTotale;
public String barcode;
public String termCons;
public String dataCons;
public String rifOrd;
private String data;
private int numero;
private String codAnagOrd = "";
private String ragSocOrd = "";
private Float pesoTotale;
private String barcode;
private String termCons;
private String dataCons;
private String rifOrd;
private String gestione;
public List<Cliente> clienti;
public boolean checkBox;
public List<ICheckBoxCallback> 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<Cliente> 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<Cliente> getClienti() {
return clienti;
}
public Ordine setClienti(List<Cliente> 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<Cliente>();
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<Ordine>();
ordini = new ArrayList<>();
in.readList(ordini, Ordine.class.getClassLoader());
} else {
ordini = null;

View File

@ -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<OrdineVenditaInevasoDTO> CREATOR = new Creator<OrdineVenditaInevasoDTO>() {
@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;
}
}

View File

@ -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<PickingObjectDTO> CREATOR = new Creator<PickingObjectDTO>() {
@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;
}
}

View File

@ -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<PickingObjectDTO> pickingList = (ArrayList<PickingObjectDTO>)getIntent().getSerializableExtra("keyPickingList");
List<OrdineVenditaGroupedInevasoDTO> testateOrdini = (ArrayList<OrdineVenditaGroupedInevasoDTO>)getIntent().getSerializableExtra("keyTestateOrdini");
List<MtbColt> colliRegistrati = (ArrayList<MtbColt>) 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<MtbColt> 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);
}
}
}
}

View File

@ -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<MainListOrdineVenditaInevasoAdapter.ViewHolder> {
protected Context mContext;
protected List<VenditaOrdineInevasoListViewModel> mDataset;
protected ObservableArrayList<VenditaOrdineInevasoListViewModel> 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<View> pool = new ArrayList<>();
public ViewHolder(View v) {
super(v);
}
}
public MainListOrdineVenditaInevasoAdapter(Context context, ObservableArrayList<VenditaOrdineInevasoListViewModel> 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<ObservableList<VenditaOrdineInevasoListViewModel>>() {
@Override
public void onChanged(ObservableList<VenditaOrdineInevasoListViewModel> sender) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeChanged(ObservableList<VenditaOrdineInevasoListViewModel> sender, int positionStart, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeInserted(ObservableList<VenditaOrdineInevasoListViewModel> sender, int positionStart, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeMoved(ObservableList<VenditaOrdineInevasoListViewModel> sender, int fromPosition, int toPosition, int itemCount) {
refreshNotHiddenElements();
notifyDataSetChanged();
}
@Override
public void onItemRangeRemoved(ObservableList<VenditaOrdineInevasoListViewModel> 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<VenditaOrdineInevasoListViewModel.SubItem> 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);
}
}

View File

@ -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<VenditaOrdineInevasoListViewModel> mListViewModels = new ObservableArrayList<>();
public VenditaOrdineInevasoHelper(Context context){
mContext = context;
}
public MainListOrdineVenditaInevasoAdapter getRightListAdapter() {
return new MainListOrdineVenditaInevasoAdapter(mContext, mListViewModels);
}
public void updateListModel(List<List<PickingObjectDTO>> mDataset, List<MtbColr> mtbColrs) throws Exception {
mListViewModels.clear();
mListViewModels.addAll(getListViewModelPerPosizione(mDataset, mtbColrs));
}
public List<List<PickingObjectDTO>> getPickingListRaggruppataPerPosizione(List<PickingObjectDTO> mPickingList, boolean forceHiddenCheck){
List<String> listOfKnownPositions = Stream.of(mPickingList)
.map(PickingObjectDTO::getPosizione)
.distinctBy(x -> x)
.withoutNulls()
.sortBy(x -> x)
.toList();
listOfKnownPositions.add(null);
List<List<PickingObjectDTO>> groupedRighe = new ArrayList<>();
for (String position : listOfKnownPositions) {
List<PickingObjectDTO> 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<VenditaOrdineInevasoListViewModel> getListViewModelPerPosizione(List<List<PickingObjectDTO>> groupedRighe, List<MtbColr> mtbColrs) {
List<VenditaOrdineInevasoListViewModel> listModel = new ArrayList<>();
for(int i = 0; i < groupedRighe.size(); i++) {
List<PickingObjectDTO> 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;
}
}

View File

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

View File

@ -0,0 +1,4 @@
package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.rest;
public interface OrdineVenditaInevasoRESTConsumerService {
}

View File

@ -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<Boolean> isFabVisible = new ObservableField<>();
private final VenditaOrdineInevasoActivity mActivity;
private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
private final List<PickingObjectDTO> mPickingList;
private List<List<PickingObjectDTO>> mGroupedPickingList;
private final List<OrdineVenditaGroupedInevasoDTO> mTestateOrdini;
private final List<MtbColt> mColliRegistrati;
private VenditaOrdineInevasoHelper mHelper;
private MainListOrdineVenditaInevasoAdapter mAdapter;
private GestioneEnum defaultGestioneOfUL = null;
private List<FiltroOrdineDTO> defaultFiltroOrdine = null;
public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List<PickingObjectDTO> pickingList, List<OrdineVenditaGroupedInevasoDTO> orders, List<MtbColt> 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<MtbColr> 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<OrdineAccettazioneDTO.Riga> 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<MtbColt>) 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;
}
}

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M14,10L2,10v2h12v-2zM14,6L2,6v2h12L14,6zM2,16h8v-2L2,14v2zM21.5,11.5L23,13l-6.99,7 -4.51,-4.5L13,14l3.01,3 5.49,-5.5z"/>
</vector>

View File

@ -12,7 +12,6 @@
android:orientation="vertical"
android:background="@color/full_white">
<it.integry.plugins.waterfalltoolbar.WaterfallToolbar
android:id="@+id/waterfall_toolbar"
android:layout_width="match_parent"
@ -25,11 +24,10 @@
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
<android.support.constraint.ConstraintLayout
xmlns:tools="http://schemas.android.com/tools"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.lista_bancali.ListaBancaliActivity">
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/lista_colli_main_list"
@ -38,6 +36,64 @@
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.constraint.ConstraintLayout>
</LinearLayout>
<android.support.constraint.ConstraintLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/lista_bancali_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
tools:context=".gest.lista_bancali.ListaBancaliActivity">
<android.support.constraint.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" />
<android.support.constraint.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<android.support.constraint.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<android.support.v7.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp"
android:adjustViewBounds="true"/>
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="Nessun bancale creato in precedenza"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
</RelativeLayout>
</LinearLayout>
</layout>

View File

@ -0,0 +1,150 @@
<layout>
<data>
<import type="android.view.View" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel.VenditaOrdineInevasoViewModel"/>
</data>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_gravity="top">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/empty_space_padding">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="?attr/colorPrimary">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
app:titleTextColor="@android:color/white"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/vendita_ordine_main_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/vendita_ordine_inevaso_fab"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:visibility="@{viewmodel.isFabVisible ? View.VISIBLE : View.GONE}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
fab:menu_animationDelayPerItem="50"
fab:menu_backgroundColor="@color/white_bg_alpha"
fab:menu_buttonSpacing="0dp"
fab:menu_colorNormal="@color/colorPrimary"
fab:menu_colorPressed="@color/colorPrimaryDark"
fab:menu_fab_size="normal"
fab:menu_labels_colorNormal="@color/white"
fab:menu_labels_colorPressed="@color/white_pressed"
fab:menu_labels_colorRipple="#66FFFFFF"
fab:menu_labels_cornerRadius="3dp"
fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
fab:menu_labels_margin="0dp"
fab:menu_labels_padding="8dp"
fab:menu_labels_paddingBottom="4dp"
fab:menu_labels_paddingLeft="8dp"
fab:menu_labels_paddingRight="8dp"
fab:menu_labels_paddingTop="4dp"
fab:menu_labels_position="left"
fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
fab:menu_labels_showShadow="true"
fab:menu_labels_textColor="@color/black_semi_transparent"
fab:menu_labels_textSize="18sp"
fab:menu_openDirection="up"
fab:menu_shadowColor="#66000000"
fab:menu_shadowRadius="4dp"
fab:menu_shadowXOffset="1dp"
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton
android:id="@+id/vendita_ordine_inevaso_fab_item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_box"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewmodel.showCreatedUL()}"
fab:fab_label="@string/action_show_created_ul" />
<com.github.clans.fab.FloatingActionButton
android:id="@+id/vendita_ordine_inevaso_fab_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add_24dp"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewmodel.createNewUL()}"
fab:fab_label="@string/action_create_ul" />
</com.github.clans.fab.FloatingActionMenu>
</android.support.design.widget.CoordinatorLayout>
<RelativeLayout
android:id="@+id/empty_space_padding"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}"
android:layout_alignParentBottom="true">
</RelativeLayout>
</RelativeLayout>
<View
android:id="@+id/shadow"
android:layout_width="match_parent"
android:layout_height="16dp"
android:background="@drawable/shape_gradient_top_shadow"
android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}"
app:layout_anchor="@id/bottom_sheet_include" />
<include
android:id="@+id/bottom_sheet_include"
layout="@layout/fragment_articoli_in_collo_bottom_sheet"></include>
</android.support.design.widget.CoordinatorLayout>
</layout>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_badge1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BADGE 1"
android:background="@drawable/badge1_round_corner"
android:textColor="@android:color/white"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:textStyle="bold"/>
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_badge2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BADGE 2"
android:background="@drawable/badge2_round_corner"
android:textColor="@android:color/white"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:layout_marginStart="8dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@color/green_700"
style="@android:style/TextAppearance.Medium"
android:text="@string/dispatched"/>
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_qta_evasa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:textStyle="bold"
android:textColor="@color/green_700"
style="@android:style/TextAppearance.Medium"
android:text="QTA"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@android:color/black"
style="@android:style/TextAppearance.Medium"
android:text=" / "/>
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_qta_tot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@android:color/black"
style="@android:style/TextAppearance.Medium"
android:text="QTA"/>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textSize="16sp"
android:textColor="@android:color/black"
android:text="DESCRIZIONE"/>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/mainGreen"
android:orientation="vertical">
<TextView
android:id="@+id/vendita_ordine_inevaso_main_list__descrizione_gruppo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="POSIZIONE"
android:padding="8dp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="end" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
android:id="@+id/vendita_ordine_inevaso_main_list__group_item_container"> </LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>

View File

@ -112,6 +112,7 @@
<string name="activity_lista_bancali_title">Lista UL</string>
<string name="activity_contenuto_bancale_title">Contenuto UL</string>
<string name="activity_vendita_inevaso_title">Spedizione merce</string>
<string name="button_ignore_print">Salta stampa</string>

View File

@ -120,6 +120,7 @@
<string name="activity_lista_bancali_title">LU List</string>
<string name="activity_contenuto_bancale_title">LU Content</string>
<string name="activity_vendita_inevaso_title">Shipping goods</string>
<string name="button_ignore_print">Skip print</string>