From ff448b36b9a5f823dc3e87e0b70c964f4a4f3e36 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 11 Mar 2021 13:11:06 +0100 Subject: [PATCH] Refactoring ultime consegne cliente --- .../MainApplicationComponent.java | 4 + .../view/ExtendedSectionedRecyclerView.java | 56 +++++ .../core/utility/UtilityExceptions.java | 15 +- .../core/utility/UtilityString.java | 4 +- .../OrdiniUscitaElencoFragment.java | 6 +- .../OrdiniUscitaElencoViewModel.java | 6 +- .../UltimeConsegneClienteComponent.java | 14 ++ .../UltimeConsegneClienteFragment.java | 212 ++++++++++++++++-- .../UltimeConsegneClienteModule.java | 29 +++ .../UltimeConsegneClienteViewModel.java | 193 ++++++++++++++++ .../UltimeConsegneMainListAdapter.java | 66 +----- .../UltimeConsegneClienteRESTConsumer.java | 77 ++++--- .../UltimeConsegneClienteViewModel.java | 146 ------------ .../fragment_main_ultime_consegne_cliente.xml | 18 +- 14 files changed, 567 insertions(+), 279 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java rename app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/{viewmodel => }/UltimeConsegneMainListAdapter.java (71%) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 4c9015d0..b1bc32eb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -27,6 +27,8 @@ import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module; import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent; @@ -44,6 +46,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule; RettificaGiacenzeModule.class, SpedizioneModule.class, AccettazionePickingModule.class, + UltimeConsegneClienteModule.class, PickingResiModule.class, OrdiniUscitaElencoModule.class, DialogInputQuantityV2Module.class, @@ -60,6 +63,7 @@ public interface MainApplicationComponent { RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent(); SpedizioneComponent.Factory spedizioneComponent(); AccettazionePickingComponent.Factory accettazionePickingComponent(); + UltimeConsegneClienteComponent.Factory ultimeConsegneClienteComponent(); PickingResiComponent.Factory pickingResiComponent(); OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent(); DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component(); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java new file mode 100644 index 00000000..a4aeb37c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/view/ExtendedSectionedRecyclerView.java @@ -0,0 +1,56 @@ +package it.integry.integrywmsnative.core.expansion.view; + +import android.view.View; + +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.RecyclerView; + +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.ArrayList; + +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; + +public abstract class ExtendedSectionedRecyclerView + extends SectionedRecyclerViewAdapter { + + protected ArrayList mDataset = new ArrayList<>(); + private View mEmptyView; + + public ExtendedSectionedRecyclerView(ObservableArrayList myDataset) { + mDataset.addAll(myDataset); + + myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + mDataset.clear(); + mDataset.addAll(sender); + notifyDataSetChanged(); + notifyDataChanged(); + checkIfEmpty(); + } + }); + + checkIfEmpty(); + } + + public ExtendedSectionedRecyclerView setEmptyView(View emptyView) { + this.mEmptyView = emptyView; + this.checkIfEmpty(); + return this; + } + + @Override + public int getItemSize() { + return this.mDataset.size(); + } + + private void checkIfEmpty() { + if (mEmptyView != null) { + final boolean emptyViewVisible = getItemSize() == 0; + mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE); + } + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index d529e95f..7a602ae4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -4,6 +4,9 @@ import android.app.Dialog; import android.content.Context; import android.text.SpannableString; +import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; + import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.orhanobut.logger.Logger; @@ -43,9 +46,17 @@ public class UtilityExceptions { if(ex.getCause() != null) errorMessage += "
" + ex.getCause().getMessage(); } - if(UtilityContext.getMainActivity() != null) { + FragmentManager fm = null; + + if(context != null && context instanceof FragmentActivity) { + fm = ((FragmentActivity) context).getSupportFragmentManager(); + } else if(UtilityContext.getMainActivity() != null) { + fm = UtilityContext.getMainActivity().getSupportFragmentManager(); + } + + if(fm != null) { DialogSimpleMessageView.makeErrorDialog(new SpannableString(errorMessage), null, null) - .show(UtilityContext.getMainActivity().getSupportFragmentManager(), "tag"); + .show(fm, "tag"); } if(!BuildConfig.DEBUG) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java index 21b1f0c0..cbbeea5b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -68,11 +68,11 @@ public class UtilityString { } public static Spanned formatHtmlString(String format, String... params){ - return Html.fromHtml(String.format(format,params)); + return Html.fromHtml(String.format(format, (Object[]) params)); } public static Spanned formatHtmlStringFromResId(@StringRes int stringId, String... params){ - return Html.fromHtml(String.format(UtilityResources.getString(stringId),params)); + return Html.fromHtml(String.format(UtilityResources.getString(stringId), (Object[]) params)); } 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 7dd3b647..29a0307f 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 @@ -7,8 +7,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; @@ -132,8 +130,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); + public void onStart() { + super.onStart(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java index 8e2ec39d..ac86b7d6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/OrdiniUscitaElencoViewModel.java @@ -18,6 +18,7 @@ import it.integry.integrywmsnative.core.exception.InvalidLUMultiGestioneExceptio import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.NoOrderFoundException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.model.DtbOrdt; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.OrdineInevasoDTO; @@ -282,10 +283,7 @@ public class OrdiniUscitaElencoViewModel { if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); } - public interface Listener { - void onLoadingStarted(); - - void onLoadingEnded(); + public interface Listener extends ILoadingListener { void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java new file mode 100644 index 00000000..5b62e34f --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteComponent.java @@ -0,0 +1,14 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import dagger.Subcomponent; + +@Subcomponent +public interface UltimeConsegneClienteComponent { + + @Subcomponent.Factory + interface Factory{ + UltimeConsegneClienteComponent create(); + } + + void inject(UltimeConsegneClienteFragment ultimeConsegneClienteFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java index 084b8c01..3e209187 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteFragment.java @@ -7,38 +7,62 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; 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.Optional; +import com.annimon.stream.Stream; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.IFilterableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel.UltimeConsegneClienteViewModel; +import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato; import it.integry.integrywmsnative.ui.ElevatedToolbar; -public class UltimeConsegneClienteFragment extends Fragment implements ITitledFragment, IScrollableFragment, IFilterableFragment { +public class UltimeConsegneClienteFragment extends BaseFragment implements UltimeConsegneClienteViewModel.Listener, ITitledFragment, IScrollableFragment, IFilterableFragment { private final List mOnPreDestroyList = new ArrayList<>(); private ElevatedToolbar mToolbar; - private UltimeConsegneClienteViewModel mViewModel; + private int barcodeScannerIstanceID = -1; + + private final ObservableArrayList mDocumentiMutableData = new ObservableArrayList<>(); + + @Inject + UltimeConsegneClienteViewModel mViewModel; + + private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel; + + private FragmentMainUltimeConsegneClienteBinding mBindings; public UltimeConsegneClienteFragment() { // Required empty public constructor } public static UltimeConsegneClienteFragment newInstance() { - UltimeConsegneClienteFragment fragment = new UltimeConsegneClienteFragment(); - Bundle args = new Bundle(); - - fragment.setArguments(args); - return fragment; + return new UltimeConsegneClienteFragment(); } @@ -46,21 +70,158 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - FragmentMainUltimeConsegneClienteBinding mBinding = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false); + mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_main_ultime_consegne_cliente, container, false); - mViewModel = new UltimeConsegneClienteViewModel(getActivity(), mBinding); + MainApplication.appComponent + .ultimeConsegneClienteComponent() + .create() + .inject(this); - mBinding.setViewmodel(mViewModel); + mViewModel.setListener(this); - mToolbar.setRecyclerView(mBinding.recyclerView); + mBindings.setLifecycleOwner(this); + mBindings.setView(this); + mBindings.setViewmodel(mViewModel); + + + this.initRecyclerView(); +// this.initBarcodeReader(); // Inflate the layout for this fragment - return mBinding.getRoot(); + return mBindings.getRoot(); } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewModel.init(codMdep); + + this.mBindings.mainFab.hide(); + this.mBindings.mainFab.setOnClickListener(v -> { + dispatchConsegne(); + }); + + this.mViewModel.getDocuments().observe(this, this::refreshList); + + openFilterDialog(); + } + + + public void openFilterDialog() { + this.mViewModel.loadCodAnagClienti(gtbAnags -> { + DialogUltimeConsegneFiltroAvanzato.make(getActivity(), gtbAnags, mAppliedFilterViewModel, (filter) -> { + mAppliedFilterViewModel = filter; + refreshItems(); + }).show(); + }); + } + + + private void initRecyclerView() { + UltimeConsegneMainListAdapter mAdapter = + new UltimeConsegneMainListAdapter(getActivity(), mDocumentiMutableData); + mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); + mAdapter.setEmptyView(mBindings.emptyView); + + mBindings.recyclerView.setHasFixedSize(true); + mBindings.recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + mBindings.recyclerView.setAdapter(mAdapter); +// mBindings.fastscroll.setRecyclerView(mBindings.recyclerView); + + + if(mToolbar != null) + mToolbar.setRecyclerView(mBindings.recyclerView); + + } + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); + + BarcodeManager.enable(); + } + + private final RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + this.mViewModel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + }); + }; + + private void refreshList(List documentList) { + this.mDocumentiMutableData.clear(); + this.mDocumentiMutableData.addAll(sort(documentList)); + } + + private void refreshItems() { + this.openProgress(); + + String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; + String currentCodAnagFilter = null; + + Optional singleGtbAnag = Stream.of(this.mViewModel.getGtbAnagClienti().getValue()) + .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) + .findSingle(); + + if (singleGtbAnag.isPresent()) { + currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); + } + + this.mViewModel.loadConsegneClienti(currentCodAnagFilter, + null, + -1, + 548 + ); + + } + + private List sort(List dataset) { + List sortedDataset = Stream.of(dataset) + .sortBy(DocumentoResoDTO::getRagSoc) + .toList(); + + return sortedDataset; + } + + + private void onSingleSelectionChanged(DocumentoResoDTO dto) { + List selectedOrders = getSelectedItems(); + + if (dto.isSelected()) { + Stream.of(selectedOrders) + .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) + .forEach(x -> x.setSelected(false)); + } + + if (selectedOrders != null && selectedOrders.size() > 0) { + mBindings.mainFab.show(); + } else { + mBindings.mainFab.hide(); + } + } + + + private List getSelectedItems() { + return Stream.of(this.mDocumentiMutableData) + .filter(DocumentoResoDTO::isSelected) + .toList(); + } + + + private void dispatchConsegne() { + List selectedConsegne = getSelectedItems(); + + PickingResiActivity.startActivity(getActivity(), getActivity().getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1); + } + + @Override public void onDestroy() { - for(Runnable onPreDestroy : mOnPreDestroyList) { + for (Runnable onPreDestroy : mOnPreDestroyList) { onPreDestroy.run(); } super.onDestroy(); @@ -78,11 +239,30 @@ public class UltimeConsegneClienteFragment extends Fragment implements ITitledFr @Override public void onFilterClick() { - mViewModel.openFilterDialog(); + openFilterDialog(); } @Override public void addOnPreDestroy(Runnable onPreDestroy) { this.mOnPreDestroyList.add(onPreDestroy); } + + @Override + public void onLoadingStarted() { + BarcodeManager.disable(); + this.openProgress(); + } + + @Override + public void onLoadingEnded() { + this.closeProgress(); + BarcodeManager.enable(); + } + + @Override + public void onError(Exception ex) { + this.closeProgress(); + UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress); + BarcodeManager.enable(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java new file mode 100644 index 00000000..2af8378d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteModule.java @@ -0,0 +1,29 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; + +@Module(subcomponents = UltimeConsegneClienteComponent.class) +public class UltimeConsegneClienteModule { + + @Singleton + @Provides + UltimeConsegneClienteRESTConsumer providesUltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + return new UltimeConsegneClienteRESTConsumer(systemRESTConsumer); + } + + @Provides + UltimeConsegneClienteViewModel providesUltimeConsegneClienteViewModel( + UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + return new UltimeConsegneClienteViewModel(ultimeConsegneClienteRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java new file mode 100644 index 00000000..95b8e331 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneClienteViewModel.java @@ -0,0 +1,193 @@ +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; + +import androidx.lifecycle.MutableLiveData; + +import java.util.List; + +import javax.inject.Inject; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.exception.NoLUFoundException; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.model.GtbAnag; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO; +import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; + +public class UltimeConsegneClienteViewModel { + + + private final MutableLiveData> mGtbAnagClienti = new MutableLiveData<>(); + private final MutableLiveData> mDocuments = new MutableLiveData<>(); + + private final UltimeConsegneClienteRESTConsumer mUltimeConsegneClienteRESTConsumer; + private final BarcodeRESTConsumer mBarcodeRESTConsumer; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + + private Listener mListener; + + private String mCodMdep; + + @Inject + public UltimeConsegneClienteViewModel( + UltimeConsegneClienteRESTConsumer ultimeConsegneClienteRESTConsumer, + BarcodeRESTConsumer barcodeRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + this.mUltimeConsegneClienteRESTConsumer = ultimeConsegneClienteRESTConsumer; + this.mBarcodeRESTConsumer = barcodeRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + } + + + public void init(String codMdep) { + this.mCodMdep = codMdep; + } + + public void loadCodAnagClienti(RunnableArgs> onComplete) { + this.sendOnLoadingStarted(); + + this.mUltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> { + mGtbAnagClienti.postValue(gtbAnags); + this.sendOnLoadingEnded(); + + onComplete.run(gtbAnags); + }, this::sendError); + } + + + public void loadConsegneClienti(String codAnag, String codMart, int limitDocsForCli, int limitDays) { + this.sendOnLoadingStarted(); + + this.mUltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti(mCodMdep, codAnag, codMart, limitDocsForCli, limitDays, documentList -> { + this.mDocuments.postValue(documentList); + this.sendOnLoadingEnded(); + }, this::sendError); + } + + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + this.sendOnLoadingStarted(); + + RunnableArgs> onBarcodeScanComplete = orderList -> { + onComplete.run(); + this.sendOnLoadingEnded(); + }; + + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onBarcodeScanComplete); + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + this.executeEtichettaEan128(barcodeScanDTO, onBarcodeScanComplete); + } else { + onComplete.run(); + } + } + + + private void executeEtichettaLU(String SSCC, RunnableArgs> onComplete) { + this.mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + + if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + +// if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) { +// //GET BY COMMESSA COLLO +// this.mOrdiniUscitaElencoRESTConsumer.getOrdiniFromCommessaCollo(mCurrentCodMdep, mtbColt, orderList -> { +// +// if(orderList != null && orderList.size() > 0) { +// List numOrds = Stream.of(orderList) +// .map(DtbOrdt::getNumOrd) +// .toList(); +// +// List filteredOrders = Stream.of(mOrderList.getValue()) +// .filter(x -> numOrds.contains(x.getNumOrd())).toList(); +// +// onComplete.run(filteredOrders); +// } else { +// this.sendError(new NoOrderFoundException()); +// } +// +// }, this::sendError); +// +// } else { +// this.sendError(new InvalidLUGestioneException(GestioneEnum.VENDITA)); +// } +// + } else { + this.sendError(new NoLUFoundException()); + } + + }, this::sendError); + } + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, RunnableArgs> onComplete) { + this.mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + String barcodeProd = null; + + if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; + if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin; + if (!UtilityString.isNullOrEmpty(ean128Model.Content)) + barcodeProd = ean128Model.Content; + + + if (!UtilityString.isNullOrEmpty(barcodeProd)) { + + if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { + this.executeEtichettaLU(ean128Model.Sscc, onComplete); + } else { + this.sendError(new NoLUFoundException()); + } + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + this.sendError(new NoLUFoundException()); + } + }, this::sendError); + } + + + public MutableLiveData> getGtbAnagClienti() { + return mGtbAnagClienti; + } + + public MutableLiveData> getDocuments() { + return mDocuments; + } + + public UltimeConsegneClienteViewModel 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 sendOnOrderFiltered(List filteredOrders) { +// if (this.mListener != null) mListener.onOrderFiltered(filteredOrders); +// } +// +// private void sendOnOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts) { +// if (this.mListener != null) mListener.onOrdersDispatched(orders, sitArts, alreadyRegisteredMtbColts); +// } + + public interface Listener extends ILoadingListener { + void onError(Exception ex); + +// void onOrderFiltered(List filteredOrders); +// +// void onOrdersDispatched(List orders, List sitArts, List alreadyRegisteredMtbColts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java similarity index 71% rename from app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java index 8ea28c19..86095e3f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneMainListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/UltimeConsegneMainListAdapter.java @@ -1,44 +1,34 @@ -package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel; +package it.integry.integrywmsnative.gest.ultime_consegne_cliente; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.RecyclerView; -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - import java.util.ArrayList; import java.util.Calendar; -import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.view.ExtendedSectionedRecyclerView; +import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListHeaderBinding; import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteListSingleItemBinding; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; -public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { +public class UltimeConsegneMainListAdapter extends ExtendedSectionedRecyclerView { private Context mContext; - private List mDataset; private ArrayList mSectionTitleItems; private RunnableArgs mOnSelectionChanged; - @Override - public String getSectionTitle(int position) { - return mSectionTitleItems.get(position); - } static class SubheaderHolder extends RecyclerView.ViewHolder { @@ -65,12 +55,9 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter< - public UltimeConsegneMainListAdapter(Context context, ArrayList dataset) { - super(); + public UltimeConsegneMainListAdapter(Context context, ObservableArrayList mutableDataSet) { + super(mutableDataSet); this.mContext = context; - this.mDataset = new ArrayList<>(); - - updateItems(sort(dataset)); } @@ -146,45 +133,6 @@ public class UltimeConsegneMainListAdapter extends SectionedRecyclerViewAdapter< return false; } - @Override - public int getItemSize() { - return this.mDataset.size(); - } - - - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(sort(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List sort(List dataset) { - this.mSectionTitleItems = new ArrayList<>(); - - List sortedDataset = Stream.of(dataset) - .sortBy(DocumentoResoDTO::getRagSoc) - .toList(); - - - Stream.of(sortedDataset) - .map(DocumentoResoDTO::getRagSoc) - .distinct() - .forEach(x -> { - this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - - long count = Stream.of(dataset) - .filter(y -> y.getRagSoc().equalsIgnoreCase(x)) - .count(); - - - for(int i = 0; i < count; i++) this.mSectionTitleItems.add(String.valueOf(x.charAt(0))); - }); - - return sortedDataset; - } public void setOnSelectionChanged(RunnableArgs mSelectionChanged) { this.mOnSelectionChanged = mSelectionChanged; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java index 9a17b389..2a59a397 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/rest/UltimeConsegneClienteRESTConsumer.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.core.model.GtbAnag; import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback; @@ -20,65 +22,61 @@ import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.gest.picking_resi.rest.WithdrawableDtbDocr; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; +@Singleton public class UltimeConsegneClienteRESTConsumer { - public static void getAvailableCodAnagClienti(RunnableArgs> onComplete, RunnableArgs onFailed) { + private final SystemRESTConsumer systemRESTConsumer; + + public UltimeConsegneClienteRESTConsumer(SystemRESTConsumer systemRESTConsumer) { + this.systemRESTConsumer = systemRESTConsumer; + } + + public void getAvailableCodAnagClienti(RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT DISTINCT gtb_anag.cod_anag, gtb_anag.rag_soc " + "FROM gtb_anag " + "INNER JOIN vtb_clie ON vtb_clie.cod_anag = gtb_anag.cod_anag " + "WHERE flag_stato = 'A'"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } - public static void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getUltimeConsegneClienti(String codMdep, String codAnag, String codMart, Integer limitConsegnePerCli, int limitDays, RunnableArgs> onComplete, RunnableArgs onFailed) { String sql = "SELECT consegne.*, " + " rag_soc," + " dtb_doct.gestione " + "FROM WMS_GetUltimeConsegneClienti(" + - UtilityDB.valueToString(limitConsegnePerCli) + ", " + - UtilityDB.valueToString(codAnag) + ", " + - UtilityDB.valueToString(codMart) + ", " + - UtilityDB.valueToString(codMdep) + ", " + - UtilityDB.valueToString(limitDays) + ") consegne " + + UtilityDB.valueToString(limitConsegnePerCli >= 0 ? limitConsegnePerCli : null) + ", " + + UtilityDB.valueToString(codAnag) + ", " + + UtilityDB.valueToString(codMart) + ", " + + UtilityDB.valueToString(codMdep) + ", " + + UtilityDB.valueToString(limitDays) + ") consegne " + "INNER JOIN dtb_doct ON consegne.num_doc = dtb_doct.num_doc AND consegne.data_doc = dtb_doct.data_doc AND consegne.cod_anag = dtb_doct.cod_anag AND consegne.cod_dtip = dtb_doct.cod_dtip AND consegne.ser_doc = dtb_doct.ser_doc " + "LEFT OUTER JOIN gtb_anag ON consegne.cod_anag = gtb_anag.cod_anag " + "ORDER BY rag_soc, " + " counter_consegna "; - Type typeOfObjectsList = new TypeToken>() {}.getType(); - SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { - @Override - public void onSuccess(ArrayList value) { - if(onComplete != null) onComplete.run(value); - } - - @Override - public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); - } + Type typeOfObjectsList = new TypeToken>() { + }.getType(); + systemRESTConsumer.>processSql(sql, typeOfObjectsList, value -> { + if (onComplete != null) onComplete.run(value); + }, ex -> { + if (onFailed != null) onFailed.run(ex); }); } - public static void loadDocRowFromConsegna(List consegne, RunnableArgs> onComplete, RunnableArgs onFailed) { List> filterCond = new ArrayList<>(); - for(int i = 0; i < consegne.size(); i++) { + for (int i = 0; i < consegne.size(); i++) { HashMap filter = new HashMap<>(); filter.put("dtb_docr.data_doc", consegne.get(i).getDataDocD()); @@ -172,17 +170,18 @@ public class UltimeConsegneClienteRESTConsumer { " (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " + " dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" + " ( " + - UtilityQuery.concatFieldListInWhereCond(filterCond) + + UtilityQuery.concatFieldListInWhereCond(filterCond) + " ) " + "ORDER BY cod_mart"; - Type typeOfObjectsList = new TypeToken>() {}.getType(); + Type typeOfObjectsList = new TypeToken>() { + }.getType(); SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback>() { @Override public void onSuccess(ArrayList values) { - if(values != null && values.size() > 0){ + if (values != null && values.size() > 0) { List codMarts = Stream.of(values) .map(DtbDocr::getCodMart) .withoutNulls() @@ -191,7 +190,7 @@ public class UltimeConsegneClienteRESTConsumer { ArticoloRESTConsumer.getByCodMartStatic(codMarts, arts -> { - if(arts != null && arts.size() > 0) { + if (arts != null && arts.size() > 0) { for (DtbDocr value : values) { MtbAart foundMtbAart = null; @@ -199,7 +198,7 @@ public class UltimeConsegneClienteRESTConsumer { List mtbAartStream = Stream.of(arts) .filter(x -> x.getCodMart().equalsIgnoreCase(value.getCodMart())).toList(); - if(mtbAartStream != null && mtbAartStream.size() > 0){ + if (mtbAartStream != null && mtbAartStream.size() > 0) { foundMtbAart = mtbAartStream.get(0); } @@ -207,19 +206,19 @@ public class UltimeConsegneClienteRESTConsumer { } - if(onComplete != null) onComplete.run(values); + if (onComplete != null) onComplete.run(values); } }, onFailed); } else { - if(onComplete != null) onComplete.run(values); + if (onComplete != null) onComplete.run(values); } } @Override public void onFailed(Exception ex) { - if(onFailed != null) onFailed.run(ex); + if (onFailed != null) onFailed.run(ex); } }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java deleted file mode 100644 index c264dd79..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/viewmodel/UltimeConsegneClienteViewModel.java +++ /dev/null @@ -1,146 +0,0 @@ -package it.integry.integrywmsnative.gest.ultime_consegne_cliente.viewmodel; - -import android.app.Dialog; -import android.content.Context; -import android.view.View; - -import androidx.recyclerview.widget.LinearLayoutManager; - -import com.annimon.stream.Optional; -import com.annimon.stream.Stream; - -import java.util.ArrayList; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.model.GtbAnag; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; -import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; -import it.integry.integrywmsnative.databinding.FragmentMainUltimeConsegneClienteBinding; -import it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzato; -import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer; - -public class UltimeConsegneClienteViewModel { - - private Context mContext; - private FragmentMainUltimeConsegneClienteBinding mBinding; - - private UltimeConsegneMainListAdapter mAdapter; - private List mItems; - private List mRenderedItems = new ArrayList<>(); - - private List mAvailableGtbAnags = null; - - private DialogUltimeConsegneFiltroAvanzato.DialogUltimeConsegneFiltroAvanzatoViewModel mAppliedFilterViewModel; - - public UltimeConsegneClienteViewModel(Context context, FragmentMainUltimeConsegneClienteBinding binding) { - this.mContext = context; - this.mBinding = binding; - - this.mBinding.mainFab.hide(); - this.mBinding.mainFab.setOnClickListener(v -> { - dispatchConsegne(); - }); - - openFilterDialog(); - } - - public void openFilterDialog() { - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - UltimeConsegneClienteRESTConsumer.getAvailableCodAnagClienti(gtbAnags -> { - mAvailableGtbAnags = gtbAnags; - progressDialog.dismiss(); - - DialogUltimeConsegneFiltroAvanzato.make(mContext, gtbAnags, mAppliedFilterViewModel, (filter) -> { - mAppliedFilterViewModel = filter; - refreshItems(); - }).show(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); - } - - private void initDataAdapter(ArrayList dataset) { - mAdapter = new UltimeConsegneMainListAdapter(mContext, dataset); - mAdapter.setOnSelectionChanged(this::onSingleSelectionChanged); - - mBinding.recyclerView.setHasFixedSize(true); - mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - mBinding.recyclerView.setAdapter(mAdapter); - mBinding.fastscroll.setRecyclerView(mBinding.recyclerView); - - } - - private void refreshItems(){ - - Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - - String currentAnagFilter = mAppliedFilterViewModel != null ? mAppliedFilterViewModel.ragSoc.get() : null; - String currentCodAnagFilter = null; - - Optional singleGtbAnag = Stream.of(mAvailableGtbAnags) - .filter(x -> (x.getCodAnag() + " - " + x.getRagSoc()).equals(currentAnagFilter)) - .findSingle(); - - if(singleGtbAnag.isPresent()) { - currentCodAnagFilter = singleGtbAnag.get().getCodAnag(); - } - - UltimeConsegneClienteRESTConsumer.getUltimeConsegneClienti( - SettingsManager.i().getUserSession().getDepo().getCodMdep(), - currentCodAnagFilter, - null, - null, - 548, - consegne -> { - this.mItems = consegne; - - this.initDataAdapter(consegne); - mBinding.emptyView.setVisibility((this.mItems != null && this.mItems.size() > 0) ? View.GONE : View.VISIBLE); - - mRenderedItems.clear(); - if(this.mItems != null) mRenderedItems.addAll(this.mItems); - mAdapter.updateItems(mRenderedItems); - - progressDialog.dismiss(); - }, ex -> { - UtilityExceptions.defaultException(mContext, ex, progressDialog); - }); - } - - private void onSingleSelectionChanged(DocumentoResoDTO dto) { - List selectedOrders = getSelectedItems(); - - if(dto.isSelected()) { - Stream.of(selectedOrders) - .filter(x -> !x.getRagSoc().equalsIgnoreCase(dto.getRagSoc())) - .forEach(x -> x.setSelected(false)); - } - - if(selectedOrders != null && selectedOrders.size() > 0) { - mBinding.mainFab.show(); - } - else { - mBinding.mainFab.hide(); - } - } - - private List getSelectedItems() { - return Stream.of(this.mItems) - .filter(DocumentoResoDTO::isSelected) - .toList(); - } - - - private void dispatchConsegne() { - List selectedConsegne = getSelectedItems(); - - PickingResiActivity.startActivity(mContext, mContext.getText(R.string.ultime_consegne_cliente_title).toString(), selectedConsegne, +1); - } - - -} diff --git a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml index 12a55f0e..b5a1066e 100644 --- a/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml +++ b/app/src/main/res/layout/fragment_main_ultime_consegne_cliente.xml @@ -6,7 +6,11 @@ + type="it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteViewModel" /> + + @@ -29,12 +33,12 @@ android:scrollbars="none" android:paddingEnd="4dp"/> - + + + + + +