From 6dbcdb04753c73a07ef9ce602c8ea91e8ea0c294 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 31 Jul 2023 09:59:34 +0200 Subject: [PATCH] Completato avantielenco accettazione bolla --- .idea/deploymentTargetDropDown.xml | 17 +- .../MainApplicationComponent.java | 9 +- .../configs/MenuConfiguration.java | 9 + .../MainAccettazioneOrdiniElencoFragment.java | 8 +- .../AccettazioneOrdiniPickingActivity.java | 4 +- .../MainAccettazioneBollaElencoComponent.java | 15 + .../MainAccettazioneBollaElencoFragment.java | 219 ++++++++++++ .../MainAccettazioneBollaElencoModule.java | 21 ++ .../MainAccettazioneBollaElencoViewModel.java | 66 ++++ .../rest/BolleAccettazioneRESTConsumer.java | 37 +++ .../BolleAccettazioneRESTConsumerService.java | 13 + ...eveElencoBolleAccettazioneResponseDTO.java | 12 + .../rest/dto/TestataBollaAccettazioneDTO.java | 51 +++ .../MainAccettazioneBolleElencoAdapter.java | 143 ++++++++ .../MainAccettazioneBolleElencoListModel.java | 99 ++++++ .../OrdiniUscitaElencoFragment.java | 313 ++++++++---------- .../ui/OrdiniUscitaElencoAdapter.java | 12 +- .../ProdOrdineProduzioneElencoFragment.java | 1 + app/src/main/res/layout/dialog_progress.xml | 4 +- .../fragment_main_accettazione_bolla.xml | 98 ++++++ ...n_accettazione_bolla__list_group_model.xml | 101 ++++++ ...nt_main_accettazione_bolla__list_model.xml | 32 ++ ... => fragment_main_accettazione_ordini.xml} | 0 app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/config.xml | 1 + app/src/main/res/values/strings.xml | 1 + build.gradle | 4 +- 27 files changed, 1085 insertions(+), 206 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoFragment.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumerService.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/RetrieveElencoBolleAccettazioneResponseDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/TestataBollaAccettazioneDTO.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoListModel.java create mode 100644 app/src/main/res/layout/fragment_main_accettazione_bolla.xml create mode 100644 app/src/main/res/layout/fragment_main_accettazione_bolla__list_group_model.xml create mode 100644 app/src/main/res/layout/fragment_main_accettazione_bolla__list_model.xml rename app/src/main/res/layout/{fragment_main_accettazione.xml => fragment_main_accettazione_ordini.xml} (100%) diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 3d6e3c4b..0c0c3383 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,17 +1,10 @@ - - - - - - - - - - - - + + + + + \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index 59988780..d8f96b71 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -15,6 +15,8 @@ import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazi import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoModule; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingComponent; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingModule; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.MainAccettazioneBollaElencoComponent; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.MainAccettazioneBollaElencoModule; import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent; import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule; import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent; @@ -177,7 +179,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogChooseArtsFromMtbAartListModule.class, MainSettingsModule.class, DialogInfoSituazioneArticoloModule.class, - DialogSelectArtToOrderModule.class + DialogSelectArtToOrderModule.class, + MainAccettazioneBollaElencoModule.class }) public interface MainApplicationComponent { @@ -195,7 +198,7 @@ public interface MainApplicationComponent { MainFragmentComponent.Factory mainFragmentComponent(); - MainAccettazioneOrdiniElencoComponent.Factory mainAccettazioneComponent(); + MainAccettazioneOrdiniElencoComponent.Factory mainAccettazioneOrdiniComponent(); ListaBancaliComponent.Factory listaBancaliComponent(); @@ -299,6 +302,8 @@ public interface MainApplicationComponent { DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent(); + MainAccettazioneBollaElencoComponent.Factory mainAccettazioneBollaElencoComponent(); + void inject(MainApplication mainApplication); void inject(AppContext mainApplication); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java index 45a137cd..db6c3a92 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.class_router.configs; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.MainAccettazioneBollaElencoFragment; import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment; import it.integry.integrywmsnative.gest.inventario.ElencoInventariFragment; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment; @@ -40,6 +41,14 @@ public class MenuConfiguration extends BaseMenuConfiguration { .setDrawerIcon(R.drawable.ic_black_download) .setFragmentFactory(MainAccettazioneOrdiniElencoFragment::newInstance)) + .addItem(new MenuItem() + .setID(R.id.nav_accettazione_bolle) + .setCodMenu("MG065") + .setTitleText(R.string.accettazione_title_fragment) + .setTitleIcon(R.drawable.ic_dashboard_accettazione) + .setDrawerIcon(R.drawable.ic_black_download) + .setFragmentFactory(MainAccettazioneBollaElencoFragment::newInstance)) + .addItem(new MenuItem() .setID(R.id.nav_resi_fornitore) .setCodMenu("MG045") diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java index b1a9cac7..c7d8fdd5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/MainAccettazioneOrdiniElencoFragment.java @@ -11,7 +11,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; -import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.recyclerview.widget.LinearLayoutManager; @@ -34,6 +33,7 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneOrdiniBinding; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.ui.MainListAccettazioneOrdiniElencoAdapter; @@ -54,7 +54,7 @@ public class MainAccettazioneOrdiniElencoFragment extends BaseFragment implement private ElevatedToolbar mToolbar; private String mTextFilter; - private FragmentMainAccettazioneBinding mBinding; + private FragmentMainAccettazioneOrdiniBinding mBinding; private final ObservableArrayList mOrdiniInevasiMutableData = new ObservableArrayList<>(); @@ -93,10 +93,10 @@ public class MainAccettazioneOrdiniElencoFragment extends BaseFragment implement if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar")) mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar")); - mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false); + mBinding = FragmentMainAccettazioneOrdiniBinding.inflate(inflater, container, false); MainApplication.appComponent - .mainAccettazioneComponent() + .mainAccettazioneOrdiniComponent() .create() .inject(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java index 1b904529..6080c7f7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java @@ -51,15 +51,16 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; +import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.AccettazioneOrdineInevasoOrderBy; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.PickingObjectDTO; +import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.RecoverMtbColtDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.AccettazionePickingFiltroOrdineViewModel; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterCodArtLayoutView; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterDescrLayoutView; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.filters.FilterPosizioneLayoutView; -import it.integry.integrywmsnative.gest.accettazione_ordini_picking.dto.RecoverMtbColtDTO; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.ui.AccettazioneOrdiniPickingListAdapter; import it.integry.integrywmsnative.gest.accettazione_ordini_picking.ui.AccettazioneOrdiniPickingListModel; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; @@ -116,6 +117,7 @@ public class AccettazioneOrdiniPickingActivity extends BaseActivity implements A mOrders = DataCache.retrieveItem(getIntent().getStringExtra("keyOrders")); mSitArts = DataCache.retrieveItem(getIntent().getStringExtra("keySitArts")); + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_accettazione_ordine_inevaso); mBindings.setLifecycleOwner(this); mBindings.setAccettazioneView(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoComponent.java new file mode 100644 index 00000000..cacb5dc7 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoComponent.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco; + +import dagger.Subcomponent; + +@Subcomponent +public interface MainAccettazioneBollaElencoComponent { + + @Subcomponent.Factory + interface Factory { + + MainAccettazioneBollaElencoComponent create(); + } + + void inject(MainAccettazioneBollaElencoFragment mainAccettazioneBollaElencoFragment); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoFragment.java new file mode 100644 index 00000000..3f1cc7a2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoFragment.java @@ -0,0 +1,219 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.databinding.ObservableArrayList; + +import com.annimon.stream.Stream; + +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.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.BaseFragment; +import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; +import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBollaBinding; +import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.ui.MainAccettazioneBolleElencoAdapter; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.ui.MainAccettazioneBolleElencoListModel; +import it.integry.integrywmsnative.ui.ElevatedToolbar; + +public class MainAccettazioneBollaElencoFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, MainAccettazioneBollaElencoViewModel.Listener { + + + @Inject + MainAccettazioneBollaElencoViewModel mViewModel; + + + private final ObservableArrayList mBolleInevaseMutableData = new ObservableArrayList<>(); + private FragmentMainAccettazioneBollaBinding mBinding; + private ElevatedToolbar mToolbar; + private AppCompatTextView mAppBarTitle; + + public BindableBoolean fabVisible = new BindableBoolean(false); + + private String mTextFilter; + + + private final List mOnPreDestroyList = new ArrayList<>(); + + + public MainAccettazioneBollaElencoFragment() { + } + + public static MainAccettazioneBollaElencoFragment newInstance() { + return new MainAccettazioneBollaElencoFragment(); + } + + + @Override + public void onCreateActionBar(AppCompatTextView titleText, Context context) { + mAppBarTitle = titleText; + mAppBarTitle.setText(context.getText(R.string.accettazione_title_fragment).toString()); + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + onLoadingEnded(); + outState.putString("mToolbar", DataCache.addItem(mToolbar)); + + super.onSaveInstanceState(outState); + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + setRetainInstance(true); + + if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar")) + mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar")); + + mBinding = FragmentMainAccettazioneBollaBinding.inflate(inflater, container, false); + + MainApplication.appComponent + .mainAccettazioneBollaElencoComponent() + .create() + .inject(this); + + mViewModel.setListener(this); + + mBinding.setLifecycleOwner(this); + mBinding.setView(this); + + this.initRecyclerView(); + + mToolbar.setRecyclerView(mBinding.accettazioneMainList); + + return mBinding.getRoot(); + } + + + @Override + public void onStart() { + super.onStart(); + + this.fabVisible.set(false); + mViewModel.init(); + } + + @Override + public void onDestroy() { + for (Runnable onPreDestroy : mOnPreDestroyList) { + onPreDestroy.run(); + } + super.onDestroy(); + } + + private void initRecyclerView() { + this.mViewModel.getBolleList().observe(getViewLifecycleOwner(), x -> { + this.refreshList(); + }); + + + MainAccettazioneBolleElencoAdapter adapter = new MainAccettazioneBolleElencoAdapter(getActivity(), mBolleInevaseMutableData) + .setOnGroupItemClicked(x -> { + Stream.of(mBolleInevaseMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + boolean allSelected = Stream.of(mBolleInevaseMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .allMatch(y -> y.getSelectedObservable().get()); + + Stream.of(mBolleInevaseMutableData) + .filter(y -> y.getGroupTitle().equalsIgnoreCase(x)) + .forEach(y -> y.getSelectedObservable().set(!allSelected)); + }) + .setOnItemChecked(x -> { + Stream.of(mBolleInevaseMutableData) + .filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get()) + .forEach(y -> y.getSelectedObservable().set(false)); + + fabVisible.set(Stream.of(mBolleInevaseMutableData) + .anyMatch(y -> y.getSelectedObservable().get())); + }); + + adapter.setEmptyView(this.mBinding.bolleAccettazioneEmptyView); + + this.mBinding.accettazioneMainList.setAdapter(adapter); + + if (mToolbar != null) + mToolbar.setRecyclerView(this.mBinding.accettazioneMainList); + } + + + private void refreshList() { + List tmpList = mViewModel.getBolleList().getValue(); + + //TODO: Filter here + + this.mBolleInevaseMutableData.clear(); + this.mBolleInevaseMutableData.addAll(convertDataModelToListModel(tmpList)); + } + + @Override + public void setScrollToolbar(ElevatedToolbar toolbar) { + mToolbar = toolbar; + } + + + @Override + public void addOnPreDestroy(Runnable onPreDestroy) { + this.mOnPreDestroyList.add(onPreDestroy); + } + + + + + + private List convertDataModelToListModel(List dataList) { + + return Stream.of(dataList) + .sortBy(x -> x.getRagSoc() + UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) + .map(x -> { + MainAccettazioneBolleElencoListModel listModel = new MainAccettazioneBolleElencoListModel(); + + listModel.setOriginalModel(x); + listModel.setGroupTitle(x.getRagSoc()); + listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumDoc(), UtilityDate.formatDate(x.getDataDoc(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); + + listModel.setSubDescription(x.getListino() + " - " + x.getDescrizioneListino()); + listModel.setRightDescription(x.getCodAnag()); + listModel.setRightSubDescription(x.getCodJcom()); + + return listModel; + }) + .toList(); + } + + + public void dispatchBolle() { + List selectedOrders = Stream.of(this.mBolleInevaseMutableData) + .filter(x -> x.getSelectedObservable().get()) + .map(MainAccettazioneBolleElencoListModel::getOriginalModel) + .toList(); + +// this.mViewModel.loadPicking(selectedOrders, this.mAppliedFilterViewModel.getSelectedMtbGrup()); + } + + @Override + public void onBolleDispatched(List orders, List sitArts) { + + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoModule.java new file mode 100644 index 00000000..f68f7cd2 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoModule.java @@ -0,0 +1,21 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco; + +import dagger.Module; +import dagger.Provides; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.BolleAccettazioneRESTConsumer; + +@Module(subcomponents = {MainAccettazioneBollaElencoComponent.class}) +public class MainAccettazioneBollaElencoModule { + + + @Provides + BolleAccettazioneRESTConsumer providesBolleAccettazioneRESTConsumer() { + return new BolleAccettazioneRESTConsumer(); + } + + + @Provides + MainAccettazioneBollaElencoViewModel providesMainAccettazioneBollaViewModel(BolleAccettazioneRESTConsumer bolleAccettazioneRESTConsumer) { + return new MainAccettazioneBollaElencoViewModel(bolleAccettazioneRESTConsumer); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoViewModel.java new file mode 100644 index 00000000..676cf885 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/MainAccettazioneBollaElencoViewModel.java @@ -0,0 +1,66 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco; + +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_ordini_elenco.dto.OrdineAccettazioneInevasoDTO; +import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.dto.SitArtOrdDTO; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.BolleAccettazioneRESTConsumer; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; + +public class MainAccettazioneBollaElencoViewModel { + + private final BolleAccettazioneRESTConsumer bolleAccettazioneRESTConsumer; + + private final MutableLiveData> bolleList = new MutableLiveData<>(); + private Listener listener; + + @Inject + public MainAccettazioneBollaElencoViewModel(BolleAccettazioneRESTConsumer bolleAccettazioneRESTConsumer) { + this.bolleAccettazioneRESTConsumer = bolleAccettazioneRESTConsumer; + } + + public void init() { + this.sendOnLoadingStarted(); + + bolleAccettazioneRESTConsumer.retrieveBolleDaAccettare(bolleList -> { + this.bolleList.postValue(bolleList); + + this.sendOnLoadingEnded(); + + }, this::sendError); + } + + + public MutableLiveData> getBolleList() { + return bolleList; + } + + public MainAccettazioneBollaElencoViewModel setListener(MainAccettazioneBollaElencoViewModel.Listener listener) { + this.listener = listener; + return this; + } + + private void sendOnLoadingStarted() { + if (this.listener != null) listener.onLoadingStarted(); + } + + private void sendOnLoadingEnded() { + if (this.listener != null) listener.onLoadingEnded(); + } + + private void sendError(Exception ex) { + if (this.listener != null) listener.onError(ex); + } + + public interface Listener extends ILoadingListener { + void onError(Exception ex); + + void onBolleDispatched(List orders, List sitArts); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java new file mode 100644 index 00000000..1c2fa571 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumer.java @@ -0,0 +1,37 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest; + +import java.util.List; + +import javax.inject.Singleton; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.rest.RESTBuilder; +import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.RetrieveElencoBolleAccettazioneResponseDTO; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +@Singleton +public class BolleAccettazioneRESTConsumer extends _BaseRESTConsumer { + + + public void retrieveBolleDaAccettare(RunnableArgs> onComplete, RunnableArgs onFailed) { + BolleAccettazioneRESTConsumerService service = RESTBuilder.getService(BolleAccettazioneRESTConsumerService.class); + service.retrieveElencoBolle() + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "retrieveBolleDaAccettare", data -> onComplete.run(data.getBolleDaAccettare()), onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumerService.java new file mode 100644 index 00000000..6b6f1ff3 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/BolleAccettazioneRESTConsumerService.java @@ -0,0 +1,13 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest; + +import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.RetrieveElencoBolleAccettazioneResponseDTO; +import retrofit2.Call; +import retrofit2.http.GET; + +public interface BolleAccettazioneRESTConsumerService { + + @GET("wms/accettazione-bolla/retrieveElencoBolle") + Call> retrieveElencoBolle(); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/RetrieveElencoBolleAccettazioneResponseDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/RetrieveElencoBolleAccettazioneResponseDTO.java new file mode 100644 index 00000000..a2978ac0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/RetrieveElencoBolleAccettazioneResponseDTO.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto; + +import java.util.List; + +public class RetrieveElencoBolleAccettazioneResponseDTO { + + private List bolleDaAccettare; + + public List getBolleDaAccettare() { + return bolleDaAccettare; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/TestataBollaAccettazioneDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/TestataBollaAccettazioneDTO.java new file mode 100644 index 00000000..e17128da --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/rest/dto/TestataBollaAccettazioneDTO.java @@ -0,0 +1,51 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto; + +import java.util.Date; + +public class TestataBollaAccettazioneDTO { + private String codAnag; + private String ragSoc; + private String codDtip; + private Date dataDoc; + private String serDoc; + private int numDoc; + private String listino; + private String descrizioneListino; + private String codJcom; + + public String getCodAnag() { + return codAnag; + } + + public String getRagSoc() { + return ragSoc; + } + + public String getCodDtip() { + return codDtip; + } + + public Date getDataDoc() { + return dataDoc; + } + + public String getSerDoc() { + return serDoc; + } + + public int getNumDoc() { + return numDoc; + } + + public String getListino() { + return listino; + } + + public String getDescrizioneListino() { + return descrizioneListino; + } + + public String getCodJcom() { + return codJcom; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoAdapter.java new file mode 100644 index 00000000..9632410d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoAdapter.java @@ -0,0 +1,143 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.ui; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.core.content.res.ResourcesCompat; +import androidx.databinding.ObservableArrayList; +import androidx.recyclerview.widget.RecyclerView; + +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.FragmentMainAccettazioneBollaListGroupModelBinding; +import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBollaListModelBinding; + +public class MainAccettazioneBolleElencoAdapter extends ExtendedSectionedRecyclerView { + + private final Context mContext; + private RunnableArgs mOnGroupItemClicked; + private RunnableArgs mOnItemChecked; + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + FragmentMainAccettazioneBollaListModelBinding mBinding; + + SubheaderHolder(FragmentMainAccettazioneBollaListModelBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + FragmentMainAccettazioneBollaListGroupModelBinding mBinding; + + SingleItemViewHolder(FragmentMainAccettazioneBollaListGroupModelBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + } + + public MainAccettazioneBolleElencoAdapter(Context context, ObservableArrayList mutableDataSet) { + super(mutableDataSet); + mContext = context; + } + + public MainAccettazioneBolleElencoAdapter setOnGroupItemClicked(RunnableArgs mOnGroupItemClicked) { + this.mOnGroupItemClicked = mOnGroupItemClicked; + return this; + } + + public MainAccettazioneBolleElencoAdapter setOnItemChecked(RunnableArgs mOnItemChecked) { + this.mOnItemChecked = mOnItemChecked; + return this; + } + + @Override + public MainAccettazioneBolleElencoAdapter.SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + FragmentMainAccettazioneBollaListModelBinding binding = FragmentMainAccettazioneBollaListModelBinding.inflate(LayoutInflater.from(mContext), parent, false); + return new MainAccettazioneBolleElencoAdapter.SubheaderHolder(binding); + } + + @Override + public MainAccettazioneBolleElencoAdapter.SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + FragmentMainAccettazioneBollaListGroupModelBinding binding = FragmentMainAccettazioneBollaListGroupModelBinding.inflate(LayoutInflater.from(mContext), parent, false); + return new MainAccettazioneBolleElencoAdapter.SingleItemViewHolder(binding); + } + + @Override + public void onBindSubheaderViewHolder(MainAccettazioneBolleElencoAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) { + MainAccettazioneBolleElencoListModel pickingObjectDTO = this.mDataset.get(nextItemPosition); + + subheaderHolder.mBinding.groupTitle.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getGroupTitle()) ? View.GONE : View.VISIBLE); + subheaderHolder.mBinding.groupTitle.setText(Html.fromHtml(pickingObjectDTO.getGroupTitle())); + + subheaderHolder.mBinding.getRoot().setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + if(mOnGroupItemClicked != null) mOnGroupItemClicked.run(pickingObjectDTO.getGroupTitle()); + } + }); + } + + @Override + public void onBindItemViewHolder(final MainAccettazioneBolleElencoAdapter.SingleItemViewHolder holder, final int position) { + MainAccettazioneBolleElencoListModel listModel = this.mDataset.get(position); + + listModel.getSelectedObservable().resetOnPropertyChangedCallback(); + + if(listModel.getEtichettaColor() != null) + holder.mBinding.emptyView.setBackgroundColor(listModel.getEtichettaColor()); + else holder.mBinding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null)); + + if(!UtilityString.isNullOrEmpty(listModel.getDescription())) { + holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription())); + holder.mBinding.descrizione.setVisibility(View.VISIBLE); + } else holder.mBinding.descrizione.setVisibility(View.GONE); + + if(!UtilityString.isNullOrEmpty(listModel.getSubDescription())) { + holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription())); + holder.mBinding.subDescrizione.setVisibility(View.VISIBLE); + } else holder.mBinding.subDescrizione.setVisibility(View.GONE); + + if(!UtilityString.isNullOrEmpty(listModel.getRightDescription())) { + holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription())); + holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE); + } else holder.mBinding.rightDescrizione.setVisibility(View.GONE); + + if(!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) { + holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription())); + holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE); + } else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE); + + holder.mBinding.setSelected(listModel.getSelectedObservable()); + holder.mBinding.executePendingBindings(); + holder.mBinding.checkbox.jumpDrawablesToCurrentState(); + + listModel.getSelectedObservable().addOnPropertyChangedCallback(() -> { + if(this.mOnItemChecked != null) this.mOnItemChecked.run(listModel); + }); + + holder.mBinding.getRoot().setOnClickListener(v -> { + listModel.getSelectedObservable().set(!listModel.getSelectedObservable().get()); + }); + } + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + MainAccettazioneBolleElencoListModel compare1 = this.mDataset.get(position); + MainAccettazioneBolleElencoListModel compare2 = this.mDataset.get(position + 1); + + return !UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle()); + } + + return true; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoListModel.java new file mode 100644 index 00000000..d0974618 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazone_bolla_elenco/ui/MainAccettazioneBolleElencoListModel.java @@ -0,0 +1,99 @@ +package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.ui; + +import androidx.annotation.ColorInt; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto.TestataBollaAccettazioneDTO; + +public class MainAccettazioneBolleElencoListModel implements Cloneable { + private String groupTitle; + + private String description; + private String subDescription; + private String rightDescription; + private String rightSubDescription; + + private @ColorInt Integer etichettaColor; + + private boolean hidden; + private BindableBoolean selected = new BindableBoolean(); + + + private TestataBollaAccettazioneDTO originalModel; + + + public String getGroupTitle() { + return groupTitle; + } + + public MainAccettazioneBolleElencoListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getDescription() { + return description; + } + + public MainAccettazioneBolleElencoListModel setDescription(String description) { + this.description = description; + return this; + } + + public String getSubDescription() { + return subDescription; + } + + public MainAccettazioneBolleElencoListModel setSubDescription(String subDescription) { + this.subDescription = subDescription; + return this; + } + + public String getRightDescription() { + return rightDescription; + } + + public MainAccettazioneBolleElencoListModel setRightDescription(String rightDescription) { + this.rightDescription = rightDescription; + return this; + } + + public String getRightSubDescription() { + return rightSubDescription; + } + + public MainAccettazioneBolleElencoListModel setRightSubDescription(String rightSubDescription) { + this.rightSubDescription = rightSubDescription; + return this; + } + + public @ColorInt Integer getEtichettaColor() { + return etichettaColor; + } + + public MainAccettazioneBolleElencoListModel setEtichettaColor(@ColorInt Integer etichettaColor) { + this.etichettaColor = etichettaColor; + return this; + } + + public boolean isHidden() { + return hidden; + } + + public MainAccettazioneBolleElencoListModel setHidden(boolean hidden) { + this.hidden = hidden; + return this; + } + + public BindableBoolean getSelectedObservable() { + return selected; + } + + public TestataBollaAccettazioneDTO getOriginalModel() { + return originalModel; + } + + public void setOriginalModel(TestataBollaAccettazioneDTO originalModel) { + this.originalModel = originalModel; + } +} 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 d5979ce7..2ffb1c47 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 @@ -291,7 +291,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF v -> initBottomSheetDialogFilter(filterChipDTO)); switch (filterChipDTO.getID()) { - case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID: + case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID -> { mAppliedFilterViewModel.getCurrentDepositoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -311,9 +311,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentDepositoPredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID: + } + case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID -> { mAppliedFilterViewModel.getCurrentIdViaggioPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -333,9 +332,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentIdViaggioPredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID: + } + case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID -> { mAppliedFilterViewModel.getCurrentNumOrdsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -355,9 +353,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentNumOrdsPredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID: + } + case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID -> { mAppliedFilterViewModel.getCurrentClientePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -377,9 +374,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentClientePredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID: + } + case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID -> { mAppliedFilterViewModel.getCurrentVettorePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -399,9 +395,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentVettorePredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID: + } + case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID -> { mAppliedFilterViewModel.getCurrentAutomezzoPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -421,9 +416,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAutomezzoPredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.PAESE_FILTER_ID: + } + case OrdiniUscitaElencoBindings.PAESE_FILTER_ID -> { mAppliedFilterViewModel.getCurrentPaesePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -443,9 +437,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentPaesePredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID: + } + case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID -> { mAppliedFilterViewModel.getCurrentAgentePredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -465,9 +458,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentAgentePredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID: + } + case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID -> { mAppliedFilterViewModel.getCurrentTermConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -487,9 +479,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF } }); filterChipView.setOnResetClicked(() -> mAppliedFilterViewModel.getCurrentTermConsPredicate().set(null)); - break; - - case OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID: + } + case OrdiniUscitaElencoBindings.DATA_CONS_FILTER_ID -> { mAppliedFilterViewModel.getCurrentDataConsPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -512,9 +503,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF mAppliedFilterViewModel.setDataConsegnaFilter(null); mAppliedFilterViewModel.getCurrentDataConsPredicate().set(null); }); - break; - - case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID: + } + case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID -> { mAppliedFilterViewModel.getCurrentGruppoMercPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -537,9 +527,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF mAppliedFilterViewModel.setGruppoMercFilter(null); mAppliedFilterViewModel.getCurrentGruppoMercPredicate().set(null); }); - break; - - case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID: + } + case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID -> { mAppliedFilterViewModel.getCurrentCommessaPredicate().addOnPropertyChangedCallback(new OnGeneralChangedCallback() { @Override public void run() { @@ -562,8 +551,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF mAppliedFilterViewModel.setCommessaFilter(null); mAppliedFilterViewModel.getCurrentCommessaPredicate().set(null); }); - break; - + } } this.mBindings.filterChipsGroup.addView(filterChipView); @@ -596,143 +584,122 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF .getFilterLayoutView(); switch (filterChipDTO.getID()) { - case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID: - ((FilterCommessaLayoutView) filterLayoutView) - .setAllCommesse(mAppliedFilterViewModel.getAllCommesse(this.jtbComtCache)) - .setAvailableCommesse(mAppliedFilterViewModel.getAvailableCommesse(this.jtbComtCache)) - .setOnFilterApplied(mAppliedFilterViewModel::setCommessaFilter) - .setPreSelectedCommesse(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentCommessaPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentCommessaPredicate().get()) - .map(x -> Stream.of(jtbComtCache).filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get()) - .toList()); - break; - - case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID: - ((FilterDepositoLayoutView) filterLayoutView) - .setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache)) - .setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps(mtbDepoCache)) - .setOnFilterApplied(mAppliedFilterViewModel::setDepositoFilter) - .setPreSelectedCodMdeps(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentDepositoPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentDepositoPredicate().get()) - .map(x -> Stream.of(mtbDepoCache).filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep())).findFirst().get()) - .toList()); - break; - - case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID: - ((FilterViaggioLayoutView) filterLayoutView) - .setAllIDViaggio(mAppliedFilterViewModel.getAllIDViaggio()) - .setAvailableIDViaggio(mAppliedFilterViewModel.getAvailableIDViaggio()) - .setOnFilterApplied(mAppliedFilterViewModel::setIDViaggioFilter) - .setPreSelectedIDViaggio(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get()) - .map(OrdineUscitaInevasoDTO::getIdViaggio) - .toList()); - break; - - case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID: - ((FilterNumeroOrdineLayoutView) filterLayoutView) - .setAllNumOrds(mAppliedFilterViewModel.getAllNumOrds()) - .setAvailableNumOrds(mAppliedFilterViewModel.getAvailableNumOrds()) - .setOnFilterApplied(mAppliedFilterViewModel::setNumOrdFilter) - .setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get()) - .map(OrdineUscitaInevasoDTO::getNumOrd) - .toList()); - break; - - case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID: - ((FilterClienteLayoutView) filterLayoutView) - .setAllClienti(mAppliedFilterViewModel.getAllClienti()) - .setAvailableClienti(mAppliedFilterViewModel.getAvailableClienti()) - .setOnFilterApplied(mAppliedFilterViewModel::setClienteFilter) - .setPreSelectedClienti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentClientePredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentClientePredicate().get()) - .map(OrdineUscitaInevasoDTO::getRagSocOrd) - .toList()); - break; - - case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID: - ((FilterVettoreLayoutView) filterLayoutView) - .setAllVettori(mAppliedFilterViewModel.getAllVettori()) - .setAvailableVettori(mAppliedFilterViewModel.getAvailableVettori()) - .setOnFilterApplied(mAppliedFilterViewModel::setVettoreFilter) - .setPreSelectedVettori(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentVettorePredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentVettorePredicate().get()) - .map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : "")) - .toList()); - break; - - case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID: - ((FilterAutomezzoLayoutView) filterLayoutView) - .setAllAutomezzi(mAppliedFilterViewModel.getAllAutomezzi()) - .setAvailableAutomezzi(mAppliedFilterViewModel.getAvailableAutomezzi()) - .setOnFilterApplied(mAppliedFilterViewModel::setAutomezzoFilter) - .setPreSelectedAutomezzi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get()) - .map(OrdineUscitaInevasoDTO::getDescrizioneAuto) - .toList()); - break; - - case OrdiniUscitaElencoBindings.PAESE_FILTER_ID: - ((FilterPaeseLayoutView) filterLayoutView) - .setAllPaesi(mAppliedFilterViewModel.getAllPaesi()) - .setAvailablePaesi(mAppliedFilterViewModel.getAvailablePaesi()) - .setOnFilterApplied(mAppliedFilterViewModel::setPaeseFilter) - .setPreSelectedPaesi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentPaesePredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentPaesePredicate().get()) - .map(OrdineUscitaInevasoDTO::getCitta) - .toList()); - break; - - case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID: - ((FilterAgenteLayoutView) filterLayoutView) - .setAllAgenti(mAppliedFilterViewModel.getAllAgenti()) - .setAvailableAgenti(mAppliedFilterViewModel.getAvailableAgenti()) - .setOnFilterApplied(mAppliedFilterViewModel::setAgenteFilter) - .setPreSelectedAgenti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentAgentePredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentAgentePredicate().get()) - .map(OrdineUscitaInevasoDTO::getCitta) - .toList()); - break; - - case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID: - ((FilterTermConsLayoutView) filterLayoutView) - .setAllTermCons(mAppliedFilterViewModel.getAllTermCons()) - .setAvailableTermCons(mAppliedFilterViewModel.getAvailableTermCons()) - .setOnFilterApplied(mAppliedFilterViewModel::setTerminiConsegnaFilter) - .setPreSelectedTermCons(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) - .filter(mAppliedFilterViewModel.getCurrentTermConsPredicate().get() == null ? - x -> false : - mAppliedFilterViewModel.getCurrentTermConsPredicate().get()) - .map(OrdineUscitaInevasoDTO::getCitta) - .toList()); - break; - - case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID: - ((FilterGruppoMercLayoutView) filterLayoutView) - .setAllGroupMerc(mAppliedFilterViewModel.getAllGruppoMerc(mtbGrupCache)) - .setAvailableGroupMerc(mAppliedFilterViewModel.getAvailableGruppoMerc(mtbGrupCache)) - .setOnFilterApplied(mAppliedFilterViewModel::setGruppoMercFilter) - .setPreSelectedGroupMerc(mAppliedFilterViewModel.getSelectedMtbGrup()); - break; + case OrdiniUscitaElencoBindings.COMMESSA_FILTER_ID -> + ((FilterCommessaLayoutView) filterLayoutView) + .setAllCommesse(mAppliedFilterViewModel.getAllCommesse(this.jtbComtCache)) + .setAvailableCommesse(mAppliedFilterViewModel.getAvailableCommesse(this.jtbComtCache)) + .setOnFilterApplied(mAppliedFilterViewModel::setCommessaFilter) + .setPreSelectedCommesse(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentCommessaPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentCommessaPredicate().get()) + .map(x -> Stream.of(jtbComtCache).filter(y -> x.getCodJcom().equalsIgnoreCase(y.getCodJcom())).findFirst().get()) + .toList()); + case OrdiniUscitaElencoBindings.DEPOSITO_FILTER_ID -> + ((FilterDepositoLayoutView) filterLayoutView) + .setAllCodMdeps(mAppliedFilterViewModel.getAllCodMdeps(mtbDepoCache)) + .setAvailableCodMdeps(mAppliedFilterViewModel.getAvailableCodMdeps(mtbDepoCache)) + .setOnFilterApplied(mAppliedFilterViewModel::setDepositoFilter) + .setPreSelectedCodMdeps(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentDepositoPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentDepositoPredicate().get()) + .map(x -> Stream.of(mtbDepoCache).filter(y -> x.getCodMdep().equalsIgnoreCase(y.getCodMdep())).findFirst().get()) + .toList()); + case OrdiniUscitaElencoBindings.VIAGGIO_FILTER_ID -> + ((FilterViaggioLayoutView) filterLayoutView) + .setAllIDViaggio(mAppliedFilterViewModel.getAllIDViaggio()) + .setAvailableIDViaggio(mAppliedFilterViewModel.getAvailableIDViaggio()) + .setOnFilterApplied(mAppliedFilterViewModel::setIDViaggioFilter) + .setPreSelectedIDViaggio(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentIdViaggioPredicate().get()) + .map(OrdineUscitaInevasoDTO::getIdViaggio) + .toList()); + case OrdiniUscitaElencoBindings.NUM_ORD_FILTER_ID -> + ((FilterNumeroOrdineLayoutView) filterLayoutView) + .setAllNumOrds(mAppliedFilterViewModel.getAllNumOrds()) + .setAvailableNumOrds(mAppliedFilterViewModel.getAvailableNumOrds()) + .setOnFilterApplied(mAppliedFilterViewModel::setNumOrdFilter) + .setPreSelectedNumOrds(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentNumOrdsPredicate().get()) + .map(OrdineUscitaInevasoDTO::getNumOrd) + .toList()); + case OrdiniUscitaElencoBindings.CLIENTE_FILTER_ID -> + ((FilterClienteLayoutView) filterLayoutView) + .setAllClienti(mAppliedFilterViewModel.getAllClienti()) + .setAvailableClienti(mAppliedFilterViewModel.getAvailableClienti()) + .setOnFilterApplied(mAppliedFilterViewModel::setClienteFilter) + .setPreSelectedClienti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentClientePredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentClientePredicate().get()) + .map(OrdineUscitaInevasoDTO::getRagSocOrd) + .toList()); + case OrdiniUscitaElencoBindings.VETTORE_FILTER_ID -> + ((FilterVettoreLayoutView) filterLayoutView) + .setAllVettori(mAppliedFilterViewModel.getAllVettori()) + .setAvailableVettori(mAppliedFilterViewModel.getAvailableVettori()) + .setOnFilterApplied(mAppliedFilterViewModel::setVettoreFilter) + .setPreSelectedVettori(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentVettorePredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentVettorePredicate().get()) + .map(x -> x.getCodVvet() + (!UtilityString.isNullOrEmpty(x.getCodVvet()) ? " - " + x.getDescrizioneVettore() : "")) + .toList()); + case OrdiniUscitaElencoBindings.AUTOMEZZO_FILTER_ID -> + ((FilterAutomezzoLayoutView) filterLayoutView) + .setAllAutomezzi(mAppliedFilterViewModel.getAllAutomezzi()) + .setAvailableAutomezzi(mAppliedFilterViewModel.getAvailableAutomezzi()) + .setOnFilterApplied(mAppliedFilterViewModel::setAutomezzoFilter) + .setPreSelectedAutomezzi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentAutomezzoPredicate().get()) + .map(OrdineUscitaInevasoDTO::getDescrizioneAuto) + .toList()); + case OrdiniUscitaElencoBindings.PAESE_FILTER_ID -> + ((FilterPaeseLayoutView) filterLayoutView) + .setAllPaesi(mAppliedFilterViewModel.getAllPaesi()) + .setAvailablePaesi(mAppliedFilterViewModel.getAvailablePaesi()) + .setOnFilterApplied(mAppliedFilterViewModel::setPaeseFilter) + .setPreSelectedPaesi(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentPaesePredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentPaesePredicate().get()) + .map(OrdineUscitaInevasoDTO::getCitta) + .toList()); + case OrdiniUscitaElencoBindings.AGENTE_FILTER_ID -> + ((FilterAgenteLayoutView) filterLayoutView) + .setAllAgenti(mAppliedFilterViewModel.getAllAgenti()) + .setAvailableAgenti(mAppliedFilterViewModel.getAvailableAgenti()) + .setOnFilterApplied(mAppliedFilterViewModel::setAgenteFilter) + .setPreSelectedAgenti(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentAgentePredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentAgentePredicate().get()) + .map(OrdineUscitaInevasoDTO::getCitta) + .toList()); + case OrdiniUscitaElencoBindings.TERM_CONS_FILTER_ID -> + ((FilterTermConsLayoutView) filterLayoutView) + .setAllTermCons(mAppliedFilterViewModel.getAllTermCons()) + .setAvailableTermCons(mAppliedFilterViewModel.getAvailableTermCons()) + .setOnFilterApplied(mAppliedFilterViewModel::setTerminiConsegnaFilter) + .setPreSelectedTermCons(Stream.of(Objects.requireNonNull(mViewModel.getOrderList().getValue())) + .filter(mAppliedFilterViewModel.getCurrentTermConsPredicate().get() == null ? + x -> false : + mAppliedFilterViewModel.getCurrentTermConsPredicate().get()) + .map(OrdineUscitaInevasoDTO::getCitta) + .toList()); + case OrdiniUscitaElencoBindings.GRUPPO_MERC_FILTER_ID -> + ((FilterGruppoMercLayoutView) filterLayoutView) + .setAllGroupMerc(mAppliedFilterViewModel.getAllGruppoMerc(mtbGrupCache)) + .setAvailableGroupMerc(mAppliedFilterViewModel.getAvailableGruppoMerc(mtbGrupCache)) + .setOnFilterApplied(mAppliedFilterViewModel::setGruppoMercFilter) + .setPreSelectedGroupMerc(mAppliedFilterViewModel.getSelectedMtbGrup()); } if (!filterLayoutView.isAdded()) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java index 512ab6f7..9ad20f1d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/ui/OrdiniUscitaElencoAdapter.java @@ -22,7 +22,7 @@ import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModel public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView { - private Context mContext; + private final Context mContext; private RunnableArgs mOnGroupItemClicked; private RunnableArgs mOnItemChecked; @@ -141,17 +141,9 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView - - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_accettazione_bolla.xml b/app/src/main/res/layout/fragment_main_accettazione_bolla.xml new file mode 100644 index 00000000..66fcb841 --- /dev/null +++ b/app/src/main/res/layout/fragment_main_accettazione_bolla.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_accettazione_bolla__list_group_model.xml b/app/src/main/res/layout/fragment_main_accettazione_bolla__list_group_model.xml new file mode 100644 index 00000000..2d522cb1 --- /dev/null +++ b/app/src/main/res/layout/fragment_main_accettazione_bolla__list_group_model.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main_accettazione_bolla__list_model.xml b/app/src/main/res/layout/fragment_main_accettazione_bolla__list_model.xml new file mode 100644 index 00000000..2ee259a8 --- /dev/null +++ b/app/src/main/res/layout/fragment_main_accettazione_bolla__list_model.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_main_accettazione.xml b/app/src/main/res/layout/fragment_main_accettazione_ordini.xml similarity index 100% rename from app/src/main/res/layout/fragment_main_accettazione.xml rename to app/src/main/res/layout/fragment_main_accettazione_ordini.xml diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 042e1261..06069fad 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -260,6 +260,7 @@ Nessun articolo trovato Nessuna UL trovata + Non sono state trovate bolle Non sono stati trovati ordini Non รจ stato selezionato alcun ordine Sono ammesse solo UL di Acquisto o Lavorazione qui diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index 4a63fe50..8d9c4314 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -13,6 +13,7 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f99ef1b5..a11515b1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -267,6 +267,7 @@ No items found No LU found + No documents found No orders found No one order is selected Only Purchase or Production\'s LU are accepted here diff --git a/build.gradle b/build.gradle index 3043ed2c..3a1d4eca 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.0.2' + agp_version = '8.1.0' } repositories { @@ -18,7 +18,7 @@ buildscript { classpath 'com.google.firebase:perf-plugin:1.4.2' // Add the Firebase Crashlytics Gradle plugin. - classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.7' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files