From 836a5c186b02adb3287af4df9560a6f791cf6032 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 27 Jun 2019 08:22:16 +0200 Subject: [PATCH 1/3] 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/3] 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/3] [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