Refactoring elenco ultime consegne
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.core.rest;
|
package it.integry.integrywmsnative.core.rest;
|
||||||
|
|
||||||
|
import android.os.NetworkOnMainThreadException;
|
||||||
|
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.net.SocketTimeoutException;
|
import java.net.SocketTimeoutException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -32,9 +34,11 @@ public class CommonRESTException {
|
|||||||
public static String tryRecognizeThenGetMessage(Exception ex){
|
public static String tryRecognizeThenGetMessage(Exception ex){
|
||||||
|
|
||||||
if(ex instanceof SocketException){
|
if(ex instanceof SocketException){
|
||||||
return "Errore di comunicazione con il server remoto. Riprova.";
|
return "Errore di comunicazione con il server remoto. Riprova in un secondo momento.";
|
||||||
} else if(ex instanceof SocketTimeoutException){
|
} else if(ex instanceof SocketTimeoutException){
|
||||||
return "Errore di timeout durante la comunicazione con il server remoto. Riprova.";
|
return "Errore di timeout durante la comunicazione con il server remoto. Riprova in un secondo momento.";
|
||||||
|
} else if(ex instanceof NetworkOnMainThreadException){
|
||||||
|
return "Non puoi eseguire operazioni di rete sul thread principale.";
|
||||||
} else {
|
} else {
|
||||||
return ex.getMessage();
|
return ex.getMessage();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ package it.integry.integrywmsnative.core.rest.model;
|
|||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
||||||
|
|
||||||
public class DocumentoResoDTO {
|
public class DocumentoResoDTO {
|
||||||
|
|
||||||
@@ -14,13 +15,13 @@ public class DocumentoResoDTO {
|
|||||||
private String codAnag;
|
private String codAnag;
|
||||||
|
|
||||||
@SerializedName("counterConsegna")
|
@SerializedName("counterConsegna")
|
||||||
private int counterConsegna;
|
private long counterConsegna;
|
||||||
|
|
||||||
@SerializedName("codDtip")
|
@SerializedName("codDtip")
|
||||||
private String codDtip;
|
private String codDtip;
|
||||||
|
|
||||||
@SerializedName("dataDoc")
|
@SerializedName("dataDoc")
|
||||||
private String dataDoc;
|
private LocalDate dataDoc;
|
||||||
|
|
||||||
@SerializedName("serDoc")
|
@SerializedName("serDoc")
|
||||||
private String serDoc;
|
private String serDoc;
|
||||||
@@ -44,13 +45,13 @@ public class DocumentoResoDTO {
|
|||||||
private String rifOrd;
|
private String rifOrd;
|
||||||
|
|
||||||
@SerializedName("dataOrd")
|
@SerializedName("dataOrd")
|
||||||
private String dataOrd;
|
private LocalDate dataOrd;
|
||||||
|
|
||||||
@SerializedName("numOrd")
|
@SerializedName("numOrd")
|
||||||
private Integer numOrd;
|
private Integer numOrd;
|
||||||
|
|
||||||
@SerializedName("dataInizTrasp")
|
@SerializedName("dataInizTrasp")
|
||||||
private String dataInizTrasp;
|
private LocalDateTime dataInizTrasp;
|
||||||
|
|
||||||
@SerializedName("gestione")
|
@SerializedName("gestione")
|
||||||
private String gestione;
|
private String gestione;
|
||||||
@@ -58,7 +59,6 @@ public class DocumentoResoDTO {
|
|||||||
@SerializedName("codMdep")
|
@SerializedName("codMdep")
|
||||||
private String codMdep;
|
private String codMdep;
|
||||||
|
|
||||||
|
|
||||||
public BindableBoolean selected;
|
public BindableBoolean selected;
|
||||||
|
|
||||||
public DocumentoResoDTO() {
|
public DocumentoResoDTO() {
|
||||||
@@ -75,11 +75,11 @@ public class DocumentoResoDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCounterConsegna() {
|
public long getCounterConsegna() {
|
||||||
return counterConsegna;
|
return counterConsegna;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DocumentoResoDTO setCounterConsegna(int counterConsegna) {
|
public DocumentoResoDTO setCounterConsegna(long counterConsegna) {
|
||||||
this.counterConsegna = counterConsegna;
|
this.counterConsegna = counterConsegna;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -93,15 +93,12 @@ public class DocumentoResoDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDataDocS() {
|
public LocalDate getDataDoc() {
|
||||||
return dataDoc;
|
return dataDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getDataDocD() {
|
|
||||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataDocS());
|
|
||||||
}
|
|
||||||
|
|
||||||
public DocumentoResoDTO setDataDoc(String dataDoc) {
|
public DocumentoResoDTO setDataDoc(LocalDate dataDoc) {
|
||||||
this.dataDoc = dataDoc;
|
this.dataDoc = dataDoc;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -169,16 +166,12 @@ public class DocumentoResoDTO {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDataOrdS() {
|
public LocalDate getDataOrd() {
|
||||||
return dataOrd;
|
return getDataOrd();
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDataOrdD() {
|
|
||||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public DocumentoResoDTO setDataOrd(String dataOrd) {
|
public DocumentoResoDTO setDataOrd(LocalDate dataOrd) {
|
||||||
this.dataOrd = dataOrd;
|
this.dataOrd = dataOrd;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -191,16 +184,11 @@ public class DocumentoResoDTO {
|
|||||||
this.numOrd = numOrd;
|
this.numOrd = numOrd;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public LocalDateTime getDataInizTrasp() {
|
||||||
public String getDataInizTraspS() {
|
|
||||||
return dataInizTrasp;
|
return dataInizTrasp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getDataInizTraspD() {
|
public DocumentoResoDTO setDataInizTrasp(LocalDateTime dataInizTrasp) {
|
||||||
return UtilityDate.recognizeDateWithExceptionHandler(getDataInizTraspS());
|
|
||||||
}
|
|
||||||
|
|
||||||
public DocumentoResoDTO setDataInizTrasp(String dataInizTrasp) {
|
|
||||||
this.dataInizTrasp = dataInizTrasp;
|
this.dataInizTrasp = dataInizTrasp;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -235,4 +223,54 @@ public class DocumentoResoDTO {
|
|||||||
this.codMdep = codMdep;
|
this.codMdep = codMdep;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean equalsKey(DocumentoResoDTO that) {
|
||||||
|
return getNumDoc() == that.getNumDoc() &&
|
||||||
|
Objects.equals(getCodAnag(), that.getCodAnag()) &&
|
||||||
|
Objects.equals(getCodDtip(), that.getCodDtip()) &&
|
||||||
|
Objects.equals(getDataDoc(), that.getDataDoc()) &&
|
||||||
|
Objects.equals(getSerDoc(), that.getSerDoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
public int hashCodeKey() {
|
||||||
|
return Objects.hash(getCodAnag(),
|
||||||
|
getCodDtip(), getDataDoc(),
|
||||||
|
getSerDoc(), getNumDoc());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
DocumentoResoDTO that = (DocumentoResoDTO) o;
|
||||||
|
return getCounterConsegna() == that.getCounterConsegna() &&
|
||||||
|
getNumDoc() == that.getNumDoc() &&
|
||||||
|
Objects.equals(getCodAnag(), that.getCodAnag()) &&
|
||||||
|
Objects.equals(getCodDtip(), that.getCodDtip()) &&
|
||||||
|
Objects.equals(getDataDoc(), that.getDataDoc()) &&
|
||||||
|
Objects.equals(getSerDoc(), that.getSerDoc()) &&
|
||||||
|
Objects.equals(getDestinatario(), that.getDestinatario()) &&
|
||||||
|
Objects.equals(getIndirizzo(), that.getIndirizzo()) &&
|
||||||
|
Objects.equals(getRagSoc(), that.getRagSoc()) &&
|
||||||
|
Objects.equals(getCompilatoDa(), that.getCompilatoDa()) &&
|
||||||
|
Objects.equals(getRifOrd(), that.getRifOrd()) &&
|
||||||
|
Objects.equals(getDataOrd(), that.getDataOrd()) &&
|
||||||
|
Objects.equals(getNumOrd(), that.getNumOrd()) &&
|
||||||
|
Objects.equals(getDataInizTrasp(), that.getDataInizTrasp()) &&
|
||||||
|
Objects.equals(getGestione(), that.getGestione()) &&
|
||||||
|
Objects.equals(getCodMdep(), that.getCodMdep());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(getCodAnag(), getCounterConsegna(),
|
||||||
|
getCodDtip(), getDataDoc(),
|
||||||
|
getSerDoc(), getNumDoc(),
|
||||||
|
getDestinatario(), getIndirizzo(),
|
||||||
|
getRagSoc(), getCompilatoDa(),
|
||||||
|
getRifOrd(), getDataOrd(),
|
||||||
|
getNumOrd(), getDataInizTrasp(),
|
||||||
|
getGestione(), getCodMdep());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -310,8 +310,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
this.mAppliedFilterViewModel.getMutableFilteredOrderList().observe(getViewLifecycleOwner(), orderList -> {
|
this.mAppliedFilterViewModel.getMutableFilteredOrderList().observe(getViewLifecycleOwner(), orderList -> {
|
||||||
// Ottimizzato: creiamo la lista con separatori in un thread in background
|
// Ottimizzato: creiamo la lista con separatori in un thread in background
|
||||||
executorService.execute(() -> {
|
executorService.execute(() -> {
|
||||||
List<Object> listWithSeparators = new ArrayList<>();
|
List<Object> listWithSeparators;
|
||||||
String lastRagSoc = null;
|
String lastSeparator = null;
|
||||||
|
|
||||||
// Prealloca la lista per evitare ridimensionamenti costosi
|
// Prealloca la lista per evitare ridimensionamenti costosi
|
||||||
int estimatedSize = orderList.size() + (orderList.isEmpty() ? 0 : orderList.size() / 3);
|
int estimatedSize = orderList.size() + (orderList.isEmpty() ? 0 : orderList.size() / 3);
|
||||||
@@ -321,10 +321,10 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
|
|||||||
order.initEtichettaStatoColor(requireContext());
|
order.initEtichettaStatoColor(requireContext());
|
||||||
|
|
||||||
String currentRagSoc = order.getRagSocOrd();
|
String currentRagSoc = order.getRagSocOrd();
|
||||||
if (lastRagSoc == null || !lastRagSoc.equals(currentRagSoc)) {
|
if (lastSeparator == null || !lastSeparator.equals(currentRagSoc)) {
|
||||||
// Aggiungi un separatore quando cambia la ragione sociale
|
// Aggiungi un separatore quando cambia la ragione sociale
|
||||||
listWithSeparators.add(currentRagSoc);
|
listWithSeparators.add(currentRagSoc);
|
||||||
lastRagSoc = currentRagSoc;
|
lastSeparator = currentRagSoc;
|
||||||
}
|
}
|
||||||
listWithSeparators.add(order);
|
listWithSeparators.add(order);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui;
|
|
||||||
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.text.Html;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.core.content.res.ResourcesCompat;
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
|
||||||
import androidx.databinding.ObservableList;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.OnSingleClickListener;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerViewNew;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListGroupModelBinding;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModelBinding;
|
|
||||||
|
|
||||||
public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerViewNew<OrdiniUscitaElencoListModel, OrdiniUscitaElencoAdapter.SubheaderHolder, OrdiniUscitaElencoAdapter.SingleItemViewHolder> {
|
|
||||||
|
|
||||||
private final Context mContext;
|
|
||||||
// private final AsyncLayoutInflater asyncLayoutInflater;
|
|
||||||
private final LayoutInflater layoutInflater;
|
|
||||||
|
|
||||||
private RunnableArgs<String> mOnGroupItemClicked;
|
|
||||||
private RunnableArgs<OrdiniUscitaElencoListModel> mOnItemChecked;
|
|
||||||
|
|
||||||
private final int transparentColor;
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoAdapter(Context context, ObservableArrayList<OrdiniUscitaElencoListModel> mutableDataSet) {
|
|
||||||
super(mutableDataSet);
|
|
||||||
mContext = context;
|
|
||||||
layoutInflater = LayoutInflater.from(mContext);
|
|
||||||
transparentColor = ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null);
|
|
||||||
// asyncLayoutInflater = new AsyncLayoutInflater(mContext);
|
|
||||||
|
|
||||||
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback<OrdiniUscitaElencoListModel>() {
|
|
||||||
@Override
|
|
||||||
public void onChanged(ObservableList<OrdiniUscitaElencoListModel> sender) {
|
|
||||||
|
|
||||||
Map<String, List<OrdiniUscitaElencoListModel>> collect = sender.stream()
|
|
||||||
.collect(Collectors.groupingBy(OrdiniUscitaElencoListModel::getGroupTitle));
|
|
||||||
|
|
||||||
String[] keyArray = new String[collect.keySet().size()];
|
|
||||||
collect.keySet().toArray(keyArray);
|
|
||||||
|
|
||||||
var keyList = Arrays.asList(keyArray);
|
|
||||||
keyList.sort(String::compareTo);
|
|
||||||
setSections(keyList, collect);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
|
||||||
|
|
||||||
FragmentMainOrdiniUscitaListModelBinding mBinding;
|
|
||||||
|
|
||||||
SubheaderHolder(FragmentMainOrdiniUscitaListModelBinding binding) {
|
|
||||||
super(binding.getRoot());
|
|
||||||
this.mBinding = binding;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
|
|
||||||
FragmentMainOrdiniUscitaListGroupModelBinding mBinding;
|
|
||||||
|
|
||||||
SingleItemViewHolder(FragmentMainOrdiniUscitaListGroupModelBinding binding) {
|
|
||||||
super(binding.getRoot());
|
|
||||||
this.mBinding = binding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs<String> onGroupItemClicked) {
|
|
||||||
this.mOnGroupItemClicked = onGroupItemClicked;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoAdapter setOnItemChecked(RunnableArgs<OrdiniUscitaElencoListModel> onItemChecked) {
|
|
||||||
this.mOnItemChecked = onItemChecked;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OrdiniUscitaElencoAdapter.SubheaderHolder onCreateHeaderViewHolder(ViewGroup parent) {
|
|
||||||
FragmentMainOrdiniUscitaListModelBinding binding = FragmentMainOrdiniUscitaListModelBinding.inflate(layoutInflater, parent, false);
|
|
||||||
return new OrdiniUscitaElencoAdapter.SubheaderHolder(binding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OrdiniUscitaElencoAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent) {
|
|
||||||
FragmentMainOrdiniUscitaListGroupModelBinding binding = FragmentMainOrdiniUscitaListGroupModelBinding.inflate(layoutInflater, parent, false);
|
|
||||||
return new OrdiniUscitaElencoAdapter.SingleItemViewHolder(binding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindHeaderViewHolder(SubheaderHolder subheaderHolder, Object headerData, int nextItemPosition) {
|
|
||||||
String groupTitle = (String) headerData;
|
|
||||||
|
|
||||||
subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(groupTitle) ? View.GONE : View.VISIBLE);
|
|
||||||
subheaderHolder.mBinding.groupTitle.setText(Html.fromHtml(groupTitle));
|
|
||||||
|
|
||||||
subheaderHolder.mBinding.getRoot().setOnClickListener(new OnSingleClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onSingleClick(View v) {
|
|
||||||
if (mOnGroupItemClicked != null)
|
|
||||||
mOnGroupItemClicked.run(groupTitle);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, Object itemData, int sectionPosition, final int position) {
|
|
||||||
OrdiniUscitaElencoListModel listModel = (OrdiniUscitaElencoListModel) itemData;
|
|
||||||
|
|
||||||
// listModel.getSelectedObservable().resetOnPropertyChangedCallback();
|
|
||||||
//
|
|
||||||
// if (listModel.getEtichettaColor() != null)
|
|
||||||
// holder.mBinding.emptyView.setBackgroundColor(listModel.getEtichettaColor());
|
|
||||||
// else
|
|
||||||
// holder.mBinding.emptyView.setBackgroundColor(transparentColor);
|
|
||||||
//
|
|
||||||
// if (!UtilityString.isNullOrEmpty(listModel.getDescription())) {
|
|
||||||
// holder.mBinding.descrizione.setText(listModel.getDescriptionSpanned());
|
|
||||||
// holder.mBinding.descrizione.setVisibility(View.VISIBLE);
|
|
||||||
// } else holder.mBinding.descrizione.setVisibility(View.GONE);
|
|
||||||
//
|
|
||||||
// if (!UtilityString.isNullOrEmpty(listModel.getSubDescription())) {
|
|
||||||
// holder.mBinding.subDescrizione.setText(listModel.getSubDescriptionSpanned());
|
|
||||||
// holder.mBinding.subDescrizione.setVisibility(View.VISIBLE);
|
|
||||||
// } else holder.mBinding.subDescrizione.setVisibility(View.GONE);
|
|
||||||
//
|
|
||||||
// if (!UtilityString.isNullOrEmpty(listModel.getRightDescription())) {
|
|
||||||
// holder.mBinding.rightDescrizione.setText(listModel.getRightDescriptionSpanned());
|
|
||||||
// holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE);
|
|
||||||
// } else holder.mBinding.rightDescrizione.setVisibility(View.GONE);
|
|
||||||
//
|
|
||||||
// if (!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) {
|
|
||||||
// holder.mBinding.rightSubDescrizione.setText(listModel.getRightSubDescriptionSpanned());
|
|
||||||
// holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE);
|
|
||||||
// } else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE);
|
|
||||||
//
|
|
||||||
// holder.mBinding.setSelected(listModel.getSelectedObservable());
|
|
||||||
// holder.mBinding.executePendingBindings();
|
|
||||||
// holder.mBinding.checkbox.jumpDrawablesToCurrentState();
|
|
||||||
//
|
|
||||||
// listModel.getSelectedObservable().addOnPropertyChangedCallback(() -> {
|
|
||||||
// if (this.mOnItemChecked != null) this.mOnItemChecked.run(listModel);
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// holder.mBinding.getRoot().setOnClickListener(v -> {
|
|
||||||
// listModel.getSelectedObservable().set(!listModel.getSelectedObservable().get());
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui;
|
|
||||||
|
|
||||||
import android.text.Html;
|
|
||||||
import android.text.Spanned;
|
|
||||||
|
|
||||||
import androidx.annotation.ColorInt;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
|
||||||
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
|
|
||||||
|
|
||||||
public class OrdiniUscitaElencoListModel implements Cloneable {
|
|
||||||
private String groupTitle;
|
|
||||||
|
|
||||||
private String description;
|
|
||||||
private String subDescription;
|
|
||||||
private String rightDescription;
|
|
||||||
private String rightSubDescription;
|
|
||||||
|
|
||||||
private Spanned descriptionSpanned;
|
|
||||||
private Spanned subDescriptionSpanned;
|
|
||||||
private Spanned rightDescriptionSpanned;
|
|
||||||
private Spanned rightSubDescriptionSpanned;
|
|
||||||
|
|
||||||
private @ColorInt Integer etichettaColor;
|
|
||||||
|
|
||||||
private boolean hidden;
|
|
||||||
private BindableBoolean selected = new BindableBoolean();
|
|
||||||
|
|
||||||
|
|
||||||
private OrdiniUscitaElencoDTO originalModel;
|
|
||||||
|
|
||||||
|
|
||||||
public String getGroupTitle() {
|
|
||||||
return groupTitle;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setGroupTitle(String groupTitle) {
|
|
||||||
this.groupTitle = groupTitle;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
this.descriptionSpanned = description != null ? Html.fromHtml(description) : null;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubDescription() {
|
|
||||||
return subDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setSubDescription(String subDescription) {
|
|
||||||
this.subDescription = subDescription;
|
|
||||||
this.subDescriptionSpanned = subDescription != null ? Html.fromHtml(subDescription) : null;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRightDescription() {
|
|
||||||
return rightDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setRightDescription(String rightDescription) {
|
|
||||||
this.rightDescription = rightDescription;
|
|
||||||
this.rightDescriptionSpanned = rightDescription != null ? Html.fromHtml(rightDescription) : null;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRightSubDescription() {
|
|
||||||
return rightSubDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setRightSubDescription(String rightSubDescription) {
|
|
||||||
this.rightSubDescription = rightSubDescription;
|
|
||||||
this.rightSubDescriptionSpanned = rightSubDescription != null ? Html.fromHtml(rightSubDescription) : null;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public @ColorInt Integer getEtichettaColor() {
|
|
||||||
return etichettaColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setEtichettaColor(@ColorInt Integer etichettaColor) {
|
|
||||||
this.etichettaColor = etichettaColor;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isHidden() {
|
|
||||||
return hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setHidden(boolean hidden) {
|
|
||||||
this.hidden = hidden;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BindableBoolean getSelectedObservable() {
|
|
||||||
return selected;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoDTO getOriginalModel() {
|
|
||||||
return originalModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrdiniUscitaElencoListModel setOriginalModel(OrdiniUscitaElencoDTO originalModel) {
|
|
||||||
this.originalModel = originalModel;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spanned getDescriptionSpanned() {
|
|
||||||
return descriptionSpanned;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spanned getSubDescriptionSpanned() {
|
|
||||||
return subDescriptionSpanned;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spanned getRightDescriptionSpanned() {
|
|
||||||
return rightDescriptionSpanned;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Spanned getRightSubDescriptionSpanned() {
|
|
||||||
return rightSubDescriptionSpanned;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -38,7 +38,7 @@ public class PickingResiRESTConsumer {
|
|||||||
for(int i = 0; i < documents.size(); i++) {
|
for(int i = 0; i < documents.size(); i++) {
|
||||||
HashMap<String, Object> filter = new HashMap<>();
|
HashMap<String, Object> filter = new HashMap<>();
|
||||||
|
|
||||||
filter.put("data_doc", documents.get(i).getDataDocD());
|
filter.put("data_doc", documents.get(i).getDataDoc());
|
||||||
filter.put("num_doc", documents.get(i).getNumDoc());
|
filter.put("num_doc", documents.get(i).getNumDoc());
|
||||||
filter.put("ser_doc", documents.get(i).getSerDoc());
|
filter.put("ser_doc", documents.get(i).getSerDoc());
|
||||||
filter.put("cod_anag", documents.get(i).getCodAnag());
|
filter.put("cod_anag", documents.get(i).getCodAnag());
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
package it.integry.integrywmsnative.gest.picking_resi.rest;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -10,11 +12,18 @@ import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
|
|||||||
|
|
||||||
public class WithdrawableDtbDocr extends DtbDocr {
|
public class WithdrawableDtbDocr extends DtbDocr {
|
||||||
|
|
||||||
|
@SerializedName("gestione")
|
||||||
private String gestione;
|
private String gestione;
|
||||||
|
|
||||||
|
@SerializedName("withdrawRows")
|
||||||
private List<MtbColr> withdrawRows = new ArrayList<>();
|
private List<MtbColr> withdrawRows = new ArrayList<>();
|
||||||
|
|
||||||
|
@SerializedName("tempPickData")
|
||||||
private PickDataDTO tempPickData;
|
private PickDataDTO tempPickData;
|
||||||
|
|
||||||
|
@SerializedName("refMtbColt")
|
||||||
private MtbColt refMtbColt;
|
private MtbColt refMtbColt;
|
||||||
|
|
||||||
private boolean hidden = false;
|
private boolean hidden = false;
|
||||||
|
|
||||||
public WithdrawableDtbDocr() {
|
public WithdrawableDtbDocr() {
|
||||||
|
|||||||
@@ -12,9 +12,11 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.appcompat.widget.AppCompatTextView;
|
import androidx.appcompat.widget.AppCompatTextView;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||||
|
import com.ravikoradiya.liveadapter.Type;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -37,9 +39,12 @@ import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
|||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding;
|
||||||
|
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListHeaderBinding;
|
||||||
|
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListSingleItemBinding;
|
||||||
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity;
|
||||||
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoView;
|
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoView;
|
||||||
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
import it.integry.integrywmsnative.ui.ElevatedToolbar;
|
||||||
|
import kotlin.Unit;
|
||||||
|
|
||||||
public class UltimeConsegneClienteFragment extends BaseFragment implements UltimeConsegneClienteViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment {
|
public class UltimeConsegneClienteFragment extends BaseFragment implements UltimeConsegneClienteViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment {
|
||||||
|
|
||||||
@@ -108,30 +113,102 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
|
|||||||
|
|
||||||
|
|
||||||
public void openFilterDialog() {
|
public void openFilterDialog() {
|
||||||
this.mViewModel.loadCodAnagClienti(gtbAnags -> {
|
|
||||||
|
this.onLoadingStarted();
|
||||||
|
|
||||||
|
executorService.execute(() -> {
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<GtbAnag> gtbAnags = this.mViewModel.loadCodAnagClienti();
|
||||||
|
this.onLoadingEnded();
|
||||||
|
|
||||||
handler.post(() -> {
|
handler.post(() -> {
|
||||||
|
|
||||||
DialogUltimeConsegneFiltroAvanzatoView.newInstance(gtbAnags, filterResult -> {
|
DialogUltimeConsegneFiltroAvanzatoView.newInstance(gtbAnags, filterResult -> {
|
||||||
if (filterResult == null || filterResult.isAborted()) {
|
if (filterResult == null || filterResult.isAborted())
|
||||||
popMe();
|
popMe();
|
||||||
} else refreshConsegne(filterResult.getGtbAnag());
|
|
||||||
|
else
|
||||||
|
executorService.execute(() -> {
|
||||||
|
refreshConsegne(filterResult.getGtbAnag());
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.show(requireActivity().getSupportFragmentManager(), "dialog-filtro-ultime-consegne");
|
.show(requireActivity().getSupportFragmentManager(), "dialog-filtro-ultime-consegne");
|
||||||
|
|
||||||
});
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.onError(e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void initRecyclerView() {
|
private void initRecyclerView() {
|
||||||
UltimeConsegneMainListAdapter mAdapter =
|
|
||||||
new UltimeConsegneMainListAdapter(getActivity(), mDocumentiMutableData);
|
|
||||||
mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
var mutableListWithSeparators = new MutableLiveData<List<Object>>();
|
||||||
mAdapter.setEmptyView(mBindings.emptyView);
|
mViewModel.getDocuments().observe(getViewLifecycleOwner(), documentList -> {
|
||||||
|
executorService.execute(() -> {
|
||||||
|
String lastSeparator = null;
|
||||||
|
|
||||||
|
// Prealloca la lista per evitare ridimensionamenti costosi
|
||||||
|
int estimatedSize = documentList.size() + (documentList.isEmpty() ? 0 : documentList.size() / 3);
|
||||||
|
List<Object> listWithSeparators = new ArrayList<>(estimatedSize);
|
||||||
|
|
||||||
|
for (DocumentoResoDTO document : documentList) {
|
||||||
|
String currentRagSoc = document.getRagSoc();
|
||||||
|
if (lastSeparator == null || !lastSeparator.equals(currentRagSoc)) {
|
||||||
|
// Aggiungi un separatore quando cambia la ragione sociale
|
||||||
|
listWithSeparators.add(currentRagSoc);
|
||||||
|
lastSeparator = currentRagSoc;
|
||||||
|
}
|
||||||
|
listWithSeparators.add(document);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Object> finalList = listWithSeparators;
|
||||||
|
handler.post(() -> {
|
||||||
|
mutableListWithSeparators.setValue(finalList);
|
||||||
|
// refreshFabStatus();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var separatorType = new Type<String, FragmentMainUltimeConsegneClienteListHeaderBinding>(
|
||||||
|
R.layout.fragment_main_ultime_consegne_cliente__list_header,
|
||||||
|
it.integry.integrywmsnative.BR.item);
|
||||||
|
|
||||||
|
var orderElementItemType = new Type<DocumentoResoDTO, FragmentMainUltimeConsegneClienteListSingleItemBinding>(
|
||||||
|
R.layout.fragment_main_ultime_consegne_cliente__list_single_item,
|
||||||
|
it.integry.integrywmsnative.BR.item)
|
||||||
|
.areItemSame((item1, item2) -> item1.hashCodeKey() == item2.hashCodeKey() && item1.equalsKey(item2))
|
||||||
|
.areContentsTheSame((item1, item2) -> item1.hashCode() == item2.hashCode() && item1.equals(item2))
|
||||||
|
.onClick(holder -> {
|
||||||
|
this.onSingleSelectionChanged(holder.getBinding().getItem());
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
LiveAdapter liveAdapter = new LiveAdapter(mutableListWithSeparators, this)
|
||||||
|
.map(String.class, separatorType)
|
||||||
|
.map(DocumentoResoDTO.class, orderElementItemType)
|
||||||
|
.onNoData(x -> {
|
||||||
|
this.mBindings.emptyView.setVisibility(x ? View.VISIBLE : View.GONE);
|
||||||
|
return Unit.INSTANCE;
|
||||||
|
});
|
||||||
|
|
||||||
mBindings.recyclerView.setHasFixedSize(true);
|
mBindings.recyclerView.setHasFixedSize(true);
|
||||||
mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
mBindings.recyclerView.setItemViewCacheSize(20);
|
||||||
mBindings.recyclerView.setAdapter(mAdapter);
|
mBindings.recyclerView.setDrawingCacheEnabled(true);
|
||||||
|
mBindings.recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
|
||||||
|
|
||||||
|
liveAdapter.into(mBindings.recyclerView);
|
||||||
|
|
||||||
|
// UltimeConsegneMainListAdapter mAdapter =
|
||||||
|
// new UltimeConsegneMainListAdapter(getActivity(), mDocumentiMutableData);
|
||||||
|
// mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged);
|
||||||
|
// mAdapter.setEmptyView(mBindings.emptyView);
|
||||||
|
//
|
||||||
|
// mBindings.recyclerView.setAdapter(mAdapter);
|
||||||
|
|
||||||
|
|
||||||
if (mToolbar != null)
|
if (mToolbar != null)
|
||||||
@@ -164,11 +241,17 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
|
|||||||
private void refreshConsegne(GtbAnag gtbAnag) {
|
private void refreshConsegne(GtbAnag gtbAnag) {
|
||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
this.mViewModel.loadConsegneClienti(gtbAnag != null ? gtbAnag.getCodAnag() : null,
|
this.mViewModel.loadConsegneClienti(gtbAnag != null ? gtbAnag.getCodAnag() : null,
|
||||||
null,
|
null,
|
||||||
-1,
|
null,
|
||||||
548
|
548
|
||||||
);
|
);
|
||||||
|
this.onLoadingEnded();
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.onError(e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,6 +265,7 @@ public class UltimeConsegneClienteFragment extends BaseFragment implements Ultim
|
|||||||
|
|
||||||
|
|
||||||
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
private void onSingleSelectionChanged(DocumentoResoDTO dto) {
|
||||||
|
dto.setSelected(!dto.isSelected());
|
||||||
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
List<DocumentoResoDTO> selectedOrders = getSelectedItems();
|
||||||
|
|
||||||
if (dto.isSelected()) {
|
if (dto.isSelected()) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import javax.inject.Singleton;
|
|||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
@@ -14,8 +15,8 @@ public class UltimeConsegneClienteModule {
|
|||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Provides
|
@Provides
|
||||||
UltimeConsegneClienteRESTConsumer providesUltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
UltimeConsegneClienteRESTConsumer providesUltimeConsegneClienteRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||||
return new UltimeConsegneClienteRESTConsumer(systemRESTConsumer);
|
return new UltimeConsegneClienteRESTConsumer(restBuilder, systemRESTConsumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -48,25 +49,17 @@ public class UltimeConsegneClienteViewModel {
|
|||||||
this.mCodMdep = codMdep;
|
this.mCodMdep = codMdep;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadCodAnagClienti(RunnableArgs<List<GtbAnag>> onComplete) {
|
public List<GtbAnag> loadCodAnagClienti() throws Exception {
|
||||||
this.sendOnLoadingStarted();
|
var gtbAnags = this.mUltimeConsegneClienteRESTConsumer.makeSynchronousRetrieveAvailableCodAnagClientiRequest();
|
||||||
|
|
||||||
this.mUltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> {
|
|
||||||
mGtbAnagClienti.postValue(gtbAnags);
|
mGtbAnagClienti.postValue(gtbAnags);
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
|
|
||||||
onComplete.run(gtbAnags);
|
return gtbAnags;
|
||||||
}, this::sendError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void loadConsegneClienti(String codAnag, String codMart, int limitDocsForCli, int limitDays) {
|
public void loadConsegneClienti(String codAnag, String codMart, Integer limitDocsForCli, int limitDays) throws Exception {
|
||||||
this.sendOnLoadingStarted();
|
var documentList = this.mUltimeConsegneClienteRESTConsumer.makeSynchronousRetrieveUltimeConsegneClientiRequest(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays);
|
||||||
|
|
||||||
this.mUltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> {
|
|
||||||
this.mDocuments.postValue(documentList);
|
this.mDocuments.postValue(documentList);
|
||||||
this.sendOnLoadingEnded();
|
|
||||||
}, this::sendError);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -149,11 +142,11 @@ public class UltimeConsegneClienteViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public MutableLiveData<List<GtbAnag>> getGtbAnagClienti() {
|
public LiveData<List<GtbAnag>> getGtbAnagClienti() {
|
||||||
return mGtbAnagClienti;
|
return mGtbAnagClienti;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MutableLiveData<List<DocumentoResoDTO>> getDocuments() {
|
public LiveData<List<DocumentoResoDTO>> getDocuments() {
|
||||||
return mDocuments;
|
return mDocuments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,138 +0,0 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.databinding.DataBindingUtil;
|
|
||||||
import androidx.databinding.ObservableArrayList;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView;
|
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListHeaderBinding;
|
|
||||||
import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListSingleItemBinding;
|
|
||||||
|
|
||||||
public class UltimeConsegneMainListAdapter extends ExtendedSectionedRecyclerView<DocumentoResoDTO, UltimeConsegneMainListAdapter.SubheaderHolder, UltimeConsegneMainListAdapter.SingleItemViewHolder> {
|
|
||||||
|
|
||||||
private Context mContext;
|
|
||||||
private RunnableArgs<DocumentoResoDTO> mOnSelectionChanged;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static class SubheaderHolder extends RecyclerView.ViewHolder {
|
|
||||||
|
|
||||||
FragmentMainUltimeConsegneClienteListHeaderBinding mBinding;
|
|
||||||
|
|
||||||
SubheaderHolder(FragmentMainUltimeConsegneClienteListHeaderBinding binding) {
|
|
||||||
super(binding.getRoot());
|
|
||||||
this.mBinding = binding;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
|
|
||||||
FragmentMainUltimeConsegneClienteListSingleItemBinding mBinding;
|
|
||||||
|
|
||||||
SingleItemViewHolder(FragmentMainUltimeConsegneClienteListSingleItemBinding binding) {
|
|
||||||
super(binding.getRoot());
|
|
||||||
this.mBinding = binding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public UltimeConsegneMainListAdapter(Context context, ObservableArrayList<DocumentoResoDTO> mutableDataSet) {
|
|
||||||
super(mutableDataSet);
|
|
||||||
this.mContext = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
|
|
||||||
FragmentMainUltimeConsegneClienteListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ultime_consegne_cliente__list_single_item, parent, false);
|
|
||||||
return new SingleItemViewHolder(binding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
|
|
||||||
FragmentMainUltimeConsegneClienteListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_main_ultime_consegne_cliente__list_header, parent, false);
|
|
||||||
return new SubheaderHolder(binding);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
|
|
||||||
final DocumentoResoDTO consegna = this.originalItems.get(position);
|
|
||||||
|
|
||||||
holder.mBinding.setConsegna(consegna);
|
|
||||||
|
|
||||||
holder.mBinding.descriptionMain.setText(UtilityString.isNullOrEmpty(consegna.getIndirizzo()) ? "" : consegna.getIndirizzo());
|
|
||||||
|
|
||||||
if(consegna.getDataInizTraspD() != null) {
|
|
||||||
holder.mBinding.subDescriptionMain.setText(String.format(mContext.getText(R.string.shipped_on).toString(), UtilityDate.formatDate(consegna.getDataInizTraspD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
|
|
||||||
}
|
|
||||||
|
|
||||||
holder.mBinding.badge1.setText(String.valueOf(consegna.getNumDoc()));
|
|
||||||
|
|
||||||
try {
|
|
||||||
Calendar calendarNow = UtilityDate.getCalendarInstance();
|
|
||||||
Calendar calendarDataDoc = UtilityDate.getCalendarInstance();
|
|
||||||
calendarDataDoc.setTime(consegna.getDataDocD());
|
|
||||||
|
|
||||||
String dataDocString = "";
|
|
||||||
|
|
||||||
if(calendarDataDoc.get(Calendar.YEAR) == calendarNow.get(Calendar.YEAR)) {
|
|
||||||
dataDocString = UtilityDate.formatDate(consegna.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN);
|
|
||||||
} else {
|
|
||||||
dataDocString = UtilityDate.formatDate(consegna.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN);
|
|
||||||
}
|
|
||||||
|
|
||||||
holder.mBinding.date.setText(dataDocString);
|
|
||||||
|
|
||||||
|
|
||||||
holder.mBinding.compilatoDa.setText(consegna.getCompilatoDa());
|
|
||||||
holder.mBinding.compilatoDa.setVisibility(UtilityString.isNullOrEmpty(consegna.getCompilatoDa()) ? View.GONE : View.VISIBLE);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
UtilityExceptions.defaultException(mContext, ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
holder.mBinding.getRoot().setOnClickListener(v -> {
|
|
||||||
consegna.setSelected(!consegna.isSelected());
|
|
||||||
|
|
||||||
if(this.mOnSelectionChanged != null) mOnSelectionChanged.run(consegna);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
|
|
||||||
subheaderHolder.mBinding.title.setText(this.originalItems.get(nextItemPosition).getRagSoc());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
|
||||||
|
|
||||||
if(!this.originalItems.get(position).getCodAnag().equalsIgnoreCase(this.originalItems.get(position+1).getCodAnag())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void setOnSelectionChanged(RunnableArgs<DocumentoResoDTO> mSelectionChanged) {
|
|
||||||
this.mOnSelectionChanged = mSelectionChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,67 +1,44 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest;
|
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest;
|
||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
||||||
import it.integry.integrywmsnative.core.model.GtbAnag;
|
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||||
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
|
||||||
|
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
|
||||||
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDB;
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class UltimeConsegneClienteRESTConsumer {
|
public class UltimeConsegneClienteRESTConsumer extends _BaseRESTConsumer {
|
||||||
|
|
||||||
|
private final RESTBuilder restBuilder;
|
||||||
private final SystemRESTConsumer systemRESTConsumer;
|
private final SystemRESTConsumer systemRESTConsumer;
|
||||||
|
|
||||||
public UltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
|
public UltimeConsegneClienteRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
|
||||||
|
this.restBuilder = restBuilder;
|
||||||
this.systemRESTConsumer = systemRESTConsumer;
|
this.systemRESTConsumer = systemRESTConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getAvailableCodAnagClienti(RunnableArgs<List<GtbAnag>> onComplete, RunnableArgs<Exception> onFailed) {
|
public List<GtbAnag> makeSynchronousRetrieveAvailableCodAnagClientiRequest() throws Exception {
|
||||||
String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " +
|
|
||||||
"FROM gtb_anag " +
|
|
||||||
"INNER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag " +
|
|
||||||
"WHERE flag_stato = 'A'";
|
|
||||||
|
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {
|
var response = restBuilder.getService(UltimeConsegneClienteRESTConsumerService.class)
|
||||||
}.getType();
|
.retrieveClienti()
|
||||||
systemRESTConsumer.<ArrayList<GtbAnag>>processSql(sql, typeOfObjectsList, value -> {
|
.execute();
|
||||||
if (onComplete != null) onComplete.run(value);
|
|
||||||
}, ex -> {
|
var data = analyzeAnswerList(response, "retrieve-clienti");
|
||||||
if (onFailed != null) onFailed.run(ex);
|
return data;
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs<ArrayList<DocumentoResoDTO>> onComplete, RunnableArgs<Exception> onFailed) {
|
public List<DocumentoResoDTO> makeSynchronousRetrieveUltimeConsegneClientiRequest(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays) throws Exception {
|
||||||
|
|
||||||
String sql = "SELECT consegne.*, " +
|
var response = restBuilder.getService(UltimeConsegneClienteRESTConsumerService.class)
|
||||||
" rag_soc," +
|
.retrieveUltimeConsegne(codMdep, codAnag, codMart, limitConsegnePerCli, limitDays)
|
||||||
" dtb_doct.gestione " +
|
.execute();
|
||||||
"FROM WMS_GetUltimeConsegneClienti(" +
|
|
||||||
UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " +
|
|
||||||
UtilityDB.valueToString(codAnag) + ", " +
|
|
||||||
UtilityDB.valueToString(codMart) + ", " +
|
|
||||||
UtilityDB.valueToString(codMdep) + ", " +
|
|
||||||
UtilityDB.valueToString(limitDays) + ") consegne " +
|
|
||||||
"INNER JOIN dtb_doct ON consegne.num_doc = dtb_doct.num_doc AND consegne.data_doc = dtb_doct.data_doc AND consegne.cod_anag = dtb_doct.cod_anag AND consegne.cod_dtip = dtb_doct.cod_dtip AND consegne.ser_doc = dtb_doct.ser_doc " +
|
|
||||||
"LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " +
|
|
||||||
"ORDER BY rag_soc, " +
|
|
||||||
" counter_consegna ";
|
|
||||||
|
|
||||||
|
var data = analyzeAnswer(response, "retrieve-ultime-consegne-clienti");
|
||||||
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {
|
return data.getDocuments() == null ? List.of() : data.getDocuments();
|
||||||
}.getType();
|
|
||||||
systemRESTConsumer.<ArrayList<DocumentoResoDTO>>processSql(sql, typeOfObjectsList, value -> {
|
|
||||||
if (onComplete != null) onComplete.run(value);
|
|
||||||
}, ex -> {
|
|
||||||
if (onFailed != null) onFailed.run(ex);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,22 @@
|
|||||||
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest;
|
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.model.GtbAnag;
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
|
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.dto.RetrieveUltimeConsegneClienteResponseDTO;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.http.GET;
|
||||||
|
import retrofit2.http.Query;
|
||||||
|
|
||||||
public interface UltimeConsegneClienteRESTConsumerService {
|
public interface UltimeConsegneClienteRESTConsumerService {
|
||||||
|
|
||||||
|
@GET("wms/resi-clienti/retrieve-clienti")
|
||||||
|
Call<ServiceRESTResponse<GtbAnag>> retrieveClienti();
|
||||||
|
|
||||||
|
@GET("wms/resi-clienti/retrieve-ultime-consegne")
|
||||||
|
Call<ServiceRESTResponse<RetrieveUltimeConsegneClienteResponseDTO>> retrieveUltimeConsegne(@Query("codMdep") String codMdep,
|
||||||
|
@Query("codAnag") String codAnag,
|
||||||
|
@Query("codMart") String codMart,
|
||||||
|
@Query("limitConsegnePerCli") Integer limitConsegnePerCli,
|
||||||
|
@Query("limitDays") Integer limitDays);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.dto;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
|
||||||
|
|
||||||
|
public class RetrieveUltimeConsegneClienteResponseDTO {
|
||||||
|
|
||||||
|
@SerializedName("documents")
|
||||||
|
private List<DocumentoResoDTO> documents;
|
||||||
|
|
||||||
|
|
||||||
|
public List<DocumentoResoDTO> getDocuments() {
|
||||||
|
return documents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RetrieveUltimeConsegneClienteResponseDTO setDocuments(List<DocumentoResoDTO> documents) {
|
||||||
|
this.documents = documents;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,7 +9,6 @@ import androidx.databinding.DataBindingUtil;
|
|||||||
import androidx.databinding.ObservableArrayList;
|
import androidx.databinding.ObservableArrayList;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.R;
|
import it.integry.integrywmsnative.R;
|
||||||
@@ -85,16 +84,12 @@ public class UltimiArriviFornitoreListAdapter extends ExtendedSectionedRecyclerV
|
|||||||
holder.mBinding.badge1.setText(numDoc);
|
holder.mBinding.badge1.setText(numDoc);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Calendar calendarNow = UtilityDate.getCalendarInstance();
|
|
||||||
Calendar calendarDataDoc = UtilityDate.getCalendarInstance();
|
|
||||||
calendarDataDoc.setTime(consegna.getDataDocD());
|
|
||||||
|
|
||||||
String dataDocString = "";
|
String dataDocString = "";
|
||||||
|
|
||||||
if(calendarDataDoc.get(Calendar.YEAR) == calendarNow.get(Calendar.YEAR)) {
|
if(consegna.getDataDoc().getYear() == UtilityDate.getNow().getYear()) {
|
||||||
dataDocString = UtilityDate.formatDate(consegna.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN);
|
dataDocString = UtilityDate.formatDate(consegna.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DM_HUMAN);
|
||||||
} else {
|
} else {
|
||||||
dataDocString = UtilityDate.formatDate(consegna.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN);
|
dataDocString = UtilityDate.formatDate(consegna.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.mBinding.date.setText(dataDocString);
|
holder.mBinding.date.setText(dataDocString);
|
||||||
|
|||||||
@@ -31,14 +31,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
android:paddingEnd="4dp"/>
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
tools:listitem="@layout/fragment_main_ultime_consegne_cliente__list_single_item"/>
|
||||||
<!-- <it.integry.integrywmsnative.ui.fastscroll.FastScroller-->
|
|
||||||
<!-- android:id="@+id/fastscroll"-->
|
|
||||||
<!-- android:orientation="vertical"-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:layout_alignParentEnd="true"/>-->
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/empty_view"
|
android:id="@+id/empty_view"
|
||||||
|
|||||||
@@ -1,42 +1,38 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
|
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<data>
|
||||||
|
<variable
|
||||||
|
name="item"
|
||||||
|
type="String" />
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="2dp"
|
android:layout_marginStart="2dp"
|
||||||
android:layout_marginEnd="2dp"
|
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="2dp"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
app:cardElevation="0dp"
|
app:cardBackgroundColor="@color/gray_200"
|
||||||
app:cardCornerRadius="4dp">
|
app:cardCornerRadius="4dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:paddingStart="8dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="8dp"
|
|
||||||
android:background="@color/gray_200">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.ListDivider"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/AppTheme.NewMaterial.Text.ListDivider"
|
|
||||||
android:textAllCaps="true"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
|
android:layout_margin="8dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textStyle="bold"
|
android:textAllCaps="true"
|
||||||
android:textColor="@android:color/black"
|
android:textColor="@android:color/black"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:text="@{item}"
|
||||||
tools:text="Title here" />
|
tools:text="Title here" />
|
||||||
</RelativeLayout>
|
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
</layout>
|
</layout>
|
||||||
@@ -1,98 +1,139 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
|
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
|
||||||
<import type="it.integry.integrywmsnative.R" />
|
<import type="it.integry.integrywmsnative.R" />
|
||||||
<variable
|
<variable
|
||||||
name="consegna"
|
name="item"
|
||||||
type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" />
|
type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<RelativeLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginVertical="3dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginHorizontal="4dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:padding="6dp"
|
||||||
android:paddingStart="8dp"
|
|
||||||
android:paddingEnd="8dp"
|
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="8dp"
|
|
||||||
android:background="@drawable/bg_checked_layout"
|
android:background="@drawable/bg_checked_layout"
|
||||||
app:backgroundTintResID="@{consegna.selected.get() ? R.color.bg_checked_layout : android.R.color.transparent}" >
|
app:backgroundTintResID="@{item.selected.get() ? R.color.bg_checked_layout : android.R.color.transparent}">
|
||||||
|
|
||||||
|
<!-- Riga Superiore -->
|
||||||
|
<com.google.android.material.chip.Chip
|
||||||
|
android:id="@+id/textViewNumeroDocumento"
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/badge1"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
tools:text="BADGE 1"
|
app:ensureMinTouchTargetSize="false"
|
||||||
android:background="@drawable/badge_round_corner"
|
app:chipBackgroundColor="?attr/colorPrimaryContainer"
|
||||||
android:backgroundTint="?colorPrimary"
|
app:textStartPadding="0dp"
|
||||||
android:textColor="@android:color/white"
|
app:textEndPadding="0dp"
|
||||||
android:paddingTop="2dp"
|
app:chipMinHeight="0dp"
|
||||||
android:paddingBottom="2dp"
|
android:paddingVertical="4dp"
|
||||||
android:paddingLeft="6dp"
|
android:text="@{String.valueOf(item.numDoc)}"
|
||||||
android:paddingRight="6dp"
|
android:textColor="?attr/colorOnPrimaryContainer"
|
||||||
android:textStyle="bold"/>
|
android:textSize="12sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:chipStrokeColor="?attr/colorOnPrimaryContainer"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:text="NUM DOC" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<TextView
|
||||||
android:id="@+id/description_main"
|
android:id="@+id/textViewDataDocumento"
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textColor="@android:color/black"
|
|
||||||
style="@android:style/TextAppearance.Small"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
android:layout_toStartOf="@id/date"
|
|
||||||
android:layout_toEndOf="@id/badge1"
|
|
||||||
android:layout_marginStart="4dp"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:singleLine="true"
|
|
||||||
tools:text="TITLE"/>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/date"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
style="@style/AppTheme.NewMaterial.Text"
|
style="@style/AppTheme.NewMaterial.Text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@color/colorPrimaryGray"
|
android:textColor="@color/colorPrimaryGray"
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
app:dateFormat="@{UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN}"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBaseline_toBaselineOf="@id/textViewNumeroDocumento"
|
||||||
|
app:localDateText="@{item.dataDoc}"
|
||||||
tools:text="13 Apr" />
|
tools:text="13 Apr" />
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/textViewIndirizzo"
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/description_main"
|
|
||||||
android:layout_toStartOf="@id/compilato_da"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/sub_description_main"
|
|
||||||
style="@android:style/TextAppearance.Small"
|
style="@android:style/TextAppearance.Small"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:singleLine="true"
|
android:maxLines="1"
|
||||||
tools:text="SUB TITLE" />
|
android:text="@{item.indirizzo}"
|
||||||
</LinearLayout>
|
android:textColor="@android:color/black"
|
||||||
|
app:layout_constraintBaseline_toBaselineOf="@id/textViewNumeroDocumento"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/textViewDataDocumento"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/textViewNumeroDocumento"
|
||||||
|
app:visibilityWhenNotNull="@{item.indirizzo}"
|
||||||
|
tools:text="Via Esempio Lungo, 123 - Città (Prov)" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.constraintlayout.widget.Barrier
|
||||||
android:id="@+id/compilato_da"
|
android:id="@+id/barrierRigaSuperiore"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
style="@style/AppTheme.NewMaterial.Text.Badge"
|
app:barrierDirection="bottom"
|
||||||
android:layout_marginTop="4dp"
|
app:constraint_referenced_ids="textViewNumeroDocumento,textViewIndirizzo,textViewDataDocumento" />
|
||||||
android:layout_below="@id/date"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:textSize="12sp"
|
|
||||||
tools:text="Nome Cognome"/>
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
|
<!-- Riga Inferiore -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewDataSpedizioneLabel"
|
||||||
|
style="@style/TextAppearance.MaterialComponents.Caption"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:text="@string/shipped_on"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/barrierRigaSuperiore"
|
||||||
|
app:visibilityWhenNotNull="@{item.dataInizTrasp}"
|
||||||
|
tools:visibility="visible"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewDataSpedizioneValue"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
app:dateFormat="@{UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN}"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/textViewDataSpedizioneLabel"
|
||||||
|
app:layout_constraintBaseline_toBaselineOf="@id/textViewDataSpedizioneLabel"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/guidelineCentro"
|
||||||
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
|
app:localDateTimeText="@{item.dataInizTrasp}"
|
||||||
|
app:visibilityWhenNotNull="@{item.dataInizTrasp}"
|
||||||
|
tools:text="20 Mag 2023" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guidelineCentro"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.60" />
|
||||||
|
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewCompilatoDaValue"
|
||||||
|
style="@style/AppTheme.NewMaterial.Text.Badge"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="@{item.compilatoDa}"
|
||||||
|
android:textSize="12sp"
|
||||||
|
android:textColor="?android:attr/textColorPrimary"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/barrierRigaSuperiore"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
app:visibilityWhenNotNull="@{item.compilatoDa}"
|
||||||
|
tools:text="Mario Rossi" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
</layout>
|
||||||
@@ -366,7 +366,7 @@
|
|||||||
<string name="not_valid_customer_error">Cliente non valido</string>
|
<string name="not_valid_customer_error">Cliente non valido</string>
|
||||||
<string name="not_valid_recipient_error">Destinatario non valido</string>
|
<string name="not_valid_recipient_error">Destinatario non valido</string>
|
||||||
|
|
||||||
<string name="shipped_on">Spedito il %s</string>
|
<string name="shipped_on">Spedito il</string>
|
||||||
<string name="delivered_on">Consegnato il %s</string>
|
<string name="delivered_on">Consegnato il %s</string>
|
||||||
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
|
<string name="title_dynamic_frudis">Personalizzazioni Frudis</string>
|
||||||
|
|
||||||
|
|||||||
@@ -370,7 +370,7 @@
|
|||||||
<string name="not_valid_customer_error">Invalid customer</string>
|
<string name="not_valid_customer_error">Invalid customer</string>
|
||||||
<string name="not_valid_recipient_error">Invalid recipient</string>
|
<string name="not_valid_recipient_error">Invalid recipient</string>
|
||||||
|
|
||||||
<string name="shipped_on">Shipped %s</string>
|
<string name="shipped_on">Shipped</string>
|
||||||
<string name="delivered_on">Delivered on %s</string>
|
<string name="delivered_on">Delivered on %s</string>
|
||||||
<string name="title_dynamic_frudis">Frudis customizations</string>
|
<string name="title_dynamic_frudis">Frudis customizations</string>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user