From 624a880ad5a09ae641be1a7e02f274cebe0455e5 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 5 Aug 2021 18:23:54 +0200 Subject: [PATCH] Refactoring main list accettazione --- .../MainApplicationComponent.java | 6 +- .../MainAccettazioneComponent.java | 15 + .../MainAccettazioneFragment.java | 268 +++++----- .../accettazione/MainAccettazioneModule.java | 20 + .../MainAccettazioneViewModel.java | 94 ++++ .../accettazione/core/AccettazioneHelper.java | 87 ---- .../core/MainListAccettazioneAdapter.java | 137 ++--- .../MainListAccettazioneClienteListModel.java | 26 + .../core/MainListAccettazioneListModel.java | 70 +++ .../dto/OrdineAccettazioneDTO.java | 481 ------------------ .../rest/OrdiniAccettazioneRESTConsumer.java | 16 + .../OrdiniUscitaElencoFragment.java | 4 +- .../list/OrdiniUscitaElencoAdapter.java | 42 +- .../accettazione_main_list_group_model.xml | 9 +- .../res/layout/fragment_main_accettazione.xml | 48 +- ...t_main_ordini_uscita__list_group_model.xml | 2 +- 16 files changed, 483 insertions(+), 842 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneClienteListModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/MainListAccettazioneListModel.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 2b66ce0c..b09c57e6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -5,6 +5,8 @@ import javax.inject.Singleton; import dagger.Component; import it.integry.integrywmsnative.core.context.AppContext; import it.integry.integrywmsnative.core.data_store.db.RoomModule; +import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent; +import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingModule; import it.integry.integrywmsnative.gest.main.MainActivityComponent; @@ -53,10 +55,11 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr // Definition of the Application graph @Singleton @Component(modules = { + RoomModule.class, SplashActivityModule.class, MainApplicationModule.class, MainFragmentModule.class, - RoomModule.class, + MainAccettazioneModule.class, MainActivityModule.class, PVOrdineAcquistoGrigliaModule.class, PVOrdineAcquistoEditModule.class, @@ -83,6 +86,7 @@ public interface MainApplicationComponent { SplashActivityComponent.Factory splashActivityComponent(); MainActivityComponent.Factory mainActivityComponent(); MainFragmentComponent.Factory mainFragmentComponent(); + MainAccettazioneComponent.Factory mainAccettazioneComponent(); PVOrdineAcquistoGrigliaComponent.Factory pvOrdineAcquistoGrigliaComponent(); PVOrdineAcquistoEditComponent.Factory pvOrdineAcquistoEditComponent(); PickingLiberoComponent.Factory pickingLiberoComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java new file mode 100644 index 00000000..bff63b69 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import dagger.Subcomponent; + +@Subcomponent +public interface MainAccettazioneComponent { + + @Subcomponent.Factory + interface Factory { + + MainAccettazioneComponent create(); + } + + void inject(MainAccettazioneFragment mainAccettazioneFragment); +} 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 24c56ab8..b2e04d93 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 @@ -1,20 +1,17 @@ package it.integry.integrywmsnative.gest.accettazione; -import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.Html; -import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import androidx.appcompat.widget.AppCompatTextView; import androidx.databinding.DataBindingUtil; -import androidx.fragment.app.Fragment; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; import com.annimon.stream.Stream; @@ -23,44 +20,46 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.data_cache.DataCache; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ISearcableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.core.rest.CommonRESTException; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityDate; 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.MainListAccettazioneClienteListModel; +import it.integry.integrywmsnative.gest.accettazione.core.MainListAccettazioneListModel; import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; -import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; -public class MainAccettazioneFragment extends Fragment implements ISearcableFragment, ITitledFragment, IScrollableFragment { +public class MainAccettazioneFragment extends BaseFragment implements ISearcableFragment, ITitledFragment, IScrollableFragment, MainAccettazioneViewModel.Listener { + + public BindableBoolean fabVisible = new BindableBoolean(false); + + @Inject + MainAccettazioneViewModel mViewModel; private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; private FragmentMainAccettazioneBinding mBinding; - private AccettazioneHelper mHelper; - private MainListAccettazioneAdapter mAdapter; - - private List mOriginalOrderList; - private final List mRenderedOrderList = new ArrayList<>(); + private final ObservableArrayList mOrdiniInevasiMutableData = new ObservableArrayList<>(); private AppCompatTextView mAppBarTitle; - - public MainAccettazioneFragment() { // Required empty public constructor } @@ -73,8 +72,6 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } - - @Override public void onCreateActionBar(AppCompatTextView titleText, Context context) { mAppBarTitle = titleText; @@ -87,21 +84,32 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false); - init(); + MainApplication.appComponent + .mainAccettazioneComponent() + .create() + .inject(this); + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); mBinding.setView(this); - mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); - mBinding.accettazioneMainFab.hide(); - mBinding.accettazioneMainFab.setOnClickListener(v -> { - this.onAccettazioneMainFabClick(); - }); + this.initRecyclerView(); mToolbar.setRecyclerView(mBinding.accettazioneMainList); return mBinding.getRoot(); } + + @Override + public void onStart() { + super.onStart(); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); + } + @Override public void onDestroy() { for (Runnable onPreDestroy : mOnPreDestroyList) { @@ -111,111 +119,93 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag } - - private void init() { - - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); - - mHelper = new AccettazioneHelper(getActivity()); - - mHelper.loadOrdini(ordini -> { - if(ordini != null) { - Toast.makeText(getActivity(), "Caricati " + ordini.size() + " ordini", Toast.LENGTH_LONG).show(); - mOriginalOrderList = ordini; - } - - mBinding.ordiniAccettazioneEmptyView.setVisibility(ordini != null && ordini.size() > 0 ? View.GONE : View.VISIBLE); - refreshRenderedOrdini(ordini); - initRecyclerView(); - progress.dismiss(); - - }, ex -> { - UtilityExceptions.defaultException(getActivity(), ex, progress); - }); - - - } - private void initRecyclerView() { - mAdapter = new MainListAccettazioneAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); - mBinding.accettazioneMainList.setAdapter(mAdapter); - } + this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList); - private void refreshRenderedOrdini(List ordini) { - mRenderedOrderList.clear(); - if(ordini != null) mRenderedOrderList.addAll(ordini); + MainListAccettazioneAdapter adapter = new MainListAccettazioneAdapter(getActivity(), mOrdiniInevasiMutableData) + .setOnGroupItemClicked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + boolean allSelected = Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .allMatch(y -> y.getSelectedObservable().get()); + + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .forEach(y -> y.getSelectedObservable().set(!allSelected)); + }) + .setOnItemChecked(x -> { + Stream.of(mOrdiniInevasiMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + fabVisible.set(Stream.of(mOrdiniInevasiMutableData) + .anyMatch(y -> y.getSelectedObservable().get())); + }); + + adapter.setEmptyView(this.mBinding.ordiniAccettazioneEmptyView); + + this.mBinding.accettazioneMainList.setAdapter(adapter); + this.mBinding.accettazioneMainList.setLayoutManager(new LinearLayoutManager(getActivity())); + + if (mToolbar != null) + mToolbar.setRecyclerView(this.mBinding.accettazioneMainList); } + private void refreshList(List filteredList) { - private final RunnableArgs onSingleSelectionChanged = dto -> { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + List tmpList = null; - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getCodAnagOrd().equalsIgnoreCase(dto.getCodAnagOrd())) - .forEach(x -> x.setSelected(false)); + if (filteredList != null) { + tmpList = filteredList; + } else { + tmpList = mViewModel.getOrderList().getValue(); } - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.accettazioneMainFab.show(); - } - else { - mBinding.accettazioneMainFab.hide(); - } - }; + this.mOrdiniInevasiMutableData.clear(); + this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList)); + } - private void onAccettazioneMainFabClick() { + private List convertDataModelToListModel(List dataList) { - List selectedOrders = mHelper.getSelectedOrders(mOriginalOrderList); + return Stream.of(dataList) + .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) + .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) + .map(x -> { + MainListAccettazioneListModel listModel = new MainListAccettazioneListModel(); - final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity()); + listModel.setOriginalModel(x); - OrdiniAccettazioneRESTConsumer.retrievePickingListNewStatic(selectedOrders, sitArtOrds -> { - progress.dismiss(); - - - long artsCounter = Stream.of(sitArtOrds) - .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) - .map(SitArtOrdDTO::getCodMart) - .distinct() - .count(); - - long ordsCounter = Stream.of(sitArtOrds) - .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) - .count(); - - - DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(), - Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter) - + "

" + - "" + artsCounter + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)), - null, - () -> { - - String cacheSitArtItemID = DataCache.addItem(sitArtOrds); - String cacheOrdersItemID = DataCache.addItem(selectedOrders); - - Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); - myIntent.putExtra("keyOrders", cacheOrdersItemID); - myIntent.putExtra("keySitArts", cacheSitArtItemID); - getActivity().startActivity(myIntent); - - }).show(getActivity().getSupportFragmentManager(), "tag"); - - }, ex -> { - progress.dismiss(); - - String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); - if(errorMessage == null) errorMessage = ex.getMessage() + "\n" + ex.getCause().getCause().getMessage(); - - DialogSimpleMessageView - .makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(getActivity().getSupportFragmentManager(), "tag"); - }); + listModel.setGroupTitle(x.getRagSocOrd()); + + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + List clienti = Stream.of(dataList) + .filter(y -> y.getBarcode().equals(x.getBarcode())) + .map(y -> new MainListAccettazioneClienteListModel() + .setPrimaryText(y.getRifOrd()) + .setRightText(UtilityDate.formatDate(y.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH))) + .toList(); + + listModel.setClientiListModel(clienti); + + return listModel; + }) + .toList(); + } + + public void dispatchOrders() { + List selectedOrders = Stream.of(this.mOrdiniInevasiMutableData) + .filter(x -> x.getSelectedObservable().get()) + .map(MainListAccettazioneListModel::getOriginalModel) + .toList(); + this.mViewModel.loadPicking(selectedOrders); } @@ -236,11 +226,22 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag @Override public boolean onQueryTextChange(String newText) { - final List filtermodelist = mHelper.getFilteredOrdersByFornitore(mOriginalOrderList, newText); - mAdapter.updateItems(filtermodelist); - return true; + List filteredOrders = new ArrayList<>(); + List originalList = this.mViewModel.getOrderList().getValue(); + if(originalList == null || originalList.isEmpty()) return false; + + for(int i = 0; i < originalList.size(); i++){ + + if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){ + filteredOrders.add(originalList.get(i)); + } + } + + refreshList(filteredOrders); + return true; } + @Override public void setScrollToolbar(ElevatedToolbar toolbar) { mToolbar = toolbar; @@ -251,4 +252,35 @@ public class MainAccettazioneFragment extends Fragment implements ISearcableFrag public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + + @Override + public void onOrdersDispatched(List orders, List sitArts) { + long artsCounter = Stream.of(sitArts) + .filter(x -> UtilityBigDecimal.greaterThan(x.getQtaDaEvadere(), BigDecimal.ZERO)) + .map(SitArtOrdDTO::getCodMart) + .distinct() + .count(); + + long ordsCounter = Stream.of(sitArts) + .distinctBy(x -> x.getDataOrd() + " " + x.getNumOrd() + " " + x.getGestione()) + .count(); + + + DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(), + Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter) + + "

" + + "" + artsCounter + " " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)), + null, + () -> { + + String cacheSitArtItemID = DataCache.addItem(sitArts); + String cacheOrdersItemID = DataCache.addItem(orders); + + Intent myIntent = new Intent(getActivity(), AccettazionePickingActivity.class); + myIntent.putExtra("keyOrders", cacheOrdersItemID); + myIntent.putExtra("keySitArts", cacheSitArtItemID); + getActivity().startActivity(myIntent); + + }).show(getActivity().getSupportFragmentManager(), "tag"); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java new file mode 100644 index 00000000..9480528f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneModule.java @@ -0,0 +1,20 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; + +@Module(subcomponents = {MainAccettazioneComponent.class}) +public class MainAccettazioneModule { + + @Provides + OrdiniAccettazioneRESTConsumer providesOrdiniAccettazioneRESTConsumer() { + return new OrdiniAccettazioneRESTConsumer(); + } + + @Provides + MainAccettazioneViewModel providesMainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) { + return new MainAccettazioneViewModel(ordiniAccettazioneRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java new file mode 100644 index 00000000..65a69fc4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/MainAccettazioneViewModel.java @@ -0,0 +1,94 @@ +package it.integry.integrywmsnative.gest.accettazione; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumer; + +public class MainAccettazioneViewModel { + + private final OrdiniAccettazioneRESTConsumer mOrdiniAccettazioneRESTConsumer; + + private final MutableLiveData> mOrderList = new MutableLiveData<>(); + + private Listener mListener; + private String codMdep; + + @Inject + public MainAccettazioneViewModel(OrdiniAccettazioneRESTConsumer ordiniAccettazioneRESTConsumer) { + this.mOrdiniAccettazioneRESTConsumer = ordiniAccettazioneRESTConsumer; + } + + public void init(String currentCodMdep) { + this.codMdep = currentCodMdep; + + this.sendOnLoadingStarted(); + new Thread(() -> { + + mOrdiniAccettazioneRESTConsumer.getOrdiniInevasi(codMdep, orderList -> { + this.mOrderList.setValue(orderList); + + this.sendOnLoadingEnded(); + }, this::sendError); + + }).start(); + } + + + public void loadPicking(List selectedOrders) { + + this.sendOnLoadingStarted(); + + new Thread(() -> { + + this.mOrdiniAccettazioneRESTConsumer.retrievePickingListNew(selectedOrders, sitArtOrds -> { + + this.sendOnOrdersDispatched(selectedOrders, sitArtOrds); + this.sendOnLoadingEnded(); + + }, this::sendError); + + }).start(); + + } + + + public MutableLiveData> getOrderList() { + return mOrderList; + } + + public MainAccettazioneViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + private void sendOnLoadingStarted() { + if (this.mListener != null) mListener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.mListener != null) mListener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.mListener != null) mListener.onError(ex); + } + + private void sendOnOrdersDispatched(List orders, List sitArts) { + if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts); + } + + public interface Listener extends ILoadingListener { + + void onError(Exception ex); + + void onOrdersDispatched(List orders, List sitArts); + } + +} 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 deleted file mode 100644 index 0d7c4a23..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/core/AccettazioneHelper.java +++ /dev/null @@ -1,87 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.core; - -import android.content.Context; - -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -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.settings.SettingsManager; -import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO; -import it.integry.integrywmsnative.gest.accettazione.rest.OrdiniAccettazioneRESTConsumerService; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class AccettazioneHelper { - - private Context mContext; - - public AccettazioneHelper(Context context){ - mContext = context; - } - - public void loadOrdini(RunnableArgs> onComplete, RunnableArgs onFailed){ - String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); - - OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); - service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback>>() { - @Override - public void onResponse(Call>> call, Response>> response) { - - if(response.isSuccessful()) { - - if(response.body() != null) { - if(response.body().getEsito() == EsitoType.OK) { - onComplete.run(response.body().getDto()); - } else { - onFailed.run(new Exception(response.body().getErrorMessage())); - } - } else { - onFailed.run(new Exception(response.message())); - } - } else { - onFailed.run(new Exception("Status " + response.code() + ": " + response.message())); - } - } - - @Override - public void onFailure(Call>> call, Throwable t) { - onFailed.run(new Exception(t)); - } - }); - } - - - - - public List getSelectedOrders(List ordiniList){ - return Stream.of(ordiniList) - .filter(OrdineAccettazioneInevasoDTO::isSelected) - .toList(); - } - - - public List getFilteredOrdersByFornitore(List groupedOrdiniInevasi, String textFilter){ - List filteredOrders = new ArrayList<>(); - - for(int i = 0; i < groupedOrdiniInevasi.size(); i++){ - - if(groupedOrdiniInevasi.get(i).getRagSocOrd().toLowerCase().contains(textFilter.toLowerCase())){ - filteredOrders.add(groupedOrdiniInevasi.get(i)); - } - } - 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 index af1d4c2d..4b2ab3de 100644 --- 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 @@ -3,36 +3,28 @@ package it.integry.integrywmsnative.gest.accettazione.core; import android.content.Context; import android.text.Html; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.RecyclerView; -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.List; - import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; 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.ui.fastscroll.SectionTitleProvider; - -public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { +public class MainListAccettazioneAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private List mOriginalDataset; - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; + private RunnableArgs mOnGroupItemClicked; + private RunnableArgs mOnItemChecked; static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -55,31 +47,22 @@ public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter myDataset, RunnableArgs onSingleSelectionChanged) { + public MainListAccettazioneAdapter(Context context, ObservableArrayList myDataset) { + super(myDataset); mContext = context; - mOriginalDataset = myDataset; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; } - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); + public MainListAccettazioneAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { + this.mOnGroupItemClicked = onGroupItemClicked; + return this; } - - private List orderItems(List dataset) { - return Stream.of(dataset) - .distinctBy(OrdineAccettazioneInevasoDTO::getBarcode) - .sortBy(x -> x.getRagSocOrd() + (x.getDataConsD() != null ? UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) : "")) - .toList(); - + public MainListAccettazioneAdapter setOnItemChecked(RunnableArgs onItemChecked) { + this.mOnItemChecked = onItemChecked; + return this; } - @Override public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { AccettazioneMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_model, parent, false); @@ -95,48 +78,32 @@ public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter { - - 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)); + subheaderHolder.binding.getRoot().setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(mDataset.get(nextItemPosition).getGroupTitle()); + } }); } @Override - public void onBindItemViewHolder(SingleItemViewHolder h, int itemPosition) { - final OrdineAccettazioneInevasoDTO ordine = mDataset.get(itemPosition); - final SingleItemViewHolder holder = h; + public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) { + final MainListAccettazioneListModel ordine = mDataset.get(itemPosition); - 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)); + ordine.getSelectedObservable().resetOnPropertyChangedCallback(); holder.binding.accettazioneMainListGroupItemContainerClientiOrd.removeAllViews(); + holder.binding.accettazioneMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(ordine.getDescription())); - List clienti = Stream.of(mOriginalDataset) - .filter(x -> x.getBarcode().equals(ordine.getBarcode())) - .toList(); - - for (OrdineAccettazioneInevasoDTO cliente : clienti) { + for (MainListAccettazioneClienteListModel cliente : ordine.getClientiListModel()) { AccettazioneMainListGroupClientiBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.accettazione_main_list_group_clienti, holder.binding.accettazioneMainListGroupItemContainerClientiOrd, false); - binding.accettazioneMainListGroupClientiComm.setText(cliente.getRifOrd()); + binding.accettazioneMainListGroupClientiComm.setText(cliente.getPrimaryText()); - if (!UtilityString.isNullOrEmpty(cliente.getDataConsS())) { - binding.accettazioneMainListGroupClientiDatacons.setText(UtilityDate.formatDate(cliente.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); + if (!UtilityString.isNullOrEmpty(cliente.getRightText())) { + binding.accettazioneMainListGroupClientiDatacons.setText(cliente.getRightText()); } else { binding.accettazioneMainListGroupClientiDatacons.setText(""); } @@ -144,37 +111,34 @@ public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(ordine); + }); holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); + ordine.getSelectedObservable().set(!ordine.getSelectedObservable().get()); }); - 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()); + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + MainListAccettazioneListModel compare1 = this.mDataset.get(position); + MainListAccettazioneListModel compare2 = this.mDataset.get(position + 1); + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; } @Override @@ -182,11 +146,4 @@ public class MainListAccettazioneAdapter extends SectionedRecyclerViewAdapter clientiListModel; + + + public String getGroupTitle() { + return groupTitle; + } + + public MainListAccettazioneListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getDescription() { + return description; + } + + public MainListAccettazioneListModel setDescription(String description) { + this.description = description; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public MainListAccettazioneListModel setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } + + public BindableBoolean getSelectedObservable() { + return selected; + } + + public OrdineAccettazioneInevasoDTO getOriginalModel() { + return originalModel; + } + + public MainListAccettazioneListModel setOriginalModel(OrdineAccettazioneInevasoDTO originalModel) { + this.originalModel = originalModel; + return this; + } + + public List getClientiListModel() { + return clientiListModel; + } + + public MainListAccettazioneListModel setClientiListModel(List clientiListModel) { + this.clientiListModel = clientiListModel; + return this; + } +} 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 deleted file mode 100644 index 1dcf6003..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/dto/OrdineAccettazioneDTO.java +++ /dev/null @@ -1,481 +0,0 @@ -package it.integry.integrywmsnative.gest.accettazione.dto; - -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import it.integry.integrywmsnative.core.model.MtbAart; -import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; -import it.integry.integrywmsnative.core.utility.UtilityDate; - -/** - * Created by GiuseppeS on 06/03/2018. - */ - -public class OrdineAccettazioneDTO implements Parcelable { - - private String ragSoc; - private int numero; - private String data; - private String gestione; - private String codMdep; - private String codAnag; - private String codVdes; - private String termCons; - private ArrayList ordini; - private String codAlis; - private String rifOrd; - - - public static class Riga implements Parcelable { - private Float qtaOrd; //QTA ORDINATA (tutta la qta ordiata) - public Float qtaRiservate; //QTA COLLI (tutta la qta giĆ  accantonata nei colli - private Float qtaEvasa; //QTA EVASA ORDINE (qta con documento) - //public Float qtaDaEvadere; //qta_ord - qta_evasa - qta_colli - public int rigaOrd; - public String codJcom; - public String ragSocCom; - public String descrizioneCommessa; - public MtbAart mtbAart; - private PickingObjectDTO[] colliAssociati; - private Boolean hidden = null; - private Boolean tempHidden = null; - private String partitaMag; - private String codArtFor; - public String descrizioneEstesa; - public String codAlis; - - public int numOrd; - public String dataOrd; - public String gestioneOrd; - - public String dataCons; - - public BigDecimal getQtaDaEvadere() { - return this.getQtaOrd().subtract(this.getQtaEvasa()).subtract(this.getQtaRiservate()); - } - - - public BigDecimal getQtaOrd() { - return qtaOrd != null ? new BigDecimal(qtaOrd) : BigDecimal.ZERO; - } - - public BigDecimal getQtaRiservate() { - return qtaRiservate != null ? new BigDecimal(qtaRiservate) : BigDecimal.ZERO; - } - - public BigDecimal getQtaEvasa() { - return qtaEvasa != null ? new BigDecimal(qtaEvasa) : BigDecimal.ZERO; - } - - public int getRigaOrd() { - return rigaOrd; - } - - public String getCodJcom() { - return codJcom; - } - - public String getRagSocCom() { - return ragSocCom; - } - - public String getDescrizioneCommessa() { - return descrizioneCommessa; - } - - public MtbAart getMtbAart() { - return mtbAart; - } - - public PickingObjectDTO[] getColliAssociati() { - return colliAssociati; - } - - public Boolean isHidden() { - return hidden; - } - - public Boolean isTempHidden() { - return tempHidden; - } - - public String getPartitaMag() { - return partitaMag; - } - - public String getCodArtFor() { - return codArtFor; - } - - public String getDescrizioneEstesa() { - return descrizioneEstesa; - } - - public String getCodAlis() { - return codAlis; - } - - public int getNumOrd() { - return numOrd; - } - - public String getGestioneOrd() { - return gestioneOrd; - } - - public GestioneEnum getGestioneOrdEnum() { - return GestioneEnum.fromString(gestioneOrd); - } - - public String getDataCons() { - return dataCons; - } - - public String getDataOrdS() { - return this.dataOrd; - } - - public Date getDataOrdD() { - return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS()); - } - - - public Riga setQtaOrd(Float qtaOrd) { - this.qtaOrd = qtaOrd; - return this; - } - - public Riga setQtaRiservate(BigDecimal qtaRiservate) { - this.qtaRiservate = qtaRiservate.floatValue(); - return this; - } - - public Riga setQtaEvasa(Float qtaEvasa) { - this.qtaEvasa = qtaEvasa; - return this; - } - - public Riga setRigaOrd(int rigaOrd) { - this.rigaOrd = rigaOrd; - return this; - } - - public Riga setCodJcom(String codJcom) { - this.codJcom = codJcom; - return this; - } - - public Riga setRagSocCom(String ragSocCom) { - this.ragSocCom = ragSocCom; - return this; - } - - public Riga setDescrizioneCommessa(String descrizioneCommessa) { - this.descrizioneCommessa = descrizioneCommessa; - return this; - } - - public Riga setMtbAart(MtbAart mtbAart) { - this.mtbAart = mtbAart; - return this; - } - - public Riga setHidden(boolean hidden) { - this.hidden = hidden; - return this; - } - - public Riga setTempHidden(boolean hidden) { - this.tempHidden = hidden; - return this; - } - - public Riga setPartitaMag(String partitaMag) { - this.partitaMag = partitaMag; - return this; - } - - public Riga setCodArtFor(String codArtFor) { - this.codArtFor = codArtFor; - return this; - } - - public Riga setDescrizioneEstesa(String descrizioneEstesa) { - this.descrizioneEstesa = descrizioneEstesa; - return this; - } - - public Riga setCodAlis(String codAlis) { - this.codAlis = codAlis; - return this; - } - - public Riga setNumOrd(int numOrd) { - this.numOrd = numOrd; - return this; - } - - public Riga setDataOrd(String dataOrd) { - this.dataOrd = dataOrd; - return this; - } - - public Riga setGestioneOrd(String gestioneOrd) { - this.gestioneOrd = gestioneOrd; - return this; - } - - public Riga setDataCons(String dataCons) { - this.dataCons = dataCons; - return this; - } - - - - public Riga(){} - - protected Riga(Parcel in) { - qtaOrd = in.readByte() == 0x00 ? null : in.readFloat(); - qtaRiservate = in.readByte() == 0x00 ? null : in.readFloat(); - rigaOrd = in.readInt(); - codJcom = in.readString(); - ragSocCom = in.readString(); - descrizioneCommessa = in.readString(); - mtbAart = (MtbAart) in.readValue(MtbAart.class.getClassLoader()); - hidden = in.readByte() == 0x00 ? null : in.readByte() != 0x00; - partitaMag = in.readString(); - codArtFor = in.readString(); - descrizioneEstesa = in.readString(); - codAlis = in.readString(); - numOrd = in.readInt(); - dataOrd = in.readString(); - gestioneOrd = in.readString(); - dataCons = in.readString(); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - if (qtaOrd == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeFloat(qtaOrd); - } - if (qtaRiservate == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeFloat(qtaRiservate); - } - dest.writeInt(rigaOrd); - dest.writeString(codJcom); - dest.writeString(ragSocCom); - dest.writeString(descrizioneCommessa); - dest.writeValue(mtbAart); - if (hidden == null) { - dest.writeByte((byte) (0x00)); - } else { - dest.writeByte((byte) (0x01)); - dest.writeByte((byte) (hidden ? 0x01 : 0x00)); - } - dest.writeString(partitaMag); - dest.writeString(codArtFor); - dest.writeString(descrizioneEstesa); - dest.writeString(codAlis); - dest.writeInt(numOrd); - dest.writeString(dataOrd); - dest.writeString(gestioneOrd); - dest.writeString(dataCons); - } - - @SuppressWarnings("unused") - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public Riga createFromParcel(Parcel in) { - return new Riga(in); - } - - @Override - public Riga[] newArray(int size) { - return new Riga[size]; - } - }; - - } - - public static class PickingObjectDTO extends MtbColt{ - public boolean hidden = false; - } - - public OrdineAccettazioneDTO() {} - - protected OrdineAccettazioneDTO(Parcel in) { - ragSoc = in.readString(); - numero = in.readInt(); - data = in.readString(); - gestione = in.readString(); - codMdep = in.readString(); - codAnag = in.readString(); - codVdes = in.readString(); - termCons = in.readString(); - codAlis = in.readString(); - rifOrd = in.readString(); - if (in.readByte() == 0x01) { - ordini = new ArrayList(); - in.readList(ordini, Riga.class.getClassLoader()); - } else { - ordini = null; - } - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeString(ragSoc); - dest.writeInt(numero); - dest.writeString(data); - dest.writeString(gestione); - dest.writeString(codMdep); - dest.writeString(codAnag); - dest.writeString(codVdes); - dest.writeString(termCons); - dest.writeString(codAlis); - dest.writeString(rifOrd); - 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 OrdineAccettazioneDTO createFromParcel(Parcel in) { - return new OrdineAccettazioneDTO(in); - } - - @Override - public OrdineAccettazioneDTO[] newArray(int size) { - return new OrdineAccettazioneDTO[size]; - } - }; - - - 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/rest/OrdiniAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java index 2320e41f..7c1e054f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione/rest/OrdiniAccettazioneRESTConsumer.java @@ -22,6 +22,22 @@ import retrofit2.Response; public class OrdiniAccettazioneRESTConsumer extends _BaseRESTConsumer { + public void getOrdiniInevasi(String codMdep, RunnableArgs> onComplete, RunnableArgs onFailed) { + OrdiniAccettazioneRESTConsumerService service = RESTBuilder.getService(OrdiniAccettazioneRESTConsumerService.class); + service.listOrdiniInevasi(codMdep, "A").enqueue(new Callback<>() { + @Override + public void onResponse(Call>> call, Response>> response) { + analyzeAnswer(response, "getOrdiniInevasi", onComplete, onFailed); + } + + @Override + public void onFailure(Call>> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + + public void retrievePickingListNew(List orders, RunnableArgs> onComplete, RunnableArgs onFailed) { retrievePickingListNewStatic(orders, onComplete, onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java index 94a5867a..11a6fb3c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoFragment.java @@ -155,7 +155,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter = new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData) - .setEmptyView(this.mBindings.ordiniVenditaEmptyView) .setOnGroupItemClicked(x -> { if (!canSelectMultipleClienti) { Stream.of(mOrdiniInevasiMutableData) @@ -182,6 +181,9 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .anyMatch(y -> y.getSelectedObservable().get())); }); + ordiniUscitaElencoAdapter + .setEmptyView(this.mBindings.ordiniVenditaEmptyView); + this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter); this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity())); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java index 0df07d14..5a3ec3f6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/list/OrdiniUscitaElencoAdapter.java @@ -10,28 +10,19 @@ import android.view.ViewGroup; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.databinding.ObservableList; import androidx.recyclerview.widget.RecyclerView; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.ArrayList; -import java.util.List; - import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListGroupModelBinding; import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModelBinding; -public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter { - - private final Context mContext; - private final List mDataset = new ArrayList<>(); - private View mEmptyView; +public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView { + private Context mContext; private RunnableArgs mOnGroupItemClicked; private RunnableArgs mOnItemChecked; @@ -57,18 +48,8 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter mutableDataSet) { - this.mContext = context; - - mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { - @Override - public void onChanged(ObservableList sender) { - mDataset.clear(); - mDataset.addAll(sender); - notifyDataSetChanged(); - notifyDataChanged(); - checkIfEmpty(); - } - }); + super(mutableDataSet); + mContext = context; } public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs onGroupItemClicked) { @@ -81,19 +62,6 @@ public class OrdiniUscitaElencoAdapter extends SectionedRecyclerViewAdapter - + @@ -17,12 +17,13 @@ android:padding="8dp"> - + tools:layout_editor_absoluteY="1dp" + app:checked="@{selected}" /> - - + + + + - - - + android:layout_height="match_parent"> + + + android:adjustViewBounds="true" + android:src="@drawable/ic_playlist_add_check_24dp" /> + android:textSize="18sp" /> - + + app:srcCompat="@drawable/ic_check_black_24dp" + app:visibility="@{view.fabVisible}" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml index bd4973db..d23a78a2 100644 --- a/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml +++ b/app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml @@ -44,7 +44,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" - app:checked="@{selected}"/> + app:checked="@{selected}" />