From 836a5c186b02adb3287af4df9560a6f791cf6032 Mon Sep 17 00:00:00 2001
From: GiuseppeS
Date: Thu, 27 Jun 2019 08:22:16 +0200
Subject: [PATCH 1/6] Primo refactoring
---
.../integrywmsnative/MainActivity.java | 8 +-
.../gest/main/MainFragment.java | 8 +-
.../gest/vendita/MainVenditaFragment.java | 8 +-
.../vendita/core/MainListVenditaAdapter.java | 29 ++-
.../core/MainListVenditaAdapterNew.java | 199 ++++++++++++++++++
.../vendita/dto/OrdineVenditaInevasoDTO.java | 29 ++-
app/src/main/res/layout/fragment_main.xml | 74 +++----
.../layout/vendita_main_list_group_model.xml | 109 +++++-----
.../res/layout/vendita_main_list_model.xml | 5 +-
9 files changed, 361 insertions(+), 108 deletions(-)
create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
index 01e44f3c..7bcacf66 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java
@@ -157,10 +157,10 @@ public class MainActivity extends AppCompatActivity
fragment = PickingLiberoFragment.newInstance();
this.adaptViewToFragment(fragment);
}
-// else if (id == R.id.nav_resi_cliente) {
-// fragment = UltimeConsegneClienteFragment.newInstance();
-// this.adaptViewToFragment(fragment);
-// }
+ else if (id == R.id.nav_resi_cliente) {
+ fragment = UltimeConsegneClienteFragment.newInstance();
+ this.adaptViewToFragment(fragment);
+ }
else if (id == R.id.nav_prod_versamento_materiale) {
fragment = ProdVersamentoMaterialeFragment.newInstance();
this.adaptViewToFragment(fragment);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
index 9d21b9d4..de79415a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java
@@ -217,10 +217,10 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
((MainActivity) getActivity()).setItem(R.id.nav_free_picking);
}
-// @OnClick(R.id.fast_button_resi_clienti)
-// public void onClickResiClientio(View view) {
-// ((MainActivity) getActivity()).setItem(R.id.nav_resi_cliente);
-// }
+ @OnClick(R.id.fast_button_resi_clienti)
+ public void onClickResiClientio(View view) {
+ ((MainActivity) getActivity()).setItem(R.id.nav_resi_cliente);
+ }
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index 69d09f42..ab6dc603 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
+import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapterNew;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel;
@@ -63,7 +64,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
private FragmentMainVenditaBinding mBinding = null;
private VenditaViewModel mViewModel;
- private MainListVenditaAdapter mAdapter;
+ private MainListVenditaAdapterNew mAdapter;
private List mOriginalOrderList;
private List groupedOrdiniInevasi;
@@ -272,12 +273,13 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
}
private void initRecyclerView() {
- mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
+// mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
+ mAdapter = new MainListVenditaAdapterNew(getActivity(), mOriginalOrderList, onGroupSelectionChanged, onSingleSelectionChanged);
mBinding.venditaMainList.setAdapter(mAdapter);
}
public void refreshRecyclerView() {
- mAdapter.updateItems(groupedOrdiniInevasi);
+ mAdapter.updateItems(mOriginalOrderList);
}
private RunnableArgs onSingleSelectionChanged = dto -> {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
index 9cbb5e1a..a4f1640e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
@@ -105,6 +105,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter subGroupClienti = ordine.clienti;
@@ -188,9 +196,18 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter implements SectionTitleProvider {
+
+ private Context mContext;
+
+
+ private List mDataset;
+ private HashMap mCheckBoxes = new HashMap<>();
+ private RunnableArgs mOnGroupSelected;
+ private RunnableArgs mOnSingleSelectionChanged;
+
+
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ VenditaMainListModelBinding binding;
+
+ SubheaderHolder(VenditaMainListModelBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ VenditaMainListGroupModelBinding binding;
+
+ SingleItemViewHolder(VenditaMainListGroupModelBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+ }
+
+
+ public MainListVenditaAdapterNew(Context context, List myDataset, RunnableArgs onGroupSelected, RunnableArgs onSingleSelectionChanged) {
+ mContext = context;
+ mDataset = orderItems(myDataset);
+ mOnGroupSelected = onGroupSelected;
+ mOnSingleSelectionChanged = onSingleSelectionChanged;
+ }
+
+ public void updateItems(List updatedDataset) {
+ mDataset.clear();
+ mDataset.addAll(orderItems(updatedDataset));
+ notifyDataSetChanged();
+ }
+
+
+ private List orderItems(List dataset) {
+
+ Stream.of(dataset)
+ .forEach(x -> {
+
+ //if(!mCheckBoxes.containsKey(key)) {
+ mCheckBoxes.put((OrdineListModel)x, false);
+ //} else {
+ //mCheckBoxes.get(key) = false;
+ //}
+
+
+
+ });
+
+ return Stream.of(dataset)
+ .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
+ .toList();
+
+ }
+
+
+
+ @Override
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false);
+ return new SubheaderHolder(binding);
+ }
+
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
+
+
+ @Override
+ public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
+ subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
+
+ subheaderHolder.binding.getRoot().setOnClickListener(v -> {
+ Stream.of(mCheckBoxes)
+ .filter(x -> x.getKey().equals(mDataset.get(nextItemPosition)))
+ .forEach(x -> mCheckBoxes.put(x.getKey(), true));
+ });
+ }
+
+ @Override
+ public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
+
+
+ OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
+
+ holder.binding.emptyView.setBackgroundColor(Color.RED);
+
+ String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
+
+ String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString));
+
+ holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd());
+
+
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(mCheckBoxes.get(ordine));
+
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ mCheckBoxes.put((OrdineListModel) ordine, isChecked);
+ });
+ }
+
+
+
+ @Override
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+ if(!this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position+1).getRagSocOrd())) {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public int getItemSize() {
+ return mDataset.size();
+ }
+
+ @Override
+ public String getSectionTitle(int position) {
+ return null;
+ }
+
+
+ private static class OrdineListModel extends OrdineVenditaInevasoDTO {
+
+ protected OrdineListModel(Parcel in) {
+ super(in);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o;
+
+ if (!getDataOrdS().equals(that.getDataOrdS())) return false;
+ if (!getNumOrd().equals(that.getNumOrd())) return false;
+ if (!getGestione().equals(that.getGestione())) return false;
+ return getDataConsS().equals(that.getDataConsS());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getDataOrdS().hashCode();
+ result = 31 * result + getNumOrd().hashCode();
+ result = 31 * result + getGestione().hashCode();
+ result = 31 * result + getDataConsS().hashCode();
+ return result;
+ }
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
index be0e091b..74d81e1d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
@@ -163,9 +163,14 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
return data;
}
- public Date getDataOrdD() throws ParseException {
+ public Date getDataOrdD() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
- return sdf.parse(getDataOrdS());
+ try {
+ return sdf.parse(getDataOrdS());
+ } catch (ParseException e) {
+ UtilityLogger.errorMe(e);
+ return null;
+ }
}
public OrdineVenditaInevasoDTO setData(String data) {
@@ -488,4 +493,24 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
this.existCollo = existCollo;
return this;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o;
+
+ if (!data.equals(that.data)) return false;
+ if (!numero.equals(that.numero)) return false;
+ return getGestione().equals(that.getGestione());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = data.hashCode();
+ result = 31 * result + numero.hashCode();
+ result = 31 * result + getGestione().hashCode();
+ return result;
+ }
}
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index ff200a73..cb8f6806 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -429,51 +429,51 @@
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
+
diff --git a/app/src/main/res/layout/vendita_main_list_group_model.xml b/app/src/main/res/layout/vendita_main_list_group_model.xml
index 885ba383..bdabc92a 100644
--- a/app/src/main/res/layout/vendita_main_list_group_model.xml
+++ b/app/src/main/res/layout/vendita_main_list_group_model.xml
@@ -1,68 +1,75 @@
-
-
-
-
-
-
+
+ android:layout_height="wrap_content">
-
+
+ android:paddingStart="2dp"
+ android:paddingEnd="8dp"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp"
+ android:layout_toEndOf="@id/empty_view">
-
+
+
+ android:layout_toEndOf="@id/vendita_main_list_group_item_container_checkBox"
+ android:layout_alignParentEnd="true">
-
+
+
+
-
-
+
+
+
+
+
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/vendita_main_list_model.xml b/app/src/main/res/layout/vendita_main_list_model.xml
index 8cd747b2..3f9466dd 100644
--- a/app/src/main/res/layout/vendita_main_list_model.xml
+++ b/app/src/main/res/layout/vendita_main_list_model.xml
@@ -1,3 +1,4 @@
+
-
\ No newline at end of file
+
+
+
From 381c67196d9e818bc11920ba338756212dfe47cb Mon Sep 17 00:00:00 2001
From: GiuseppeS
Date: Thu, 27 Jun 2019 21:30:33 +0200
Subject: [PATCH 2/6] Creata classe custom per confrontare la chiave
dell'ordine
---
.../core/MainListVenditaAdapterNew.java | 68 +++++++++++++++----
1 file changed, 56 insertions(+), 12 deletions(-)
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
index 0c7dc5b0..9bbdbdb2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
@@ -79,7 +79,7 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter {
//if(!mCheckBoxes.containsKey(key)) {
- mCheckBoxes.put((OrdineListModel)x, false);
+ mCheckBoxes.put(OrdineListModel.fromOrdine(x), false);
//} else {
//mCheckBoxes.get(key) = false;
//}
@@ -141,7 +141,7 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter {
- mCheckBoxes.put((OrdineListModel) ordine, isChecked);
+ mCheckBoxes.put(OrdineListModel.fromOrdine(ordine), isChecked);
});
}
@@ -167,10 +167,54 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter
Date: Tue, 2 Jul 2019 11:53:21 +0200
Subject: [PATCH 3/6] [REFACT] Ricreata completamente la lista degli ordini in
Spedizione
---
.idea/caches/build_file_checksums.ser | Bin 964 -> 964 bytes
.idea/runConfigurations/app.xml | 4 +-
.../interfaces/IOrdiniVendita.java | 4 +-
.../core/model/FiltroOrdineDTO.java | 20 +
.../core/utility/UtilityLogger.java | 26 +-
.../gest/vendita/MainVenditaFragment.java | 250 +++++------
.../vendita/core/MainListVenditaAdapter.java | 37 +-
.../core/MainListVenditaAdapterNew.java | 77 ++--
.../gest/vendita/core/VenditaHelper.java | 82 ++--
.../dto/OrdineVenditaGroupedInevasoDTO.java | 401 ------------------
.../vendita/dto/OrdineVenditaInevasoDTO.java | 26 ++
.../vendita/viewmodel/VenditaViewModel.java | 2 +-
.../VenditaOrdineInevasoActivity.java | 4 +-
.../VenditaOrdineInevasoViewModel.java | 45 +-
.../layout/vendita_main_list_group_model.xml | 38 +-
app/src/main/res/values/colors.xml | 1 +
.../extensions/OrdiniVendita.java | 4 +-
.../extensions/OrdiniVendita.java | 4 +-
.../extensions/OrdiniVendita.java | 6 +-
19 files changed, 336 insertions(+), 695 deletions(-)
delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaGroupedInevasoDTO.java
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index fb8a2c56cb6fe8e442dc00fc56f01faec861c92c..4c745cc92a601727d71ca7f91878d9a1bd5872df 100644
GIT binary patch
delta 15
XcmX@YeuRC(43>EgystLS(O?DuGV}%z
delta 15
WcmX@YeuRC(43@qk+s2J^G?)Q0
-
+
@@ -43,7 +43,7 @@
-
+
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
index ceac5f87..fdfb1a2f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java
@@ -6,10 +6,10 @@ import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
public interface IOrdiniVendita {
- void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed);
+ void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java
index 0e9e5ea1..1a600530 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/FiltroOrdineDTO.java
@@ -47,4 +47,24 @@ public class FiltroOrdineDTO {
this.numOrd = numOrd;
return this;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ FiltroOrdineDTO that = (FiltroOrdineDTO) o;
+
+ if (getNumOrd() != that.getNumOrd()) return false;
+ if (!getGestioneOrd().equals(that.getGestioneOrd())) return false;
+ return dataOrd.equals(that.dataOrd);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getGestioneOrd().hashCode();
+ result = 31 * result + dataOrd.hashCode();
+ result = 31 * result + getNumOrd();
+ return result;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java
index 04517ac1..6c379f4d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java
@@ -4,6 +4,7 @@ import com.orhanobut.logger.Logger;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.net.SocketTimeoutException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -39,23 +40,26 @@ public class UtilityLogger {
}
public static void errorMe(Exception ex, String additionalText, Runnable onComplete, RunnableArgs onFailed) {
- String message = UtilityResources.readRawTextFile(R.raw.error_mail);
+ if(!(ex instanceof SocketTimeoutException)) {
- message = message.replace("#exception_name#", ex.getMessage());
+ String message = UtilityResources.readRawTextFile(R.raw.error_mail);
- StringWriter sw = new StringWriter();
- ex.printStackTrace(new PrintWriter(sw));
+ message = message.replace("#exception_name#", ex.getMessage());
- if(additionalText != null) sw.append("\n").append(additionalText);
- message = message.replace("#stacktrace#", sw.toString());
+ StringWriter sw = new StringWriter();
+ ex.printStackTrace(new PrintWriter(sw));
- String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB) ? "" : SettingsManager.i().userSession.profileDB;
- message = message.replace("#azienda_nome#", currentAzienda);
+ if (additionalText != null) sw.append("\n").append(additionalText);
+ message = message.replace("#stacktrace#", sw.toString());
- SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
- message = message.replace("#current_date#", sdf.format(new Date()));
+ String currentAzienda = UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB) ? "" : SettingsManager.i().userSession.profileDB;
+ message = message.replace("#azienda_nome#", currentAzienda);
- SystemRESTConsumer.sendErrorLogMail(message, onComplete, onFailed);
+ SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
+ message = message.replace("#current_date#", sdf.format(new Date()));
+
+ SystemRESTConsumer.sendErrorLogMail(message, onComplete, onFailed);
+ }
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index ab6dc603..520781e2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -21,7 +21,6 @@ import android.view.ViewGroup;
import com.annimon.stream.Stream;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import butterknife.ButterKnife;
@@ -42,12 +41,10 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
-import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapterNew;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel;
-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.viewmodel.VenditaViewModel;
@@ -67,7 +64,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
private MainListVenditaAdapterNew mAdapter;
private List mOriginalOrderList;
- private List groupedOrdiniInevasi;
+ private List mRenderedOrderList = new ArrayList<>();
private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel;
@@ -122,7 +119,6 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
ButterKnife.bind(this, mBinding.getRoot());
-// if(mWaterfallToolbar != null) mWaterfallToolbar.setRecyclerView(mBinding.venditaMainList);
if(mToolbar != null) mToolbar.setRecyclerView(mBinding.venditaMainList);
return mBinding.getRoot();
@@ -167,7 +163,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
mBinding.ordiniVenditaEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE);
- groupOrdini(ordini);
+ refreshOrdini(ordini);
initRecyclerView();
progress.dismiss();
}
@@ -189,113 +185,124 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
}
- public void groupOrdini(List ordini){
+ public void refreshOrdini(List ordini){
- groupedOrdiniInevasi = new ArrayList<>();
-
- //Splitto gli ordini per codAnagOrd (Cliente)
- Stream.of(ordini)
- .distinctBy(OrdineVenditaInevasoDTO::getCodAnagOrd)
- .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
- .map(x -> x.getCodAnagOrd() + "#_#" + x.getRagSocOrd())
- .forEach(anagOrd -> {
-
- String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#"));
- String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3);
-
- OrdineVenditaGroupedInevasoDTO groupedOrdine = new OrdineVenditaGroupedInevasoDTO();
-
- groupedOrdine.codAnagClie = codAnagOrd;
- groupedOrdine.nomeCliente = ragSocOrd;
- groupedOrdine.ordini = new ArrayList<>();
+ mRenderedOrderList.clear();
+ mRenderedOrderList.addAll(ordini);
- //Raggruppo gli ordini del singolo fornitore suddivisi per data, dataCons e numero
- Stream.of(ordini)
- .filter(x -> x.getCodAnagOrd().equalsIgnoreCase(codAnagOrd))
- .distinctBy(x -> x.getDataOrdS() + " - " + x.getDataConsS() + " - " + x.getNumOrd())
- .sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01))
- .forEach(ord -> {
-
-
- OrdineVenditaGroupedInevasoDTO.Ordine rigaOrdine = new OrdineVenditaGroupedInevasoDTO.Ordine();
-
- rigaOrdine
- .setData(ord.getDataOrdS())
- .setNumero(ord.getNumOrd())
- .setCodMdep(ord.getCodMdep())
- .setCodAnagOrd(ord.getCodAnagOrd())
- .setCodAnagClie(groupedOrdine.codAnagClie)
- .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())
- .setExistCollo(ord.flagExistCollo());
-
- rigaOrdine.clienti = new ArrayList<>();
-
-
- //Leggo tutti i clienti dell'ordine corrente
- Stream.of(ordini)
- .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.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);
-
- });
-
- groupedOrdine.ordini.add(rigaOrdine);
-
-
- });
-
- groupedOrdiniInevasi.add(groupedOrdine);
-
- });
+//
+// //Splitto gli ordini per codAnagOrd (Cliente)
+// Stream.of(ordini)
+// .distinctBy(OrdineVenditaInevasoDTO::getCodAnagOrd)
+// .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
+// .map(x -> x.getCodAnagOrd() + "#_#" + x.getRagSocOrd())
+// .forEach(anagOrd -> {
+//
+// String codAnagOrd = anagOrd.substring(0, anagOrd.indexOf("#_#"));
+// String ragSocOrd = anagOrd.substring(anagOrd.indexOf("#_#") + 3);
+//
+// OrdineVenditaGroupedInevasoDTO groupedOrdine = new OrdineVenditaGroupedInevasoDTO();
+//
+// groupedOrdine.codAnagClie = codAnagOrd;
+// groupedOrdine.nomeCliente = ragSocOrd;
+// groupedOrdine.ordini = new ArrayList<>();
+//
+//
+// //Raggruppo gli ordini del singolo fornitore suddivisi per data, dataCons e numero
+// Stream.of(ordini)
+// .filter(x -> x.getCodAnagOrd().equalsIgnoreCase(codAnagOrd))
+// .distinctBy(x -> x.getDataOrdS() + " - " + x.getDataConsS() + " - " + x.getNumOrd())
+// .sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01))
+// .forEach(ord -> {
+//
+//
+// OrdineVenditaGroupedInevasoDTO.Ordine rigaOrdine = new OrdineVenditaGroupedInevasoDTO.Ordine();
+//
+// rigaOrdine
+// .setData(ord.getDataOrdS())
+// .setNumero(ord.getNumOrd())
+// .setCodMdep(ord.getCodMdep())
+// .setCodAnagOrd(ord.getCodAnagOrd())
+// .setCodAnagClie(groupedOrdine.codAnagClie)
+// .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())
+// .setExistCollo(ord.flagExistCollo());
+//
+// rigaOrdine.clienti = new ArrayList<>();
+//
+//
+// //Leggo tutti i clienti dell'ordine corrente
+// Stream.of(ordini)
+// .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.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);
+//
+// });
+//
+// groupedOrdine.ordini.add(rigaOrdine);
+//
+//
+// });
+//
+// mRenderedOrderList.add(groupedOrdine);
+//
+// });
}
private void initRecyclerView() {
-// mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
- mAdapter = new MainListVenditaAdapterNew(getActivity(), mOriginalOrderList, onGroupSelectionChanged, onSingleSelectionChanged);
+// mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onGroupSelectionChanged, onSingleSelectionChanged);
+ mAdapter = new MainListVenditaAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
mBinding.venditaMainList.setAdapter(mAdapter);
}
public void refreshRecyclerView() {
- mAdapter.updateItems(mOriginalOrderList);
+ mAdapter.updateItems(mRenderedOrderList);
}
- private RunnableArgs onSingleSelectionChanged = dto -> {
- List selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
+ private RunnableArgs onSingleSelectionChanged = dto -> {
+ List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
if(!SettingsManager.iDB().isFlagMultiClienteOrdV()){
+ boolean allMatch = Stream.of(selectedOrders).allMatch(x -> dto.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd()));
- if(selectedOrders != null && selectedOrders.size() > 1){
- for (OrdineVenditaGroupedInevasoDTO selectedOrder : selectedOrders) {
- if(!dto.getCodAnagClie().equalsIgnoreCase(selectedOrder.codAnagClie)) {
- Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
- }
- }
+ if(!allMatch) {
+ Stream.of(selectedOrders)
+ .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd()))
+ .forEach(x -> x.setSelected(false));
}
- }
+//
+// if(selectedOrders != null && selectedOrders.size() > 1){
+// for (OrdineVenditaInevasoDTO selectedOrder : selectedOrders) {
+// if(!dto.getCodAnagOrd().equalsIgnoreCase(selectedOrder.getCodAnagOrd())) {
+// Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
+// }
+// }
+// }
+ }
+//
if(selectedOrders != null && selectedOrders.size() > 0) {
mBinding.venditaMainFab.show();
}
@@ -304,40 +311,20 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
}
};
- private RunnableArgs onGroupSelectionChanged = dto -> {
- List selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
-
- if(!SettingsManager.iDB().isFlagMultiClienteOrdV()){
-
- if(selectedOrders != null && selectedOrders.size() > 1){
- for (OrdineVenditaGroupedInevasoDTO selectedOrder : selectedOrders) {
- if(!dto.codAnagClie.equalsIgnoreCase(selectedOrder.codAnagClie)) {
- Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
- }
- }
- }
- }
-
- if(selectedOrders != null && selectedOrders.size() > 0) mBinding.venditaMainFab.show();
- else mBinding.venditaMainFab.hide();
- };
-
@OnClick(R.id.vendita_main_fab)
public void onClick(View view) {
- List selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
+ List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList);
List barcodes = new ArrayList<>();
String dataCons = null;
- for(OrdineVenditaGroupedInevasoDTO ordine : selectedOrders){
- for(OrdineVenditaGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){
- if(!barcodes.contains(righeOrd.getBarcode())) barcodes.add(righeOrd.getBarcode());
+ for(OrdineVenditaInevasoDTO ordine : selectedOrders){
+ if(!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode());
- if(dataCons == null) dataCons = righeOrd.getDataConsS();
- else if(!dataCons.equalsIgnoreCase(righeOrd.getDataConsS())) dataCons = "";
- }
+ if(dataCons == null) dataCons = ordine.getDataConsS();
+ else if(!dataCons.equalsIgnoreCase(ordine.getDataConsS())) dataCons = "";
}
final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting),
@@ -409,12 +396,12 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
@Override
public void onSelectAll() {
- if(groupedOrdiniInevasi != null && groupedOrdiniInevasi.size() > 0) {
- if(mHelper.getSelectedOrders(groupedOrdiniInevasi).size() > 0){
- mHelper.deselectAll(groupedOrdiniInevasi);
+ if(mRenderedOrderList != null && mRenderedOrderList.size() > 0) {
+ if(mHelper.getSelectedOrders(mRenderedOrderList).size() > 0){
+ mHelper.deselectAll(mRenderedOrderList);
} else {
//Selezionare solo quelli attualmente a video
- mHelper.selectAll(groupedOrdiniInevasi);
+ mHelper.selectAll(mRenderedOrderList);
}
}
@@ -428,22 +415,19 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
if(filteredOrderList != null){
- groupOrdini(filteredOrderList);
+ refreshOrdini(filteredOrderList);
refreshRecyclerView();
}
}).show();
}
- private void checkSelectedOrders(List selectedOrders, Runnable onComplete, Runnable onFailed) {
+ private void checkSelectedOrders(List selectedOrders, Runnable onComplete, Runnable onFailed) {
if(selectedOrders != null && selectedOrders.size() > 0) {
- List flatOrderArray = new ArrayList<>();
-
- Stream.of(selectedOrders).forEach(x -> flatOrderArray.addAll(x.ordini));
//Definizione della gestione collo di default
- List foundGestioni = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getGestioneEnum)
+ List foundGestioni = Stream.of(selectedOrders)
+ .map(OrdineVenditaInevasoDTO::getGestioneEnum)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -456,8 +440,8 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
}
//Definizione del deposito di default
- List foundCodMdep = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getCodMdep)
+ List foundCodMdep = Stream.of(selectedOrders)
+ .map(OrdineVenditaInevasoDTO::getCodMdep)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -473,7 +457,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
onComplete.run();
}
- private void startVenditaActivity(List ordini, List selectedOrders, List mtbColtList) {
+ private void startVenditaActivity(List ordini, List selectedOrders, List mtbColtList) {
Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class);
String keyPickingList = DataCache.addItem(ordini);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
index a4f1640e..d3e3f3f6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
@@ -2,8 +2,6 @@ package it.integry.integrywmsnative.gest.vendita.core;
import android.content.Context;
-import androidx.core.content.ContextCompat;
-import androidx.core.content.res.ResourcesCompat;
import androidx.core.util.Pools;
import androidx.recyclerview.widget.RecyclerView;
@@ -12,8 +10,6 @@ import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -23,7 +19,6 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
public class MainListVenditaAdapter extends RecyclerView.Adapter {
@@ -138,22 +133,22 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter {
- ordine.checkBox = checkBox.isChecked();
- mOnSingleSelectionChanged.run(ordine);
- });
-
-
- ordine.checkBoxCallback.add(checkBox::setChecked);
-
- ordineView.setOnClickListener(view -> {
- checkBox.toggle();
- //ordine.checkBox = checkBox.isChecked();
- //mOnGroupSelected.run(mDataset.get(finalPosition));
- });
+// final CheckBox checkBox = ordineView.findViewById(R.id.vendita_main_list_group_item_container_checkBox);
+// checkBox.setChecked(ordine.checkBox);
+//
+// checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
+// ordine.checkBox = checkBox.isChecked();
+// mOnSingleSelectionChanged.run(ordine);
+// });
+//
+//
+// ordine.checkBoxCallback.add(checkBox::setChecked);
+//
+// ordineView.setOnClickListener(view -> {
+// checkBox.toggle();
+// //ordine.checkBox = checkBox.isChecked();
+// //mOnGroupSelected.run(mDataset.get(finalPosition));
+// });
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
index 9bbdbdb2..078f78d9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
@@ -1,14 +1,13 @@
package it.integry.integrywmsnative.gest.vendita.core;
import android.content.Context;
-import android.graphics.Color;
-import android.os.Parcel;
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.DataBindingUtil;
+import androidx.databinding.Observable;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
@@ -18,11 +17,11 @@ import java.util.HashMap;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding;
import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
@@ -30,11 +29,10 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter mCallbacksDictionary = new HashMap<>();
private List mDataset;
- private HashMap mCheckBoxes = new HashMap<>();
- private RunnableArgs mOnGroupSelected;
- private RunnableArgs mOnSingleSelectionChanged;
+ private RunnableArgs mOnSingleSelectionChanged;
static class SubheaderHolder extends RecyclerView.ViewHolder {
@@ -59,10 +57,9 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter myDataset, RunnableArgs onGroupSelected, RunnableArgs onSingleSelectionChanged) {
+ public MainListVenditaAdapterNew(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) {
mContext = context;
mDataset = orderItems(myDataset);
- mOnGroupSelected = onGroupSelected;
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
@@ -70,24 +67,11 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter orderItems(List dataset) {
-
- Stream.of(dataset)
- .forEach(x -> {
-
- //if(!mCheckBoxes.containsKey(key)) {
- mCheckBoxes.put(OrdineListModel.fromOrdine(x), false);
- //} else {
- //mCheckBoxes.get(key) = false;
- //}
-
-
-
- });
-
return Stream.of(dataset)
.sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
.toList();
@@ -114,20 +98,29 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter {
- Stream.of(mCheckBoxes)
- .filter(x -> x.getKey().equals(mDataset.get(nextItemPosition)))
- .forEach(x -> mCheckBoxes.put(x.getKey(), true));
+
+ boolean anySelected = Stream.of(mDataset)
+ .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
+ .anyMatch(OrdineVenditaInevasoDTO::isSelected);
+
+ Stream.of(mDataset)
+ .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
+ .forEach(x -> x.setSelected(!anySelected));
});
}
@Override
public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
- holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
-
-
OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
- holder.binding.emptyView.setBackgroundColor(Color.RED);
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
+
+ if (mCallbacksDictionary.containsKey(ordine.selected)) {
+ ordine.selected.removeOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
+ }
+
+
+ holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), ordine.flagExistCollo() ? R.color.colorPrimary : android.R.color.transparent, null));
String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
@@ -137,23 +130,35 @@ public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter {
+ ordine.setSelected(!ordine.isSelected());
+ });
+
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
+
+ mCallbacksDictionary.put(ordine.selected, new Observable.OnPropertyChangedCallback() {
+ @Override
+ public void onPropertyChanged(Observable sender, int propertyId) {
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
+ }
+ });
holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
- mCheckBoxes.put(OrdineListModel.fromOrdine(ordine), isChecked);
+ ordine.setSelected(isChecked);
+ mOnSingleSelectionChanged.run(ordine);
});
+
+ ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
- if(!this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position+1).getRagSocOrd())) {
- return true;
- }
+ return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
- return false;
}
@Override
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java
index 67183dad..7e2f0e7e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/VenditaHelper.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
+import com.annimon.stream.Stream;
import com.google.firebase.perf.metrics.Trace;
import com.google.gson.reflect.TypeToken;
@@ -11,7 +12,6 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
-import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
@@ -19,7 +19,6 @@ import it.integry.integrywmsnative.core.REST.model.EsitoType;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
-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.settings.SettingsManager;
@@ -27,7 +26,6 @@ import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityFirebase;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
-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.rest.OrdiniVenditaRESTConsumerService;
@@ -139,7 +137,7 @@ public class VenditaHelper {
- public void getBancaliVenditaGiaRegistrati(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void getBancaliVenditaGiaRegistrati(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) {
String baseSql = "SELECT DISTINCT mtb_colt.* " +
"FROM mtb_colt, " +
@@ -156,21 +154,15 @@ public class VenditaHelper {
for(int i = 0; i < orders.size(); i++){
- List currentOrders = orders.get(i).ordini;
- for(int j = 0; j < currentOrders.size(); j++){
+ whereCond
+ .append("(mtb_colr.data_ord = '").append(UtilityDate.formatDate(orders.get(i).getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)).append("' ")
+ .append("AND mtb_colr.num_ord = ").append(orders.get(i).getNumOrd()).append(" ")
+ .append("AND mtb_colr.gestione = ").append(UtilityDB.valueToString(orders.get(i).getGestione()))
+ .append(") ");
- whereCond
- .append("(mtb_colr.data_ord = '").append(UtilityDate.formatDate(currentOrders.get(j).getData(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)).append("' ")
- .append("AND mtb_colr.num_ord = ").append(currentOrders.get(j).getNumero()).append(" ")
- .append("AND mtb_colr.gestione = ").append(UtilityDB.valueToString(currentOrders.get(j).getGestione()))
- .append(") ");
-
- if(i != (orders.size() - 1)){
- whereCond.append("OR ");
- } else if(j != (currentOrders.size() - 1)) {
- whereCond.append("OR ");
- }
+ if(i != (orders.size() - 1)){
+ whereCond.append("OR ");
}
}
@@ -241,47 +233,49 @@ public class VenditaHelper {
- public List getSelectedOrders(List groupedOrdiniInevasi){
- List selectedOrdini = new ArrayList<>();
+ public List getSelectedOrders(List ordiniList){
+// List selectedOrdini = new ArrayList<>();
- for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
- List selectedOrdiniGroup = new ArrayList<>();
+ return Stream.of(ordiniList)
+ .filter(OrdineVenditaInevasoDTO::isSelected)
+ .toList();
- for(int j = 0; j < groupedOrdiniInevasi.get(i).ordini.size(); j++){
- if(groupedOrdiniInevasi.get(i).ordini.get(j).checkBox) {
- selectedOrdiniGroup.add(groupedOrdiniInevasi.get(i).ordini.get(j));
- }
- }
+// for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
+// List selectedOrdiniGroup = new ArrayList<>();
+//
+// //for(int j = 0; j < groupedOrdiniInevasi.get(i).ordini.size(); j++){
+// if(groupedOrdiniInevasi.get(i).checkBox) {
+// selectedOrdiniGroup.add(groupedOrdiniInevasi.get(i).ordini.get(j));
+// }
+// //}
+//
+// if(selectedOrdiniGroup.size() > 0) {
+// try {
+// OrdineVenditaGroupedInevasoDTO cloneOrdine = groupedOrdiniInevasi.get(i).clone();
+// cloneOrdine.ordini = selectedOrdiniGroup;
+// selectedOrdini.add(cloneOrdine);
+// } catch (CloneNotSupportedException e) {
+// e.printStackTrace();
+// }
+// }
+// }
- if(selectedOrdiniGroup.size() > 0) {
- try {
- OrdineVenditaGroupedInevasoDTO cloneOrdine = groupedOrdiniInevasi.get(i).clone();
- cloneOrdine.ordini = selectedOrdiniGroup;
- selectedOrdini.add(cloneOrdine);
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- }
- }
- }
-
- return selectedOrdini;
+// return selectedOrdini;
}
- public void selectAll(List groupedOrdiniInevasi) {
+ public void selectAll(List groupedOrdiniInevasi) {
toggleSelection(groupedOrdiniInevasi, true);
}
- public void deselectAll(List groupedOrdiniInevasi) {
+ public void deselectAll(List groupedOrdiniInevasi) {
toggleSelection(groupedOrdiniInevasi, false);
}
- public void toggleSelection(List groupedOrdiniInevasi, boolean value) {
+ public void toggleSelection(List groupedOrdiniInevasi, boolean value) {
for(int i = 0; i < groupedOrdiniInevasi.size(); i++){
- for(int j = 0; j < groupedOrdiniInevasi.get(i).ordini.size(); j++){
- groupedOrdiniInevasi.get(i).ordini.get(j).setCheckbox(value);
- }
+ groupedOrdiniInevasi.get(i).setSelected(value);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaGroupedInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaGroupedInevasoDTO.java
deleted file mode 100644
index c6be534c..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaGroupedInevasoDTO.java
+++ /dev/null
@@ -1,401 +0,0 @@
-package it.integry.integrywmsnative.gest.vendita.dto;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-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 {
-
- public String codAnagClie;
- public String nomeCliente;
- public List ordini;
-
- public OrdineVenditaGroupedInevasoDTO clone() throws CloneNotSupportedException {
- return (OrdineVenditaGroupedInevasoDTO) super.clone();
- }
-
-
- public static class Ordine implements Parcelable{
- private String data;
- private int numero;
- private String codMdep;
- private String codAnagOrd = "";
- private String ragSocOrd = "";
- private Float pesoTotale;
- private String barcode;
- private String termCons;
- private String dataCons;
- private String rifOrd;
- private String gestione;
- private int colliRiservati;
- private boolean existCollo;
-
- private String codAnagClie;
-
- public List clienti;
-
- public boolean checkBox;
- public List checkBoxCallback = new ArrayList<>();
-
-
-
- public void setCheckbox(boolean newValue){
- checkBox = newValue;
- if(checkBoxCallback != null && checkBoxCallback.size() > 0) {
- for(ICheckBoxCallback callback : checkBoxCallback) callback.onToggle(newValue);
- }
- }
-
-
- public Date getData(){
- try {
- return UtilityDate.recognizeDate(data);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- 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 getCodMdep() {
- return codMdep;
- }
-
- public Ordine setCodMdep(String codMdep) {
- this.codMdep = codMdep;
- 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) {
- e.printStackTrace();
- }
- 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 String getCodAnagClie() {
- return codAnagClie;
- }
-
- public Ordine setCodAnagClie(String codAnagClie) {
- this.codAnagClie = codAnagClie;
- return this;
- }
-
- public int getColliRiservati() {
- return colliRiservati;
- }
-
- public Ordine setColliRiservati(int colliRiservati) {
- this.colliRiservati = colliRiservati;
- return this;
- }
-
- public List getClienti() {
- return clienti;
- }
-
- public Ordine setClienti(List clienti) {
- this.clienti = clienti;
- return this;
- }
-
- public boolean isCheckBox() {
- return checkBox;
- }
-
- public Ordine setCheckBox(boolean checkBox) {
- this.checkBox = checkBox;
- return this;
- }
-
- public boolean isExistCollo() {
- return existCollo;
- }
-
- public Ordine setExistCollo(boolean existCollo) {
- this.existCollo = existCollo;
- return this;
- }
-
- public Ordine(){}
-
- protected Ordine(Parcel in) {
- data = in.readString();
- numero = in.readInt();
- codAnagOrd = in.readString();
- ragSocOrd = in.readString();
- pesoTotale = in.readByte() == 0x00 ? null : in.readFloat();
- barcode = in.readString();
- termCons = in.readString();
- dataCons = in.readString();
- rifOrd = in.readString();
- if (in.readByte() == 0x01) {
- clienti = new ArrayList<>();
- in.readList(clienti, Cliente.class.getClassLoader());
- } else {
- clienti = null;
- }
- gestione = in.readString();
- colliRiservati = in.readInt();
- codMdep = in.readString();
- existCollo = in.readByte() != 0x00;
-
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(data);
- dest.writeInt(numero);
- dest.writeString(codAnagOrd);
- dest.writeString(ragSocOrd);
- if (pesoTotale == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeFloat(pesoTotale);
- }
- dest.writeString(barcode);
- dest.writeString(termCons);
- dest.writeString(dataCons);
- dest.writeString(rifOrd);
- if (clienti == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeList(clienti);
- }
- dest.writeString(gestione);
- dest.writeInt(colliRiservati);
- dest.writeString(codMdep);
- dest.writeByte((byte) (existCollo ? 0x01 : 0x00));
- }
-
- @SuppressWarnings("unused")
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- @Override
- public Ordine createFromParcel(Parcel in) {
- return new Ordine(in);
- }
-
- @Override
- public Ordine[] newArray(int size) {
- return new Ordine[size];
- }
- };
-
- }
-
- public static class Cliente implements Parcelable{
- public String codJcom;
- public String ragSocCom;
- public int idRiga;
- public String dataCons;
- public Float numCnf;
- public String descrCom;
- public String rifOrd;
-
- public Date getDataCons(){
- try {
- return UtilityDate.recognizeDate(dataCons);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public Cliente(){}
-
- protected Cliente(Parcel in) {
- codJcom = in.readString();
- ragSocCom = in.readString();
- idRiga = in.readInt();
- dataCons = in.readString();
- numCnf = in.readByte() == 0x00 ? null : in.readFloat();
- descrCom = in.readString();
- rifOrd = in.readString();
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(codJcom);
- dest.writeString(ragSocCom);
- dest.writeInt(idRiga);
- dest.writeString(dataCons);
- if (numCnf == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeFloat(numCnf);
- }
- dest.writeString(descrCom);
- dest.writeString(rifOrd);
- }
-
- @SuppressWarnings("unused")
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- @Override
- public Cliente createFromParcel(Parcel in) {
- return new Cliente(in);
- }
-
- @Override
- public Cliente[] newArray(int size) {
- return new Cliente[size];
- }
- };
- }
-
- public OrdineVenditaGroupedInevasoDTO(){}
-
- protected OrdineVenditaGroupedInevasoDTO(Parcel in) {
- codAnagClie = in.readString();
- nomeCliente = in.readString();
- if (in.readByte() == 0x01) {
- ordini = new ArrayList<>();
- in.readList(ordini, Ordine.class.getClassLoader());
- } else {
- ordini = null;
- }
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(codAnagClie);
- dest.writeString(nomeCliente);
- if (ordini == null) {
- dest.writeByte((byte) (0x00));
- } else {
- dest.writeByte((byte) (0x01));
- dest.writeList(ordini);
- }
- }
-
- @SuppressWarnings("unused")
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- @Override
- public OrdineVenditaGroupedInevasoDTO createFromParcel(Parcel in) {
- return new OrdineVenditaGroupedInevasoDTO(in);
- }
-
- @Override
- public OrdineVenditaGroupedInevasoDTO[] newArray(int size) {
- return new OrdineVenditaGroupedInevasoDTO[size];
- }
- };
-
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
index 74d81e1d..59e6bfc1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/OrdineVenditaInevasoDTO.java
@@ -8,6 +8,8 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
+import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
public class OrdineVenditaInevasoDTO implements Parcelable {
@@ -47,6 +49,12 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
private int colliRiservati;
private String existCollo;
+ public BindableBoolean selected;
+
+
+ public OrdineVenditaInevasoDTO() {
+ this.selected = new BindableBoolean(false);
+ }
protected OrdineVenditaInevasoDTO(Parcel in) {
data = in.readString();
@@ -91,6 +99,8 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
ragSocOrdV = in.readString();
colliRiservati = in.readInt();
existCollo = in.readString();
+
+ selected = new BindableBoolean(in.readByte() == 0x01);
}
@Override
@@ -140,6 +150,8 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
dest.writeString(ragSocOrdV);
dest.writeInt(colliRiservati);
dest.writeString(existCollo);
+
+ dest.writeByte(selected.get() ? (byte) 1 : (byte) 0);
}
@Override
@@ -191,6 +203,11 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
return gestione;
}
+ public GestioneEnum getGestioneEnum() {
+ return GestioneEnum.fromString(getGestione());
+ }
+
+
public OrdineVenditaInevasoDTO setGestione(String gestione) {
this.gestione = gestione;
return this;
@@ -494,6 +511,15 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
return this;
}
+ public boolean isSelected() {
+ return selected.get();
+ }
+
+ public OrdineVenditaInevasoDTO setSelected(boolean selected) {
+ this.selected.set(selected);
+ return this;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
index 038f9c8b..621b2651 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java
@@ -120,7 +120,7 @@ public class VenditaViewModel {
List filteredOrders = Stream.of(mOrdini)
.filter(x -> numOrds.contains(x.getNumOrd())).toList();
- mFragment.groupOrdini(filteredOrders);
+ mFragment.refreshOrdini(filteredOrders);
mFragment.refreshRecyclerView();
} else {
showNoOrderFound();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
index a796f617..d14f351a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java
@@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
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.OrdineVenditaInevasoDTO;
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;
@@ -45,7 +45,7 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, bindings);
ArrayList pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList"));
- ArrayList testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini"));
+ ArrayList testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini"));
ArrayList colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati"));
mVenditaOrdineInevasoViewModel = new VenditaOrdineInevasoViewModel(
this, mBindings, mArticoliInColloBottomSheetViewModel, pickingList, testateOrdini, colliRegistrati);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
index 789bfbcf..7104daff 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java
@@ -52,7 +52,7 @@ import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding;
-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.gest.vendita_ordine_inevaso.core.VenditaOrdineInevasoHelper;
@@ -81,7 +81,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private final List mPickingList;
private List> mGroupedPickingList;
- private final List mTestateOrdini;
+ private final List mTestateOrdini;
private final List mColliRegistrati;
private VenditaOrdineInevasoHelper mHelper;
@@ -98,7 +98,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private Integer mtbColtSessionID = null;
- public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ActivityVenditaOrdineInevasoBinding bindings, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List pickingList, List orders, List colliRegistrati) {
+ public VenditaOrdineInevasoViewModel(VenditaOrdineInevasoActivity activity, ActivityVenditaOrdineInevasoBinding bindings, ArticoliInColloBottomSheetViewModel articoliInColloBottomSheetViewModel, List pickingList, List orders, List colliRegistrati) {
this.mActivity = activity;
this.mBindings = bindings;
this.mArticoliInColloBottomSheetViewModel = articoliInColloBottomSheetViewModel;
@@ -157,13 +157,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
private void initDatiPicking() {
if(this.mTestateOrdini != null && this.mTestateOrdini.size() > 0){
- List flatOrderArray = new ArrayList<>();
-
- Stream.of(this.mTestateOrdini).forEach(x -> flatOrderArray.addAll(x.ordini));
//Definizione della gestione collo di default
- List foundGestioni = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getGestioneEnum)
+ List foundGestioni = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getGestioneEnum)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -180,8 +177,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
}
//Definizione del deposito di default
- List foundCodMdep = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getCodMdep)
+ List foundCodMdep = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getCodMdep)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -200,18 +197,20 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Definizione del filtro ordine da applicare a tutti i colli generati
- Stream.of(flatOrderArray).forEach(x -> {
- defaultFiltroOrdine.add(new FiltroOrdineDTO()
- .setDataOrd(x.getData())
- .setNumOrd(x.getNumero())
- .setGestioneOrd(x.getGestione()));
+ Stream.of(mTestateOrdini).forEach(x -> {
+ FiltroOrdineDTO filtro = new FiltroOrdineDTO()
+ .setDataOrd(x.getDataOrdD())
+ .setNumOrd(x.getNumOrd())
+ .setGestioneOrd(x.getGestione());
+
+ if(defaultFiltroOrdine.contains(filtro)) defaultFiltroOrdine.add(filtro);
});
//Definizione del codAnag
- List foundCodAnag = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getCodAnagOrd)
+ List foundCodAnag = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getCodAnagOrd)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -222,8 +221,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Definizione del rifOrd
- List foundRifOrd = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getRifOrd)
+ List foundRifOrd = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getRifOrd)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -234,8 +233,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Definizione del numOrd
- List foundNumOrd = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getNumero)
+ List foundNumOrd = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getNumOrd)
.withoutNulls()
.distinctBy(x -> x)
.toList();
@@ -246,8 +245,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Definizione del dataOrd
- List foundDataOrd = Stream.of(flatOrderArray)
- .map(OrdineVenditaGroupedInevasoDTO.Ordine::getData)
+ List foundDataOrd = Stream.of(mTestateOrdini)
+ .map(OrdineVenditaInevasoDTO::getDataOrdD)
.withoutNulls()
.distinctBy(x -> x)
.toList();
diff --git a/app/src/main/res/layout/vendita_main_list_group_model.xml b/app/src/main/res/layout/vendita_main_list_group_model.xml
index bdabc92a..001e2b32 100644
--- a/app/src/main/res/layout/vendita_main_list_group_model.xml
+++ b/app/src/main/res/layout/vendita_main_list_group_model.xml
@@ -1,17 +1,23 @@
-
+
+
+
+
+
+
+
+
+
+ android:layout_height="wrap_content"
+ android:paddingStart="8dp"
+ android:paddingEnd="4dp">
-
-
+ android:layout_toEndOf="@id/empty_view"
+ android:background="@color/full_white">
+ android:layout_height="wrap_content"
+ android:background="@android:color/transparent" />
+ android:layout_alignParentEnd="true"
+ android:layout_toEndOf="@id/vendita_main_list_group_item_container_checkBox">
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 8d337f0c..d13bfbdb 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -25,6 +25,7 @@
#E8F0FE
+ #C9D5F0
diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
index 9e04adaa..ac61c630 100644
--- a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
+++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -10,13 +10,13 @@ import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
public class OrdiniVendita implements IOrdiniVendita {
@Override
- public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
index e0adf794..048472d1 100644
--- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
+++ b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -10,13 +10,13 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityToast;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
public class OrdiniVendita implements IOrdiniVendita {
@Override
- public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
UtilityToast.showToast("Avviato metodo in BaseFeature");
ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
index 82cb0836..438ebcf9 100644
--- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
+++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java
@@ -11,14 +11,14 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
public class OrdiniVendita implements IOrdiniVendita {
@Override
- public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public void distribuisciCollo(ProgressDialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) {
- String codMdepOrder = testateOrdini.get(0).ordini.get(0).getCodMdep();
+ String codMdepOrder = testateOrdini.get(0).getCodMdep();
//Se il deposito del collo รจ diverso dal deposito dell'utente allora sto "evadendo" la merce per una vendita presente
//su un altro deposito
From 637cd659ecca018a7ffac330926e25e7c7e9938e Mon Sep 17 00:00:00 2001
From: GiuseppeS
Date: Tue, 2 Jul 2019 12:30:06 +0200
Subject: [PATCH 4/6] Rimosso vecchio MainListVenditaAdapter
---
.../gest/vendita/MainVenditaFragment.java | 6 +-
.../vendita/core/MainListVenditaAdapter.java | 376 +++++++++---------
.../core/MainListVenditaAdapterNew.java | 248 ------------
3 files changed, 190 insertions(+), 440 deletions(-)
delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
index 520781e2..f8384c99 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java
@@ -41,7 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
-import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapterNew;
+import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter;
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato;
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel;
@@ -61,7 +61,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
private FragmentMainVenditaBinding mBinding = null;
private VenditaViewModel mViewModel;
- private MainListVenditaAdapterNew mAdapter;
+ private MainListVenditaAdapter mAdapter;
private List mOriginalOrderList;
private List mRenderedOrderList = new ArrayList<>();
@@ -273,7 +273,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
private void initRecyclerView() {
// mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onGroupSelectionChanged, onSingleSelectionChanged);
- mAdapter = new MainListVenditaAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
+ mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged);
mBinding.venditaMainList.setAdapter(mAdapter);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
index d3e3f3f6..01e8dcc2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
@@ -1,250 +1,248 @@
package it.integry.integrywmsnative.gest.vendita.core;
import android.content.Context;
-
-import androidx.core.util.Pools;
-import androidx.recyclerview.widget.RecyclerView;
-
-import android.graphics.Color;
import android.text.Html;
import android.view.LayoutInflater;
-import android.view.View;
import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.util.ArrayList;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.Observable;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.annimon.stream.Stream;
+import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
+
+import java.util.HashMap;
import java.util.List;
import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding;
+import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding;
+import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
+import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
-public class MainListVenditaAdapter extends RecyclerView.Adapter {
+public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
private Context mContext;
- private List mDataset;
- private RunnableArgs mOnGroupSelected;
- private RunnableArgs mOnSingleSelectionChanged;
- private Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(2000);
- private Pools.SynchronizedPool sPoolClienti = new Pools.SynchronizedPool(3000);
+ private HashMap mCallbacksDictionary = new HashMap<>();
- public static class ViewHolder extends RecyclerView.ViewHolder {
- // each data item is just a string in this case
- private TextView mTextViewGroupHeader;
- private LinearLayout mLinearLayoutGroupItemContainer;
+ private List mDataset;
+ private RunnableArgs mOnSingleSelectionChanged;
- private List views = new ArrayList<>();
- public ViewHolder(View v) {
- super(v);
+ static class SubheaderHolder extends RecyclerView.ViewHolder {
+
+ VenditaMainListModelBinding binding;
+
+ SubheaderHolder(VenditaMainListModelBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ }
+
+ static class SingleItemViewHolder extends RecyclerView.ViewHolder {
+
+ VenditaMainListGroupModelBinding binding;
+
+ SingleItemViewHolder(VenditaMainListGroupModelBinding binding) {
+ super(binding.getRoot());
+ this.binding = binding;
}
}
- // Provide a suitable constructor (depends on the kind of dataset)
- public MainListVenditaAdapter(Context context, List myDataset, RunnableArgs onGroupSelected, RunnableArgs onSingleSelectionChanged) {
+
+ public MainListVenditaAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) {
mContext = context;
- mDataset = myDataset;
- mOnGroupSelected = onGroupSelected;
+ mDataset = orderItems(myDataset);
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
- public void updateItems(List updatedDataset) {
+ public void updateItems(List updatedDataset) {
mDataset.clear();
- mDataset.addAll(updatedDataset);
+ mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
+ notifyDataChanged();
}
- // Create new views (invoked by the layout manager)
- @Override
- public MainListVenditaAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
- int viewType) {
- // create a new view
- View v = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.vendita_main_list_model, parent, false);
+ private List orderItems(List dataset) {
+ return Stream.of(dataset)
+ .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
+ .toList();
- ViewHolder vh = new ViewHolder(v);
-
- TextView groupHeader = v.findViewById(R.id.vendita_main_list_group_header);
- vh.mTextViewGroupHeader = groupHeader;
-
- LinearLayout groupItemContainer = v.findViewById(R.id.vendita_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(ViewHolder holder, int position) {
- // - get element from your dataset at this position
- // - replace the contents of the view with that element
+ public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
+ VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false);
+ return new SubheaderHolder(binding);
+ }
- final List subGroup = mDataset.get(position).ordini;
- final int finalPosition = position;
+ @Override
+ public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
+ VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false);
+ return new SingleItemViewHolder(binding);
+ }
- holder.mTextViewGroupHeader.setText(mDataset.get(position).nomeCliente);
- holder.itemView.setOnClickListener(view -> {
- boolean newValue = true;
- for(int i = 0; i < subGroup.size(); i++){
- if(subGroup.get(i).checkBox) newValue = false;
- }
+ @Override
+ public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
+ subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
- for(int i = 0; i < subGroup.size(); i++){
- subGroup.get(i).setCheckbox(newValue);
- }
+ subheaderHolder.binding.getRoot().setOnClickListener(v -> {
- mOnGroupSelected.run(mDataset.get(finalPosition));
+ boolean anySelected = Stream.of(mDataset)
+ .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
+ .anyMatch(OrdineVenditaInevasoDTO::isSelected);
+
+ Stream.of(mDataset)
+ .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
+ .forEach(x -> x.setSelected(!anySelected));
+ });
+ }
+
+ @Override
+ public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
+ OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
+
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
+
+ if (mCallbacksDictionary.containsKey(ordine.selected)) {
+ ordine.selected.removeOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
+ }
+
+
+ holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), ordine.flagExistCollo() ? R.color.colorPrimary : android.R.color.transparent, null));
+
+ String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
+
+ String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+ holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString));
+
+ holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd());
+
+ holder.binding.setCheckboxValue(ordine.selected);
+
+ holder.binding.getRoot().setOnClickListener(v -> {
+ ordine.setSelected(!ordine.isSelected());
});
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
- // final View existColloView = ordineView.findViewById(R.id.exist_collo);
-
- // existColloView.setAlpha(ordine.isExistCollo() ? 1 : 0);
-
- for (int i = 0; i < subGroup.size(); i++) {
- final OrdineVenditaGroupedInevasoDTO.Ordine ordine = subGroup.get(i);
-
- ordine.checkBoxCallback = new ArrayList<>();
-
- View groupModelViewPool = (View) sPool.acquire();
- if(groupModelViewPool == null){
- groupModelViewPool = LayoutInflater.from(mContext)
- .inflate(R.layout.vendita_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false);
+ mCallbacksDictionary.put(ordine.selected, new Observable.OnPropertyChangedCallback() {
+ @Override
+ public void onPropertyChanged(Observable sender, int propertyId) {
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
}
+ });
- View ordineView = groupModelViewPool;
- holder.views.add(ordineView);
-
- View emptyView = groupModelViewPool.findViewById(R.id.empty_view);
- emptyView.setBackgroundColor(Color.GREEN);
-
-
-
-
- ordineView.setVisibility(View.VISIBLE);
-
- if (i % 2 == 1) {
- ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
- } else {
- ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.white));
- }
-
-// final CheckBox checkBox = ordineView.findViewById(R.id.vendita_main_list_group_item_container_checkBox);
-// checkBox.setChecked(ordine.checkBox);
-//
-// checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
-// ordine.checkBox = checkBox.isChecked();
-// mOnSingleSelectionChanged.run(ordine);
-// });
-//
-//
-// ordine.checkBoxCallback.add(checkBox::setChecked);
-//
-// ordineView.setOnClickListener(view -> {
-// checkBox.toggle();
-// //ordine.checkBox = checkBox.isChecked();
-// //mOnGroupSelected.run(mDataset.get(finalPosition));
-// });
-
-
-
- TextView testataOrdTextView = ordineView.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.getNumero()), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
- testataOrdTextView.setText(Html.fromHtml(testataOrdString));
-
- TextView testataDataConsTextView = ordineView.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.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
- testataDataConsTextView.setText(Html.fromHtml(testataDataConsString));
-
- /*
- LinearLayout clientLinearLayout = ordineView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord);
- List subGroupClienti = ordine.clienti;
-
- clientLinearLayout.removeAllViews();
-
- for (int k = 0; k < subGroupClienti.size(); k++) {
-
-
- View groupClienteModelViewPool = (View) sPoolClienti.acquire();
- if(groupClienteModelViewPool == null){
- groupClienteModelViewPool = LayoutInflater.from(mContext)
- .inflate(R.layout.vendita_main_list_group_clienti, clientLinearLayout, false);
- }
-
- View groupClienteModelView = groupClienteModelViewPool;
-
-
- TextView clienteComm = groupClienteModelView.findViewById(R.id.vendita_main_list_group_clienti_comm);
- String clienteText;
- clienteText = subGroupClienti.get(k).rifOrd;
- clienteComm.setText(clienteText);
-
-// TextView dataCons = groupClienteModelView.findViewById(R.id.vendita_main_list_group_clienti_datacons);
-// if (subGroupClienti.get(k).getDataCons() != null) {
-// dataCons.setText(UtilityDate.formatDate(subGroupClienti.get(k).getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH));
-// } else {
-// dataCons.setText("");
-// }
-
- clientLinearLayout.addView(groupClienteModelView);
- }*/
-
- holder.mLinearLayoutGroupItemContainer.addView(ordineView);
-
-
- // Gets the layout params that will allow you to resize the layout
- ViewGroup.LayoutParams params = emptyView.getLayoutParams();
- // Changes the height and width to the specified *pixels*
- params.height = holder.itemView.getHeight();
- emptyView.setLayoutParams(params);
-
-
- }
-
+ holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ ordine.setSelected(isChecked);
+ mOnSingleSelectionChanged.run(ordine);
+ });
+ ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
}
+
@Override
- public void onViewRecycled(ViewHolder holder){
- if(holder != null){
- for(int i = 0; i < holder.views.size(); i++){
- View groupModelView = holder.views.get(i);
-/*
- LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord);
+ public boolean onPlaceSubheaderBetweenItems(int position) {
+ return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
- for(int k = 0; k < clientLinearLayout.getChildCount(); k++){
- View cliente = clientLinearLayout.getChildAt(k);
- ((ViewGroup) cliente.getParent()).removeView(cliente);
-
- sPoolClienti.release(cliente);
- }*/
-
- ((ViewGroup) groupModelView.getParent()).removeView(groupModelView);
- sPool.release(groupModelView);
- }
-
- holder.views.clear();
- }
-
- super.onViewRecycled(holder);
}
- // Return the size of your dataset (invoked by the layout manager)
@Override
- public int getItemCount() {
+ public int getItemSize() {
return mDataset.size();
}
- public void setFilter(List newDataset) {
- mDataset = new ArrayList<>();
- mDataset.addAll(newDataset);
- notifyDataSetChanged();
+ @Override
+ public String getSectionTitle(int position) {
+ return null;
}
+ private static class OrdineListModel {
+ private String data;
+ private Integer numero;
+ private String gestione;
+ private String dataCons;
+
+ public static OrdineListModel fromOrdine(OrdineVenditaInevasoDTO ordine) {
+ return new OrdineListModel()
+ .setData(ordine.getDataOrdS())
+ .setDataCons(ordine.getDataConsS())
+ .setGestione(ordine.getGestione())
+ .setNumero(ordine.getNumOrd());
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public OrdineListModel setData(String data) {
+ this.data = data;
+ return this;
+ }
+
+ public Integer getNumero() {
+ return numero;
+ }
+
+ public OrdineListModel setNumero(Integer numero) {
+ this.numero = numero;
+ return this;
+ }
+
+ public String getGestione() {
+ return gestione;
+ }
+
+ public OrdineListModel setGestione(String gestione) {
+ this.gestione = gestione;
+ return this;
+ }
+
+ public String getDataCons() {
+ return dataCons;
+ }
+
+ public OrdineListModel setDataCons(String dataCons) {
+ this.dataCons = dataCons;
+ return this;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ OrdineListModel that = (OrdineListModel) o;
+
+ if (!getData().equals(that.getData())) return false;
+ if (!getNumero().equals(that.getNumero())) return false;
+ if (!getGestione().equals(that.getGestione())) return false;
+ return getDataCons() != null ? getDataCons().equals(that.getDataCons()) : that.getDataCons() == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getData().hashCode();
+ result = 31 * result + getNumero().hashCode();
+ result = 31 * result + getGestione().hashCode();
+ result = 31 * result + (getDataCons() != null ? getDataCons().hashCode() : 0);
+ return result;
+ }
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
deleted file mode 100644
index 078f78d9..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package it.integry.integrywmsnative.gest.vendita.core;
-
-import android.content.Context;
-import android.text.Html;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import androidx.core.content.res.ResourcesCompat;
-import androidx.databinding.DataBindingUtil;
-import androidx.databinding.Observable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.annimon.stream.Stream;
-import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
-
-import java.util.HashMap;
-import java.util.List;
-
-import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.di.BindableBoolean;
-import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.utility.UtilityDate;
-import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding;
-import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding;
-import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
-import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
-
-public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter implements SectionTitleProvider {
-
- private Context mContext;
-
- private HashMap mCallbacksDictionary = new HashMap<>();
-
- private List mDataset;
- private RunnableArgs mOnSingleSelectionChanged;
-
-
- static class SubheaderHolder extends RecyclerView.ViewHolder {
-
- VenditaMainListModelBinding binding;
-
- SubheaderHolder(VenditaMainListModelBinding binding) {
- super(binding.getRoot());
- this.binding = binding;
- }
-
- }
-
- static class SingleItemViewHolder extends RecyclerView.ViewHolder {
-
- VenditaMainListGroupModelBinding binding;
-
- SingleItemViewHolder(VenditaMainListGroupModelBinding binding) {
- super(binding.getRoot());
- this.binding = binding;
- }
- }
-
-
- public MainListVenditaAdapterNew(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) {
- mContext = context;
- mDataset = orderItems(myDataset);
- mOnSingleSelectionChanged = onSingleSelectionChanged;
- }
-
- public void updateItems(List updatedDataset) {
- mDataset.clear();
- mDataset.addAll(orderItems(updatedDataset));
- notifyDataSetChanged();
- notifyDataChanged();
- }
-
-
- private List orderItems(List dataset) {
- return Stream.of(dataset)
- .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd)
- .toList();
-
- }
-
-
-
- @Override
- public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
- VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false);
- return new SubheaderHolder(binding);
- }
-
- @Override
- public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
- VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false);
- return new SingleItemViewHolder(binding);
- }
-
-
- @Override
- public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) {
- subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd());
-
- subheaderHolder.binding.getRoot().setOnClickListener(v -> {
-
- boolean anySelected = Stream.of(mDataset)
- .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
- .anyMatch(OrdineVenditaInevasoDTO::isSelected);
-
- Stream.of(mDataset)
- .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
- .forEach(x -> x.setSelected(!anySelected));
- });
- }
-
- @Override
- public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
- OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
-
- holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
-
- if (mCallbacksDictionary.containsKey(ordine.selected)) {
- ordine.selected.removeOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
- }
-
-
- holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), ordine.flagExistCollo() ? R.color.colorPrimary : android.R.color.transparent, null));
-
- String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
- holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString));
-
- String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
- holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString));
-
- holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd());
-
- holder.binding.setCheckboxValue(ordine.selected);
-
- holder.binding.getRoot().setOnClickListener(v -> {
- ordine.setSelected(!ordine.isSelected());
- });
-
- holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected());
-
- mCallbacksDictionary.put(ordine.selected, new Observable.OnPropertyChangedCallback() {
- @Override
- public void onPropertyChanged(Observable sender, int propertyId) {
- holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get());
- }
- });
-
- holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
- ordine.setSelected(isChecked);
- mOnSingleSelectionChanged.run(ordine);
- });
-
- ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
- }
-
-
-
- @Override
- public boolean onPlaceSubheaderBetweenItems(int position) {
- return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd());
-
- }
-
- @Override
- public int getItemSize() {
- return mDataset.size();
- }
-
- @Override
- public String getSectionTitle(int position) {
- return null;
- }
-
-
- private static class OrdineListModel {
- private String data;
- private Integer numero;
- private String gestione;
- private String dataCons;
-
- public static OrdineListModel fromOrdine(OrdineVenditaInevasoDTO ordine) {
- return new OrdineListModel()
- .setData(ordine.getDataOrdS())
- .setDataCons(ordine.getDataConsS())
- .setGestione(ordine.getGestione())
- .setNumero(ordine.getNumOrd());
- }
-
- public String getData() {
- return data;
- }
-
- public OrdineListModel setData(String data) {
- this.data = data;
- return this;
- }
-
- public Integer getNumero() {
- return numero;
- }
-
- public OrdineListModel setNumero(Integer numero) {
- this.numero = numero;
- return this;
- }
-
- public String getGestione() {
- return gestione;
- }
-
- public OrdineListModel setGestione(String gestione) {
- this.gestione = gestione;
- return this;
- }
-
- public String getDataCons() {
- return dataCons;
- }
-
- public OrdineListModel setDataCons(String dataCons) {
- this.dataCons = dataCons;
- return this;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- OrdineListModel that = (OrdineListModel) o;
-
- if (!getData().equals(that.getData())) return false;
- if (!getNumero().equals(that.getNumero())) return false;
- if (!getGestione().equals(that.getGestione())) return false;
- return getDataCons() != null ? getDataCons().equals(that.getDataCons()) : that.getDataCons() == null;
- }
-
- @Override
- public int hashCode() {
- int result = getData().hashCode();
- result = 31 * result + getNumero().hashCode();
- result = 31 * result + getGestione().hashCode();
- result = 31 * result + (getDataCons() != null ? getDataCons().hashCode() : 0);
- return result;
- }
- }
-
-}
From 503e057effc47073d4da3ec95c29b7c492fb1702 Mon Sep 17 00:00:00 2001
From: GiuseppeS
Date: Tue, 2 Jul 2019 19:05:59 +0200
Subject: [PATCH 5/6] =?UTF-8?q?[FEAT]=20Implementata=20descrizione=20testu?=
=?UTF-8?q?ale=20delle=20quantit=C3=A0=20di=20cui=20fare=20pick=20[BUG]=20?=
=?UTF-8?q?Risolto=20strano=20problema=20che=20faceva=20selezionare=20ordi?=
=?UTF-8?q?ni=20random=20in=20avantielenco=20spedizione?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/caches/build_file_checksums.ser | Bin 964 -> 964 bytes
app/build.gradle | 3 +-
.../core/di/BindableBoolean.java | 71 ++++-
.../vendita/core/MainListVenditaAdapter.java | 28 +-
.../ui/CheckBoxThreeStates.java | 293 ++++++++++++++++++
.../input_quantity/DialogInputQuantity.java | 45 +++
.../layout/dialog_input_quantity_articolo.xml | 9 +
.../layout/vendita_main_list_group_model.xml | 6 +-
.../res/layout/vendita_main_list_model.xml | 25 +-
app/src/main/res/values-it/strings.xml | 9 +
app/src/main/res/values/strings.xml | 10 +-
11 files changed, 471 insertions(+), 28 deletions(-)
create mode 100644 app/src/main/java/it/integry/integrywmsnative/ui/CheckBoxThreeStates.java
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 4c745cc92a601727d71ca7f91878d9a1bd5872df..bb89238ddf2c833f4bb05df461e8dbbb8b56f9f9 100644
GIT binary patch
delta 37
vcmV+=0NVe=2gC=Em;|y^dEv2~2LceWLV&_BR to be used as fieldId.
+ *
+ * @param fieldId The generated BR id for the Bindable field.
+ */
+ public void notifyPropertyChanged(int fieldId) {
+ synchronized (this) {
+ if (mCallbacks == null) {
+ return;
+ }
+ }
+ mCallbacks.notifyCallbacks(this, fieldId, null);
+ }
+
public boolean get() {
return mValue;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
index 01e8dcc2..4e17a907 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java
@@ -29,8 +29,6 @@ public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter mCallbacksDictionary = new HashMap<>();
-
private List mDataset;
private RunnableArgs mOnSingleSelectionChanged;
@@ -103,6 +101,10 @@ public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.anyMatch(OrdineVenditaInevasoDTO::isSelected);
+ List ordersToSelect =
+ Stream.of(mDataset)
+ .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())).toList();
+
Stream.of(mDataset)
.filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd()))
.forEach(x -> x.setSelected(!anySelected));
@@ -110,14 +112,15 @@ public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter {
ordine.setSelected(isChecked);
mOnSingleSelectionChanged.run(ordine);
});
-
- ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected));
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/CheckBoxThreeStates.java b/app/src/main/java/it/integry/integrywmsnative/ui/CheckBoxThreeStates.java
new file mode 100644
index 00000000..62cf64fd
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/CheckBoxThreeStates.java
@@ -0,0 +1,293 @@
+package it.integry.integrywmsnative.ui;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.ViewDebug;
+
+import androidx.annotation.ArrayRes;
+import androidx.appcompat.widget.AppCompatCheckBox;
+
+import it.integry.integrywmsnative.R;
+
+public class CheckBoxThreeStates extends AppCompatCheckBox {
+
+
+ private boolean mBroadcasting;
+ private boolean mIndeterminate;
+
+ private OnCheckedChangeListener mOnCheckedChangeListener;
+
+
+ private static final int[] INDETERMINATE_STATE_SET = {
+// R.attr.state_indeterminate
+ };
+
+ private static final int[] DEFAULT_CYCLE = {
+ 1, 0, 1, 0
+ };
+
+ private int[] mCycle = DEFAULT_CYCLE;
+
+// public CheckBoxThreeStates(final Context context) {
+// this(context, null);
+// }
+
+// public CheckBoxThreeStates(final Context context, final AttributeSet attrs) {
+// this(context, attrs, R.attr.checkbox3Style);
+// }
+
+ public CheckBoxThreeStates(final Context context, final AttributeSet attrs, final int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+/*
+ final TypedArray a =
+ context.obtainStyledAttributes(attrs, R.styleable.CheckBox3, defStyleAttr, R.style.Widget_Checkbox3);
+
+ try {
+
+ if (a.hasValue(R.styleable.CheckBox3_checkbox3_checkableCycle)) {
+ int cycleRes = a.getResourceId(R.styleable.CheckBox3_checkbox3_checkableCycle, 0);
+ if (cycleRes != 0) {
+ setCycle(getResources().getIntArray(cycleRes));
+ }
+ }
+
+ if (a.hasValue(R.styleable.CheckBox3_android_fontFamily)) {
+ final String font = a.getString(R.styleable.CheckBox3_android_fontFamily);
+ setTypeface(TypefaceUtils.loadFromAsset(getResources().getAssets(), font));
+ }
+
+ final boolean indeterminate = a.getBoolean(R.styleable.CheckBox3_checkbox3_indeterminate, false);
+ final boolean checked = a.getBoolean(R.styleable.CheckBox3_android_checked, false);
+
+ mBroadcasting = true;
+
+ int index = getStateIndex(checked, indeterminate);
+ if (!isValidStateIndex(index)) {
+ index = getFirstValidStateIndex(index);
+ }
+ moveToState(index);
+
+ } finally {
+ a.recycle();
+ }
+ */
+ }
+
+ public void setCycle(@ArrayRes final int cycleRes) {
+ setCycle(getResources().getIntArray(cycleRes));
+ }
+
+ /**
+ * Change the cycle used to determine the next state of the checkbox when the user
+ * click the component, or when the {@link #toggle()} is called.
+ * The value passed is an array of 4 integer elements, representing the state of the checkbox.
+ * The value of each element can be 0 or 1, with 0 to disable the state and 1 to enable the state.
+ * The states are (in order):
+ *
+ *
Checked
+ *
Indeterminate (checked)
+ *
Unchecked
+ *
Indeterminate (unchecked)
+ *
+ * So if a cycle like this one is used:
+ * int[] cycle = new int[]{1,0,1,0}
+ * the checkbox will only cycle between checked and unchecked state.
+ * The default cycle is: {1,0,1,0}
+ *
+ *
The method throws an exception if the array is not valid. A valid array must match the following rules:
+ *
+ *
If not null, must have 4 elements
+ *
At least 2 elements must be not equal to 0
+ *
+ *
+ * @param cycle change the cycle
+ */
+ public void setCycle(final int[] cycle) {
+ validateCycle(cycle);
+ mCycle = cycle == null ? DEFAULT_CYCLE : cycle;
+ }
+
+ /**
+ * Move to the next state of the checkbox
+ */
+ @Override
+ public void toggle() {
+ if (null == mCycle) return;
+
+ final int currentIndex = getCurrentStateIndex();
+ moveToNextState(currentIndex);
+ }
+
+ @Override
+ public void setChecked(boolean checked) {
+ if (null == mCycle) return;
+
+ int index = getStateIndex(checked, isIndeterminate());
+ if (!isValidStateIndex(index)) {
+ return;
+ }
+
+ super.setChecked(checked);
+ }
+
+ /**
+ * Change the state of the checkbox
+ *
+ * @param checked
+ * @param indeterminate
+ */
+ public void setChecked(boolean checked, boolean indeterminate) {
+ if (null == mCycle) return;
+
+ if (isChecked() == checked) {
+ setIndeterminate(indeterminate);
+ } else {
+ mIndeterminate = indeterminate;
+ }
+ setChecked(checked);
+ }
+
+ @ViewDebug.ExportedProperty
+ public boolean isIndeterminate() {
+ return mIndeterminate;
+ }
+
+ public void setIndeterminate(boolean indeterminate) {
+ if (null == mCycle) return;
+
+ int index = getStateIndex(isChecked(), indeterminate);
+ if (!isValidStateIndex(index)) {
+ return;
+ }
+
+ setIndeterminateImpl(indeterminate, true);
+ }
+
+ private void moveToNextState(final int index) {
+ int nextIndex = getNextValidIndex(index);
+ boolean checked = nextIndex < 2;
+ mIndeterminate = nextIndex == 1 || nextIndex == 3;
+ setChecked(checked);
+ }
+
+ private void moveToState(final int nextIndex) {
+ if (!isValidStateIndex(nextIndex)) {
+ }
+ boolean checked = nextIndex < 2;
+ mIndeterminate = nextIndex == 1 || nextIndex == 3;
+ setChecked(checked);
+ }
+
+
+ private void validateCycle(final int[] cycle) {
+ if (null == cycle) {
+ return;
+ }
+ if (cycle.length != 4) {
+ throw new IllegalArgumentException("Invalid cycle length. Expected 4 an array or 4 int");
+ }
+
+ int total = 0;
+ for (final int i1 : cycle) {
+ if (i1 != 0) {
+ total++;
+ }
+ }
+ if (total < 2) {
+ throw new IllegalArgumentException("Invalid cycle. At least 2 elements must be positive");
+ }
+ }
+
+ private int getCurrentStateIndex() {
+ return getStateIndex(isChecked(), isIndeterminate());
+ }
+
+ private int getStateIndex(boolean checked, boolean indeterminate) {
+ int index = 0;
+ if (checked) {
+ index += indeterminate ? 1 : 0;
+ } else {
+ index = indeterminate ? 3 : 2;
+ }
+ return index;
+ }
+
+ private int getFirstValidStateIndex(int index) {
+ int i = index;
+ while (i >= 0) {
+ if (mCycle[i] != 0) return i;
+ i--;
+ }
+
+ i = index;
+ while (i < mCycle.length) {
+ if (mCycle[i] != 0) return i;
+ i++;
+ }
+
+ return -1;
+ }
+
+ private boolean isValidStateIndex(int index) {
+ return mCycle[index] != 0;
+ }
+
+ private int getNextValidIndex(int index) {
+ int nextIndex = index + 1 >= mCycle.length ? 0 : index + 1;
+ if (mCycle[nextIndex] != 0) {
+ return nextIndex;
+ }
+ return getNextValidIndex(nextIndex);
+ }
+
+ @Override
+ public void setOnCheckedChangeListener(final OnCheckedChangeListener listener) {
+ super.setOnCheckedChangeListener(listener);
+ mOnCheckedChangeListener = listener;
+ }
+
+ @Override
+ protected int[] onCreateDrawableState(int extraSpace) {
+ final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
+ if (isIndeterminate()) {
+ mergeDrawableStates(drawableState, INDETERMINATE_STATE_SET);
+ }
+ return drawableState;
+ }
+
+ @Override
+ protected void drawableStateChanged() {
+ super.drawableStateChanged();
+ }
+
+ private void setIndeterminateImpl(boolean indeterminate, boolean notify) {
+ if (mIndeterminate != indeterminate) {
+ mIndeterminate = indeterminate;
+ refreshDrawableState();
+ if (notify) {
+ notifyStateListener();
+ }
+ }
+ }
+
+ private void notifyStateListener() {
+ if (mBroadcasting) {
+ return;
+ }
+
+ mBroadcasting = true;
+
+ if (mOnCheckedChangeListener != null) {
+ mOnCheckedChangeListener.onCheckedChanged(this, isChecked());
+ }
+ mBroadcasting = false;
+
+ }
+
+ @Override
+ public CharSequence getAccessibilityClassName() {
+ return CheckBoxThreeStates.class.getName();
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
index b288d59a..190a6064 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java
@@ -5,6 +5,7 @@ import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.ColorStateList;
+
import androidx.databinding.DataBindingUtil;
import androidx.databinding.Observable;
@@ -40,6 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
+import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputQuantityArticoloBinding;
@@ -371,6 +373,8 @@ public class DialogInputQuantity {
quantityDTO.expireDate = c.getTime();
}
+ refreshQtaDescriptionText();
+
}
@@ -502,6 +506,8 @@ public class DialogInputQuantity {
}
}
+
+// refreshQtaDescriptionText();
}
});
@@ -537,6 +543,7 @@ public class DialogInputQuantity {
}
}
+// refreshQtaDescriptionText();
}
});
@@ -567,6 +574,8 @@ public class DialogInputQuantity {
}
}
+
+// refreshQtaDescriptionText();
}
});
@@ -627,6 +636,42 @@ public class DialogInputQuantity {
}
+ private void refreshQtaDescriptionText() {
+
+ int numConf = (int) (currentQuantityDto.qtaDaEvadere.get() / currentQuantityDto.qtaCnf.get());
+ float qtaTot = currentQuantityDto.qtaDaEvadere.get().floatValue();
+
+ float mod = qtaTot % numConf;
+
+ String text = "";
+
+ if(numConf > 0) {
+ text += "" + numConf + " " + currentContext.getResources().getQuantityString(R.plurals.item_package, numConf).toUpperCase() + "";
+ }
+ if(numConf > 0 && mod > 0) {
+ text += " e ";
+ }
+ if(mod > 0) {
+
+ text += "" + UtilityNumber.decimalToString(mod) + " ";
+ if(mod == 1) {
+ text += currentContext.getResources().getQuantityString(R.plurals.pieces, (int) mod).toUpperCase();
+ } else {
+ text += currentContext.getString(R.string.piece).toUpperCase();
+ }
+
+ text += "";
+
+
+
+ }
+
+ currentBinding.qtaDescriptionText.setText(Html.fromHtml(text));
+
+ }
+
+
+
private void onConfirm(Context context, QuantityDTO quantityDTO, RunnableArgss dialogCallback, boolean closeUL){
if(currentDTO.mtbAart.isFlagTracciabilita() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
diff --git a/app/src/main/res/layout/dialog_input_quantity_articolo.xml b/app/src/main/res/layout/dialog_input_quantity_articolo.xml
index ab6504e0..f6283472 100644
--- a/app/src/main/res/layout/dialog_input_quantity_articolo.xml
+++ b/app/src/main/res/layout/dialog_input_quantity_articolo.xml
@@ -213,6 +213,15 @@
+
+
diff --git a/app/src/main/res/layout/vendita_main_list_group_model.xml b/app/src/main/res/layout/vendita_main_list_group_model.xml
index 001e2b32..20fc1109 100644
--- a/app/src/main/res/layout/vendita_main_list_group_model.xml
+++ b/app/src/main/res/layout/vendita_main_list_group_model.xml
@@ -14,7 +14,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingStart="8dp"
+ android:paddingStart="2dp"
android:paddingEnd="4dp">
@@ -30,7 +30,7 @@
android:background="@color/full_white">
-
-
+
+
+
+
+
+
+
+
+
+ android:paddingStart="12dp"
+ android:paddingTop="8dp"
+ android:paddingEnd="8dp"
+ android:paddingBottom="8dp">
-
+
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index b6edd4b4..31a9a986 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -77,6 +77,14 @@
%d ordine]]>%d ordini]]>
+
+ @string/piece
+ pezzi
+
+
+ confezione
+ confezioni
+ Chiudi ULArticoli presentiOrdini
@@ -85,6 +93,7 @@
DataPosizionePreparato da
+ Pezzo
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f58d92bf..764bf300 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -75,6 +75,14 @@
%d order selected]]>%d orders selected]]>
+
+ @string/piece
+ pieces
+
+
+ package
+ packages
+ Close LUSubmitted itemsOrders
@@ -86,7 +94,7 @@
Picking not availablePlease scan an item barcodeExtra item
-
+ Piecebetween 3 and 30 alphanumeric charactersenter a valid username
From 3ceab8083fb2ae1f9ec00d7859304aacb8802e71 Mon Sep 17 00:00:00 2001
From: GiuseppeS
Date: Tue, 2 Jul 2019 19:06:44 +0200
Subject: [PATCH 6/6] -> v1.6.5(66)
---
.idea/caches/build_file_checksums.ser | Bin 964 -> 964 bytes
app/build.gradle | 4 ++--
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index bb89238ddf2c833f4bb05df461e8dbbb8b56f9f9..179bcd7925b20571e7ebf26b3d781174fe77cc4d 100644
GIT binary patch
delta 37
vcmV+=0NVe=2gC=Em;|$@0i3a%2Lce(?y6QC1P7j?69p5(Zzd