From 66543a06b520768c477e12c8dd2a53845e4f26a5 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 8 Jul 2019 18:46:46 +0200 Subject: [PATCH] [REFACT] Ricostruito completamente l'adapter della lista di avantielenco Accettazione --- .../MainAccettazioneFragment.java | 290 ++++++++++-------- .../accettazione/core/AccettazioneHelper.java | 66 ++-- .../core/MainListAccettazioneAdapter.java | 213 ------------- .../core/MainListAccettazioneAdapterNew.java | 194 ++++++++++++ .../dto/OrdineAccettazioneDTO.java | 117 ++++++- .../OrdineAccettazioneGroupedInevasoDTO.java | 233 -------------- .../AccettazioneOrdineInevasoActivity.java | 2 +- ...ccettazioneInevasoRESTConsumerService.java | 8 +- ...oneOrdineAccettazioneInevasoViewModel.java | 12 +- .../ProdOrdineProduzioneElencoFragment.java | 18 +- .../core/OrdineProduzioneHelper.java | 10 +- .../core/OrdineProduzioneListAdapter.java | 15 +- .../accettazione_main_list_group_clienti.xml | 42 +-- .../accettazione_main_list_group_model.xml | 62 ++-- .../layout/accettazione_main_list_model.xml | 90 +++--- 15 files changed, 621 insertions(+), 751 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapterNew.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java index d1590153..fc443681 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneFragment.java @@ -21,26 +21,21 @@ import android.widget.Toast; import com.annimon.stream.Stream; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.REST.CommonRESTException; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; -import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding; import it.integry.integrywmsnative.gest.accettazione.core.AccettazioneHelper; -import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapter; +import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneAdapterNew; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback; -import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione_ordine_inevaso.AccettazioneOrdineInevasoActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; @@ -53,10 +48,11 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag private FragmentMainAccettazioneBinding mBinding; - private AccettazioneHelper helper; + private AccettazioneHelper mHelper; + private MainListAccettazioneAdapterNew mAdapter; - private List groupedOrdiniInevasi; - private MainListAccettazioneAdapter mAdapter; + private List mOriginalOrderList; + private List mRenderedOrderList = new ArrayList<>(); private AppCompatTextView mAppBarTitle; @@ -126,18 +122,19 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), getText(R.string.loading) + " ...", true); - helper = new AccettazioneHelper(getActivity()); + mHelper = new AccettazioneHelper(getActivity()); - helper.loadOrdini(new ILoadOrdiniCallback() { + mHelper.loadOrdini(new ILoadOrdiniCallback() { @Override public void onLoadSuccess(List ordini) { if(ordini != null) { Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); - groupOrdiniAndMakeRecycler(ordini); + mOriginalOrderList = ordini; } mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - + refreshRenderedOrdini(ordini); + initRecyclerView(); progress.dismiss(); } @@ -154,127 +151,156 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } - - private void groupOrdiniAndMakeRecycler(List ordini){ - - for(OrdineAccettazioneInevasoDTO ordine : ordini){ - if(UtilityString.isNullOrEmpty(ordine.getCodJcom()) || ordine.getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){ - ordine.setCodJcom(CommonConst.Config.COMMESSA_MAG); - ordine.setDescrizioneCom("MAGAZZINO"); - } - } - - groupedOrdiniInevasi = new ArrayList<>(); - - //Splitto gli ordini per codAnagClie - List groupedOrdini = Stream.of(ordini) - .map(x -> { - OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO(); - - groupedOrdine.codAnagForn = x.getCodAnagOrd(); - groupedOrdine.nomeFornitore = x.getRagSocOrd(); - groupedOrdine.ordini = new ArrayList<>(); - - return groupedOrdine; - }) - .distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore) - .sortBy(x -> x.nomeFornitore) - .toList(); - - - Stream.of(groupedOrdini).forEach(groupedOrdine -> { - - - //Splitto gli ordini di ogni fornitore per data e numero - List tmpOrd = Stream.of(ordini) - .filter(x -> x.getCodAnagOrd().equals(groupedOrdine.codAnagForn)) - - .sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01)) - .map(x -> { - - OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine(); - - rigaOrdine.data = x.getData(); - rigaOrdine.numero = x.getNumero(); - rigaOrdine.gestione = x.getGestione(); - rigaOrdine.codAnagOrd = x.getCodAnagOrd(); - rigaOrdine.ragSocOrd = x.getRagSocOrd(); - rigaOrdine.pesoTotale = x.getPesoTotale(); - rigaOrdine.barcode = x.getBarcode(); - rigaOrdine.termCons = x.getTermCons(); - rigaOrdine.dataCons = x.getDataConsS(); - rigaOrdine.rifOrd = x.getRifOrd(); - rigaOrdine.clienti = new ArrayList<>(); - - return rigaOrdine; - }) - .distinctBy(x -> x.barcode) - .toList(); - - - Stream.of(tmpOrd) - .forEach(rigaOrdine -> { - - Stream.of(ordini) - .filter(x -> - x.getCodAnagOrd().equals(rigaOrdine.codAnagOrd) && - x.getNumero() == rigaOrdine.numero && - x.getData().equals(rigaOrdine.data)) - .forEach(x -> { - OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente(); - - cliente.codJcom = x.getCodJcom(); - cliente.ragSocCom = x.getRagSocCom(); - cliente.descrCom = x.getDescrizioneCom(); - cliente.dataCons = x.getDataConsS(); - cliente.numCnf = x.getNumCnf(); - cliente.rifOrd = x.getRifOrd(); - - rigaOrdine.clienti.add(cliente); - }); - - - groupedOrdine.ordini.add(rigaOrdine); - - }); - - groupedOrdiniInevasi.add(groupedOrdine); - }); - - mAdapter = new MainListAccettazioneAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged); + private void initRecyclerView() { + mAdapter = new MainListAccettazioneAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged); mBinding.accettazioneMainList.setAdapter(mAdapter); } + private void refreshRenderedOrdini(List ordini) { + + mRenderedOrderList.clear(); + mRenderedOrderList.addAll(ordini); + } + + private void refreshRecyclerView() { + mAdapter.updateItems(mRenderedOrderList); + } + + + + private RunnableArgs onSingleSelectionChanged = dto -> { + List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + + if(dto.isSelected()) { + Stream.of(selectedOrders) + .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) + .forEach(x -> x.setSelected(false)); + } + + if(selectedOrders != null && selectedOrders.size() > 0) { + mBinding.accettazioneMainFab.show(); + } + else { + mBinding.accettazioneMainFab.hide(); + } + }; + +// private void groupOrdiniAndMakeRecycler(List ordini){ +// +// for(OrdineAccettazioneInevasoDTO ordine : ordini){ +// if(UtilityString.isNullOrEmpty(ordine.getCodJcom()) || ordine.getCodJcom().equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)){ +// ordine.setCodJcom(CommonConst.Config.COMMESSA_MAG); +// ordine.setDescrizioneCom("MAGAZZINO"); +// } +// } +// +// groupedOrdiniInevasi = new ArrayList<>(); +// +// //Splitto gli ordini per codAnagClie +// List groupedOrdini = Stream.of(ordini) +// .map(x -> { +// OrdineAccettazioneGroupedInevasoDTO groupedOrdine = new OrdineAccettazioneGroupedInevasoDTO(); +// +// groupedOrdine.codAnagForn = x.getCodAnagOrd(); +// groupedOrdine.nomeFornitore = x.getRagSocOrd(); +// groupedOrdine.ordini = new ArrayList<>(); +// +// return groupedOrdine; +// }) +// .distinctBy(x -> x.codAnagForn + "_" + x.nomeFornitore) +// .sortBy(x -> x.nomeFornitore) +// .toList(); +// +// +// Stream.of(groupedOrdini).forEach(groupedOrdine -> { +// +// +// //Splitto gli ordini di ogni fornitore per data e numero +// List tmpOrd = Stream.of(ordini) +// .filter(x -> x.getCodAnagOrd().equals(groupedOrdine.codAnagForn)) +// +// .sortBy(x -> x.getDataConsD() != null ? x.getDataConsD() : new Date(2000, 01, 01)) +// .map(x -> { +// +// OrdineAccettazioneGroupedInevasoDTO.Ordine rigaOrdine = new OrdineAccettazioneGroupedInevasoDTO.Ordine(); +// +// rigaOrdine.data = x.getData(); +// rigaOrdine.numero = x.getNumero(); +// rigaOrdine.gestione = x.getGestione(); +// rigaOrdine.codAnagOrd = x.getCodAnagOrd(); +// rigaOrdine.ragSocOrd = x.getRagSocOrd(); +// rigaOrdine.pesoTotale = x.getPesoTotale(); +// rigaOrdine.barcode = x.getBarcode(); +// rigaOrdine.termCons = x.getTermCons(); +// rigaOrdine.dataCons = x.getDataConsS(); +// rigaOrdine.rifOrd = x.getRifOrd(); +// rigaOrdine.clienti = new ArrayList<>(); +// +// return rigaOrdine; +// }) +// .distinctBy(x -> x.barcode) +// .toList(); +// +// +// Stream.of(tmpOrd) +// .forEach(rigaOrdine -> { +// +// Stream.of(ordini) +// .filter(x -> +// x.getCodAnagOrd().equals(rigaOrdine.codAnagOrd) && +// x.getNumero() == rigaOrdine.numero && +// x.getData().equals(rigaOrdine.data)) +// .forEach(x -> { +// OrdineAccettazioneGroupedInevasoDTO.Cliente cliente = new OrdineAccettazioneGroupedInevasoDTO.Cliente(); +// +// cliente.codJcom = x.getCodJcom(); +// cliente.ragSocCom = x.getRagSocCom(); +// cliente.descrCom = x.getDescrizioneCom(); +// cliente.dataCons = x.getDataConsS(); +// cliente.numCnf = x.getNumCnf(); +// cliente.rifOrd = x.getRifOrd(); +// +// rigaOrdine.clienti.add(cliente); +// }); +// +// +// groupedOrdine.ordini.add(rigaOrdine); +// +// }); +// +// groupedOrdiniInevasi.add(groupedOrdine); +// }); +// +// mAdapter = new MainListAccettazioneAdapterNew(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged); +// mBinding.accettazioneMainList.setAdapter(mAdapter); +// } + private void onAccettazioneMainFabClick() { - List selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi); + List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); List barcodes = new ArrayList<>(); - for(OrdineAccettazioneGroupedInevasoDTO ordine : selectedOrders){ - for(OrdineAccettazioneGroupedInevasoDTO.Ordine righeOrd : ordine.ordini){ - barcodes.add(righeOrd.barcode); - } + for(OrdineAccettazioneInevasoDTO ordine : selectedOrders){ + if(!barcodes.contains(ordine.getBarcode())) barcodes.add(ordine.getBarcode()); } final ProgressDialog progress = ProgressDialog.show(getActivity(), getText(R.string.waiting), getText(R.string.loading) + " ...", true); - helper.retrievePickingList(barcodes, new ILoadPickingListCallback() { - @Override - public void onLoadSuccess(final List ordini) { + mHelper.retrievePickingList(barcodes, ordini -> { progress.dismiss(); AtomicInteger artsCounter = new AtomicInteger(); Stream.of(ordini).forEach(x -> { - artsCounter.addAndGet((int) Stream.of(x.ordini).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count()); + artsCounter.addAndGet((int) Stream.of(x.getOrdini()).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count()); }); List ordersKeys = new ArrayList<>(); for(OrdineAccettazioneDTO ordine : ordini){ - if(!ordersKeys.contains(ordine.data + " " + ordine.numero + " " + ordine.gestione)){ - ordersKeys.add(ordine.data + " " + ordine.numero + " " + ordine.gestione); + if(!ordersKeys.contains(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione())){ + ordersKeys.add(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione()); } } @@ -294,36 +320,32 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag }).show(); - } - - @Override - public void onLoadFail(Exception ex) { + }, ex -> { // Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show(); progress.dismiss(); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); DialogSimpleMessageHelper.makeErrorDialog(getActivity(), new SpannableString(errorMessage), null, null).show(); - } - }); + }); } - private RunnableArgs onGroupSelectionChanged = dto -> { - List selectedOrders = helper.getSelectedOrders(groupedOrdiniInevasi); - - if(selectedOrders != null && selectedOrders.size() > 1){ - for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) { - if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) { - Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false)); - } - } - } - - if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show(); - else mBinding.accettazioneMainFab.hide(); - }; +// private RunnableArgs onGroupSelectionChanged = dto -> { +// List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); +// +// if(selectedOrders != null && selectedOrders.size() > 1){ +// for (OrdineAccettazioneGroupedInevasoDTO selectedOrder : selectedOrders) { +// if(!dto.codAnagForn.equalsIgnoreCase(selectedOrder.codAnagForn)) { +// Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false)); +// } +// } +// } +// +// if(selectedOrders.size() > 0) mBinding.accettazioneMainFab.show(); +// else mBinding.accettazioneMainFab.hide(); +// }; @@ -345,8 +367,8 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag @Override public boolean onQueryTextChange(String newText) { - final List filtermodelist = helper.getFilteredOrdersByFornitore(groupedOrdiniInevasi, newText); - mAdapter.setFilter(filtermodelist); + final List filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText); + mAdapter.updateItems(filtermodelist); return true; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java index 77055e08..f5725430 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java @@ -4,19 +4,19 @@ import android.content.Context; import android.text.TextUtils; import android.util.Log; +import com.annimon.stream.Stream; + import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.RESTBuilder; 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.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadOrdiniCallback; -import it.integry.integrywmsnative.gest.accettazione.core.interfaces.ILoadPickingListCallback; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneDTO; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; import retrofit2.Call; @@ -70,7 +70,7 @@ public class AccettazioneHelper { }); } - public void retrievePickingList(List barcodeOrdini, final ILoadPickingListCallback callback){ + public void retrievePickingList(List barcodeOrdini, RunnableArgs> onComplete, RunnableArgs onFailed){ String joinedBarcodes = TextUtils.join(",", barcodeOrdini); @@ -86,26 +86,26 @@ public class AccettazioneHelper { List dto = response.body().getDto(); for (OrdineAccettazioneDTO ordine : dto) { - for(OrdineAccettazioneDTO.Riga riga : ordine.ordini){ - riga.numOrd = ordine.numero; - riga.dataOrd = ordine.data; - riga.gestioneOrd = ordine.gestione; - riga.codAlis = ordine.codAlis; + for(OrdineAccettazioneDTO.Riga riga : ordine.getOrdini()){ + riga.numOrd = ordine.getNumero(); + riga.dataOrd = ordine.getData(); + riga.gestioneOrd = ordine.getGestione(); + riga.codAlis = ordine.getCodAlis(); } } - callback.onLoadSuccess(dto); + onComplete.run(dto); } else { Log.e("Accettazione", response.body().getErrorMessage()); - callback.onLoadFail(new Exception(response.message())); + onFailed.run(new Exception(response.message())); } } else { Log.e("Accettazione", response.message()); - callback.onLoadFail(new Exception(response.message())); + onFailed.run(new Exception(response.message())); } } else { Log.e("Accettazione", "Status " + response.code() + ": " + response.message()); - callback.onLoadFail(new Exception("Status " + response.code() + ": " + response.message())); + onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); } } @@ -113,50 +113,32 @@ public class AccettazioneHelper { public void onFailure(Call>> call, Throwable t) { Log.e("Accettazione", t.toString()); UtilityLogger.errorMe(new Exception(t)); - callback.onLoadFail(new Exception(t)); + onFailed.run(new Exception(t)); } }); } - public List getSelectedOrders(List groupedOrdiniInevasi){ - List selectedOrdini = new ArrayList<>(); - 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).ordini.get(j).checkBox) { - selectedOrdiniGroup.add(groupedOrdiniInevasi.get(i).ordini.get(j)); - } - } - - if(selectedOrdiniGroup.size() > 0) { - try { - OrdineAccettazioneGroupedInevasoDTO cloneOrdine = groupedOrdiniInevasi.get(i).clone(); - cloneOrdine.ordini = selectedOrdiniGroup; - selectedOrdini.add(cloneOrdine); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); - } - } - } - - return selectedOrdini; + public List getSelectedOrders(List ordiniList){ + return Stream.of(ordiniList) + .filter(OrdineAccettazioneInevasoDTO::isSelected) + .toList(); } - public List getFilteredOrdersByFornitore(List groupedOrdiniInevasi, String textFilter){ - List selectedOrdini = new ArrayList<>(); + + public List getFilteredOrdersByFornitore(List groupedOrdiniInevasi, String textFilter){ + List filteredOrders = new ArrayList<>(); for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ - if(groupedOrdiniInevasi.get(i).nomeFornitore.toLowerCase().contains(textFilter.toLowerCase())){ - selectedOrdini.add(groupedOrdiniInevasi.get(i)); + if(groupedOrdiniInevasi.get(i).getRagSocOrd().toLowerCase().contains(textFilter.toLowerCase())){ + filteredOrders.add(groupedOrdiniInevasi.get(i)); } } - - return selectedOrdini; + return filteredOrders; } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java deleted file mode 100644 index 231eef66..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapter.java +++ /dev/null @@ -1,213 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.core; - -import android.content.Context; -import androidx.core.util.Pools; -import androidx.recyclerview.widget.RecyclerView; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.LinearLayout; -import android.widget.TextView; - -import java.util.ArrayList; -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.accettazione.dto.OrdineAccettazioneGroupedInevasoDTO; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class MainListAccettazioneAdapter extends RecyclerView.Adapter { - - private Context mContext; - private List mDataset; - private RunnableArgs mOnGroupSelected; - - private Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(2000); - private Pools.SynchronizedPool sPoolClienti = new Pools.SynchronizedPool(3000); - - 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 views = new ArrayList<>(); - - public ViewHolder(View v) { - super(v); - } - } - - // Provide a suitable constructor (depends on the kind of dataset) - public MainListAccettazioneAdapter(Context context, List myDataset, RunnableArgs onGroupSelected) { - mContext = context; - mDataset = myDataset; - mOnGroupSelected = onGroupSelected; - } - - // Create new views (invoked by the layout manager) - @Override - public MainListAccettazioneAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, - int viewType) { - // create a new view - View v = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.accettazione_main_list_model, parent, false); - - ViewHolder vh = new ViewHolder(v); - - TextView groupHeader = v.findViewById(R.id.accettazione_main_list_group_header); - vh.mTextViewGroupHeader = groupHeader; - - LinearLayout groupItemContainer = v.findViewById(R.id.accettazione_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 - - final List subGroup = mDataset.get(position).ordini; - final int finalPosition = position; - - holder.mTextViewGroupHeader.setText(mDataset.get(position).nomeFornitore); - holder.itemView.setOnClickListener(view -> { - boolean newValue = true; - - for(int i = 0; i < subGroup.size(); i++){ - if(subGroup.get(i).checkBox) newValue = false; - } - - for(int i = 0; i < subGroup.size(); i++){ - subGroup.get(i).setCheckbox(newValue); - } - - mOnGroupSelected.run(mDataset.get(finalPosition)); - }); - - for (int i = 0; i < subGroup.size(); i++) { - final OrdineAccettazioneGroupedInevasoDTO.Ordine ordine = subGroup.get(i); - - ordine.checkBoxCallback = new ArrayList<>(); - - View groupModelViewPool = (View) sPool.acquire(); - if(groupModelViewPool == null){ - groupModelViewPool = LayoutInflater.from(mContext) - .inflate(R.layout.accettazione_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false); - } - - View groupModelView = groupModelViewPool; - holder.views.add(groupModelView); - - - groupModelView.setVisibility(View.VISIBLE); - - if (i % 2 == 1) { - groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); - } else { - groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.white)); - } - - final CheckBox checkBox = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_checkBox); - checkBox.setChecked(ordine.checkBox); - - ordine.checkBoxCallback.add(checkBox::setChecked); - - groupModelView.setOnClickListener(view -> { - checkBox.toggle(); - ordine.checkBox = checkBox.isChecked(); - mOnGroupSelected.run(mDataset.get(finalPosition)); -// mCheckBoxCallback.onToggle(checkBox.isChecked()); - }); - - TextView testataOrdTextView = groupModelView.findViewById(R.id.accettazione_main_list_group_item_container_testata_ord); - String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.numero), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - testataOrdTextView.setText(Html.fromHtml(testataOrdString)); - - LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.accettazione_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.accettazione_main_list_group_clienti, clientLinearLayout, false); - } - - View groupClienteModelView = groupClienteModelViewPool; - - - TextView clienteComm = groupClienteModelView.findViewById(R.id.accettazione_main_list_group_clienti_comm); - String clienteText; -// clienteText = subGroupClienti.get(k).codJcom + " - " + subGroupClienti.get(k).descrCom; - clienteText = subGroupClienti.get(k).rifOrd; - clienteComm.setText(clienteText); - - TextView dataCons = groupClienteModelView.findViewById(R.id.accettazione_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(groupModelView); - } - - - } - - @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.accettazione_main_list_group_item_container_clienti_ord); - - 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() { - return mDataset.size(); - } - - - public void setFilter(List newDataset) { - mDataset = new ArrayList<>(); - mDataset.addAll(newDataset); - notifyDataSetChanged(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapterNew.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapterNew.java new file mode 100644 index 00000000..d1da50b0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneAdapterNew.java @@ -0,0 +1,194 @@ +package it.integry.integrywmsnative.gest.accettazione.core; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +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.ArrayList; +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.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupClientiBinding; +import it.integry.integrywmsnative.databinding.AccettazioneMainListGroupModelBinding; +import it.integry.integrywmsnative.databinding.AccettazioneMainListModelBinding; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.prod_ord_produzione.core.OrdineProduzioneListAdapter; +import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; + +public class MainListAccettazioneAdapterNew extends SectionedRecyclerViewAdapter implements SectionTitleProvider { + + + private Context mContext; + + private List mOriginalDataset; + private List mDataset; + private RunnableArgs mOnSingleSelectionChanged; + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + AccettazioneMainListModelBinding binding; + + SubheaderHolder(AccettazioneMainListModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + AccettazioneMainListGroupModelBinding binding; + + SingleItemViewHolder(AccettazioneMainListGroupModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + } + + public MainListAccettazioneAdapterNew(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { + mContext = context; + mOriginalDataset = myDataset; + 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) + .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) + .sortBy(x -> x.getRagSocOrd() + "" + UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .toList(); + + } + + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + AccettazioneMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_model, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.accettazioneMainListGroupHeader.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(OrdineAccettazioneInevasoDTO::isSelected); + + Stream.of(mDataset) + .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) + .forEach(x -> x.setSelected(!anySelected)); + }); + } + + @Override + public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) { + final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition); + final SingleItemViewHolder holder = h; + + holder.binding.accettazioneMainListGroupItemContainerCheckBox.setTag(ordine.getNumero()); + + holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); + + ordine.selected.resetOnPropertyChangedCallback(); + + + String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); + + holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews(); + + List clienti = Stream.of(mOriginalDataset) + .filter(x -> x.getBarcode().equals(ordine.getBarcode())) + .toList(); + + for (OrdineAccettazioneInevasoDTO cliente : clienti) { + AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false); + + binding.accettazioneMainListGroupClientiComm.setText(cliente.getRifOrd()); + + if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) { + binding.accettazioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); + } else { + binding.accettazioneMainListGroupClientiDatacons.setText(""); + } + + holder.binding.accettazioneMainListGroupItemContainerClientiOrd.addView(binding.getRoot()); + } + + holder.binding.setCheckboxValue(ordine.selected); + + holder.binding.getRoot().setOnClickListener(v -> { + ordine.setSelected(!ordine.isSelected()); + }); + + holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); + + //Bindable to View + ordine.selected.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + if(holder.binding.accettazioneMainListGroupItemContainerCheckBox.getTag().equals(ordine.getNumero())) { + holder.binding.accettazioneMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); + } + } + }); + + + //View to Bindable + holder.binding.accettazioneMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { + ordine.setSelected(isChecked); + mOnSingleSelectionChanged.run(ordine); + }); + } + + + @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; + } + + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java index 6246d181..855b54a2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java @@ -20,17 +20,17 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; public class OrdineAccettazioneDTO implements Parcelable { - public String ragSoc; - public int numero; - public String data; - public String gestione; - public String codMdep; - public String codAnag; + private String ragSoc; + private int numero; + private String data; + private String gestione; + private String codMdep; + private String codAnag; private String codVdes; private String termCons; - public ArrayList ordini; - public String codAlis; - public String rifOrd; + private ArrayList ordini; + private String codAlis; + private String rifOrd; public static class Riga implements Parcelable { @@ -242,6 +242,8 @@ public class OrdineAccettazioneDTO implements Parcelable { return this; } + + public Riga(){} protected Riga(Parcel in) { @@ -382,5 +384,102 @@ public class OrdineAccettazioneDTO implements Parcelable { }; + public String getRagSoc() { + return ragSoc; + } + public OrdineAccettazioneDTO setRagSoc(String ragSoc) { + this.ragSoc = ragSoc; + return this; + } + + public int getNumero() { + return numero; + } + + public OrdineAccettazioneDTO setNumero(int numero) { + this.numero = numero; + return this; + } + + public String getData() { + return data; + } + + public OrdineAccettazioneDTO setData(String data) { + this.data = data; + return this; + } + + public String getGestione() { + return gestione; + } + + public OrdineAccettazioneDTO setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public String getCodMdep() { + return codMdep; + } + + public OrdineAccettazioneDTO setCodMdep(String codMdep) { + this.codMdep = codMdep; + return this; + } + + public String getCodAnag() { + return codAnag; + } + + public OrdineAccettazioneDTO setCodAnag(String codAnag) { + this.codAnag = codAnag; + return this; + } + + public String getCodVdes() { + return codVdes; + } + + public OrdineAccettazioneDTO setCodVdes(String codVdes) { + this.codVdes = codVdes; + return this; + } + + public String getTermCons() { + return termCons; + } + + public OrdineAccettazioneDTO setTermCons(String termCons) { + this.termCons = termCons; + return this; + } + + public ArrayList getOrdini() { + return ordini; + } + + public OrdineAccettazioneDTO setOrdini(ArrayList ordini) { + this.ordini = ordini; + return this; + } + + public String getCodAlis() { + return codAlis; + } + + public OrdineAccettazioneDTO setCodAlis(String codAlis) { + this.codAlis = codAlis; + return this; + } + + public String getRifOrd() { + return rifOrd; + } + + public OrdineAccettazioneDTO setRifOrd(String rifOrd) { + this.rifOrd = rifOrd; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java deleted file mode 100644 index 345e1992..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneGroupedInevasoDTO.java +++ /dev/null @@ -1,233 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.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.utility.UtilityDate; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class OrdineAccettazioneGroupedInevasoDTO implements Cloneable, Serializable, Parcelable { - - public String codAnagForn; - public String nomeFornitore; - public List ordini; - - public OrdineAccettazioneGroupedInevasoDTO clone() throws CloneNotSupportedException { - return (OrdineAccettazioneGroupedInevasoDTO) super.clone(); - } - - - public static class Ordine implements Parcelable{ - public String data; - public int numero; - public String codAnagOrd = ""; - public String ragSocOrd = ""; - public Float pesoTotale; - public String barcode; - public String termCons; - public String dataCons; - public String rifOrd; - public String gestione; - - 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 List clienti; - - - public Date getData(){ - try { - return UtilityDate.recognizeDate(data); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - 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; - } - } - - @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); - } - } - - @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 Integer 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.readInt(); - 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.writeInt(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 OrdineAccettazioneGroupedInevasoDTO(){} - - protected OrdineAccettazioneGroupedInevasoDTO(Parcel in) { - codAnagForn = in.readString(); - nomeFornitore = 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(codAnagForn); - dest.writeString(nomeFornitore); - 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 OrdineAccettazioneGroupedInevasoDTO createFromParcel(Parcel in) { - return new OrdineAccettazioneGroupedInevasoDTO(in); - } - - @Override - public OrdineAccettazioneGroupedInevasoDTO[] newArray(int size) { - return new OrdineAccettazioneGroupedInevasoDTO[size]; - } - }; - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java index 5648f96a..88c69e1a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/AccettazioneOrdineInevasoActivity.java @@ -98,7 +98,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity { private void setTitle(List ordini){ if(ordini.size() > 0){ if(ordini.size() == 1){ - setTitle(ordini.get(0).ragSoc); + setTitle(ordini.get(0).getRagSoc()); } else { setTitle(R.string.accettazione_ordine_inevaso_title_multiple_order); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java index 62424a9f..a4636a78 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/rest/OrdineAccettazioneInevasoRESTConsumerService.java @@ -27,12 +27,12 @@ public class OrdineAccettazioneInevasoRESTConsumerService { Stream.of(ordiniToShow).forEach(x -> { try { - Date date = UtilityDate.recognizeDate(x.data); + Date date = UtilityDate.recognizeDate(x.getData()); String dateString = UtilityDate.formatDate(date, "yyyy/MM/dd"); - if (!colliWhereCond.contains(x.gestione + " " + dateString + " " + x.numero)) { - String gestione = x.gestione.equalsIgnoreCase("P") ? "L" : x.gestione; - colliWhereCond.add(gestione + " " + dateString + " " + x.numero); + if (!colliWhereCond.contains(x.getGestione() + " " + dateString + " " + x.getNumero())) { + String gestione = x.getGestione().equalsIgnoreCase("P") ? "L" : x.getGestione(); + colliWhereCond.add(gestione + " " + dateString + " " + x.getNumero()); } } catch (Exception ex){ UtilityLogger.errorMe(ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java index 0de91edc..c9740413 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java @@ -97,7 +97,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC groupedOrdini = new ArrayList<>(); for (OrdineAccettazioneDTO ordine : mOrders){ - groupedOrdini.addAll(ordine.ordini); + groupedOrdini.addAll(ordine.getOrdini()); } helper = new AccettazioneOrdineInevasoHelper(mActivity); @@ -475,7 +475,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC List codAnags = stream(mOrders) - .select(c -> c.codAnag) + .select(c -> c.getCodAnag()) .distinct() .toList(); @@ -485,7 +485,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC List rifOrds = stream(mOrders) - .select(c -> c.rifOrd) + .select(c -> c.getRifOrd()) .distinct() .toList(); @@ -495,13 +495,13 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC List numDataOrds = stream(mOrders) - .select(value -> ("" + value.numero) + value.data) + .select(value -> ("" + value.getNumero()) + value.getData()) .distinct() .toList(); if(numDataOrds != null && numDataOrds.size() == 1){ - mtbColtToAddRefs.setNumOrd(mOrders.get(0).numero); - mtbColtToAddRefs.setDataOrd(mOrders.get(0).data); + mtbColtToAddRefs.setNumOrd(mOrders.get(0).getNumero()); + mtbColtToAddRefs.setDataOrd(mOrders.get(0).getData()); try { mtbColtToAddRefs.generaFiltroOrdine(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/ProdOrdineProduzioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/ProdOrdineProduzioneElencoFragment.java index 63f3c45f..dd2df31b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/ProdOrdineProduzioneElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/ProdOrdineProduzioneElencoFragment.java @@ -162,14 +162,10 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit 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(!allMatch) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(x.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); - } + if(dto.isSelected()) { + Stream.of(selectedOrders) + .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) + .forEach(x -> x.setSelected(false)); } if(selectedOrders != null && selectedOrders.size() > 0) { @@ -200,14 +196,14 @@ public class ProdOrdineProduzioneElencoFragment extends Fragment implements ITit AtomicInteger artsCounter = new AtomicInteger(); Stream.of(ordini).forEach(x -> { - artsCounter.addAndGet((int) Stream.of(x.ordini).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count()); + artsCounter.addAndGet((int) Stream.of(x.getOrdini()).filter(y -> y.getQtaDaEvadere().floatValue() > 0).count()); }); List ordersKeys = new ArrayList<>(); for(OrdineAccettazioneDTO ordine : ordini){ - if(!ordersKeys.contains(ordine.data + " " + ordine.numero + " " + ordine.gestione)){ - ordersKeys.add(ordine.data + " " + ordine.numero + " " + ordine.gestione); + if(!ordersKeys.contains(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione())){ + ordersKeys.add(ordine.getData() + " " + ordine.getNumero() + " " + ordine.getGestione()); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneHelper.java index 65e65315..d3b63ed0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneHelper.java @@ -80,11 +80,11 @@ public class OrdineProduzioneHelper { List dto = response.body().getDto(); for (OrdineAccettazioneDTO ordine : dto) { - for(OrdineAccettazioneDTO.Riga riga : ordine.ordini){ - riga.numOrd = ordine.numero; - riga.dataOrd = ordine.data; - riga.gestioneOrd = ordine.gestione; - riga.codAlis = ordine.codAlis; + for(OrdineAccettazioneDTO.Riga riga : ordine.getOrdini()){ + riga.numOrd = ordine.getNumero(); + riga.dataOrd = ordine.getData(); + riga.gestioneOrd = ordine.getGestione(); + riga.codAlis = ordine.getCodAlis(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneListAdapter.java index 9088f446..4f5b7450 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_ord_produzione/core/OrdineProduzioneListAdapter.java @@ -16,6 +16,7 @@ import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; import java.util.List; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -35,6 +36,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter mOriginalDataset; private List mDataset; private RunnableArgs mOnSingleSelectionChanged; @@ -63,6 +65,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter myDataset, RunnableArgs onSingleSelectionChanged) { mContext = context; + mOriginalDataset = myDataset; mDataset = orderItems(myDataset); mOnSingleSelectionChanged = onSingleSelectionChanged; } @@ -78,7 +81,7 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter orderItems(List dataset) { return Stream.of(dataset) .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) - .sortBy(OrdineAccettazioneInevasoDTO::getRagSocOrd) + .sortBy(x -> x.getRagSocOrd() + "" + UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .toList(); } @@ -86,15 +89,15 @@ public class OrdineProduzioneListAdapter extends SectionedRecyclerViewAdapter clienti = Stream.of(mDataset) + List clienti = Stream.of(mOriginalDataset) .filter(x -> x.getBarcode().equals(ordine.getBarcode())) .toList(); diff --git a/app/src/main/res/layout/accettazione_main_list_group_clienti.xml b/app/src/main/res/layout/accettazione_main_list_group_clienti.xml index ea278f24..06626c62 100644 --- a/app/src/main/res/layout/accettazione_main_list_group_clienti.xml +++ b/app/src/main/res/layout/accettazione_main_list_group_clienti.xml @@ -1,23 +1,25 @@ - - - + + android:layout_height="wrap_content"> - - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_main_list_group_model.xml b/app/src/main/res/layout/accettazione_main_list_group_model.xml index a908f7d7..8cf888b5 100644 --- a/app/src/main/res/layout/accettazione_main_list_group_model.xml +++ b/app/src/main/res/layout/accettazione_main_list_group_model.xml @@ -1,39 +1,53 @@ - + + + + - - + + + android:padding="8dp"> - + tools:layout_editor_absoluteX="0dp" + tools:layout_editor_absoluteY="1dp" /> - - - + android:layout_toEndOf="@id/accettazione_main_list_group_item_container_checkBox"> + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/accettazione_main_list_model.xml b/app/src/main/res/layout/accettazione_main_list_model.xml index 4f70e1dd..19e7d913 100644 --- a/app/src/main/res/layout/accettazione_main_list_model.xml +++ b/app/src/main/res/layout/accettazione_main_list_model.xml @@ -1,60 +1,64 @@ - - - + + android:layout_height="wrap_content"> - - + + + + + + + + + - + + + + + + android:background="@color/mainGreen" + android:padding="8dp"> - + - + + + - + + + + + - + - + - + - \ No newline at end of file + + + \ No newline at end of file