Completato avantielenco accettazione bolla

This commit is contained in:
Giuseppe Scorrano 2023-07-31 09:59:34 +02:00
parent e1fddc8682
commit 6dbcdb0475
27 changed files with 1085 additions and 206 deletions

View File

@ -1,17 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-07-21T16:48:48.955374400Z" />
<value>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

View File

@ -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);

View File

@ -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")

View File

@ -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<MainListAccettazioneOrdiniElencoListModel> 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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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<MainAccettazioneBolleElencoListModel> mBolleInevaseMutableData = new ObservableArrayList<>();
private FragmentMainAccettazioneBollaBinding mBinding;
private ElevatedToolbar mToolbar;
private AppCompatTextView mAppBarTitle;
public BindableBoolean fabVisible = new BindableBoolean(false);
private String mTextFilter;
private final List<Runnable> 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<TestataBollaAccettazioneDTO> 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<MainAccettazioneBolleElencoListModel> convertDataModelToListModel(List<TestataBollaAccettazioneDTO> 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<TestataBollaAccettazioneDTO> 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<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts) {
}
}

View File

@ -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);
}
}

View File

@ -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<List<TestataBollaAccettazioneDTO>> 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<List<TestataBollaAccettazioneDTO>> 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<OrdineAccettazioneInevasoDTO> orders, List<SitArtOrdDTO> sitArts);
}
}

View File

@ -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<List<TestataBollaAccettazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
BolleAccettazioneRESTConsumerService service = RESTBuilder.getService(BolleAccettazioneRESTConsumerService.class);
service.retrieveElencoBolle()
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<RetrieveElencoBolleAccettazioneResponseDTO>> call, Response<ServiceRESTResponse<RetrieveElencoBolleAccettazioneResponseDTO>> response) {
analyzeAnswer(response, "retrieveBolleDaAccettare", data -> onComplete.run(data.getBolleDaAccettare()), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<RetrieveElencoBolleAccettazioneResponseDTO>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@ -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<ServiceRESTResponse<RetrieveElencoBolleAccettazioneResponseDTO>> retrieveElencoBolle();
}

View File

@ -0,0 +1,12 @@
package it.integry.integrywmsnative.gest.accettazone_bolla_elenco.rest.dto;
import java.util.List;
public class RetrieveElencoBolleAccettazioneResponseDTO {
private List<TestataBollaAccettazioneDTO> bolleDaAccettare;
public List<TestataBollaAccettazioneDTO> getBolleDaAccettare() {
return bolleDaAccettare;
}
}

View File

@ -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;
}
}

View File

@ -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<MainAccettazioneBolleElencoListModel, MainAccettazioneBolleElencoAdapter.SubheaderHolder, MainAccettazioneBolleElencoAdapter.SingleItemViewHolder> {
private final Context mContext;
private RunnableArgs<String> mOnGroupItemClicked;
private RunnableArgs<MainAccettazioneBolleElencoListModel> 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<MainAccettazioneBolleElencoListModel> mutableDataSet) {
super(mutableDataSet);
mContext = context;
}
public MainAccettazioneBolleElencoAdapter setOnGroupItemClicked(RunnableArgs<String> mOnGroupItemClicked) {
this.mOnGroupItemClicked = mOnGroupItemClicked;
return this;
}
public MainAccettazioneBolleElencoAdapter setOnItemChecked(RunnableArgs<MainAccettazioneBolleElencoListModel> 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;
}
}

View File

@ -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;
}
}

View File

@ -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())

View File

@ -22,7 +22,7 @@ import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaListModel
public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView<OrdiniUscitaElencoListModel, OrdiniUscitaElencoAdapter.SubheaderHolder, OrdiniUscitaElencoAdapter.SingleItemViewHolder> {
private Context mContext;
private final Context mContext;
private RunnableArgs<String> mOnGroupItemClicked;
private RunnableArgs<OrdiniUscitaElencoListModel> mOnItemChecked;
@ -141,17 +141,9 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerView<Ord
OrdiniUscitaElencoListModel compare1 = this.mDataset.get(position);
OrdiniUscitaElencoListModel compare2 = this.mDataset.get(position + 1);
if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) {
return false;
}
return !UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle());
}
return true;
}
@Override
public int getItemSize() {
return mDataset.size();
}
}

View File

@ -37,6 +37,7 @@ import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
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.FragmentProdOrdineProduzioneElencoBinding;
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.AccettazioneOrdiniPickingActivity;

View File

@ -20,7 +20,7 @@
</data>
<LinearLayout
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@ -56,7 +56,7 @@
android:layout_marginBottom="24dp"
android:indeterminate="true" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>

View File

@ -0,0 +1,98 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="androidx.databinding.ObservableList" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.accettazone_bolla_elenco.MainAccettazioneBollaElencoFragment" />
</data>
<FrameLayout xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/full_white"
tools:context="it.integry.integrywmsnative.gest.accettazone_bolla_elenco.MainAccettazioneBollaElencoFragment">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/accettazione_main_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/bolle_accettazione_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/ic_playlist_add_check_24dp" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/no_bolle_found_message"
android:textColor="@android:color/black"
android:textSize="18sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:onClick="@{() -> view.dispatchBolle()}"
app:srcCompat="@drawable/ic_check_black_24dp"
app:visibility="@{view.fabVisible}"
style="?attr/floatingActionButtonPrimaryStyle" />
</FrameLayout>
</layout>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="it.integry.integrywmsnative.core.di.BindableBoolean" />
<variable
name="selected"
type="BindableBoolean" />
</data>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="2dp"
android:paddingEnd="4dp"
android:paddingVertical="2dp"
android:orientation="horizontal">
<View
android:id="@+id/empty_view"
android:layout_width="8dp"
android:layout_height="match_parent" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/ordine_lavorazione_main_list_group_item_container_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingStart="2dp"
android:paddingEnd="8dp"
android:background="@color/full_white">
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:checked="@{selected}" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Cons 07 nov 2018"
android:layout_alignParentEnd="true"
android:textColor="#000"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Ord. Ven. 39 del 27 ott 2017"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
android:layout_alignParentStart="true"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_toStartOf="@id/descrizione"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_sub_descrizione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Cod Jcom"
android:layout_alignParentEnd="true"
android:layout_below="@id/descrizione"
style="@style/AppTheme.NewMaterial.Text.Small" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sub_descrizione"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:paddingEnd="6dp"
tools:text="TextView"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_below="@+id/descrizione"
android:layout_toStartOf="@id/right_sub_descrizione"/>
</RelativeLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>

View File

@ -0,0 +1,32 @@
<layout>
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/mainOrange"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingStart="12dp"
xmlns:tools="http://schemas.android.com/tools">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:enabled="false"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/group_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:ellipsize="end"
android:singleLine="true"
style="@style/TextAppearance.Material3.TitleMedium"
tools:text="NOME GRUPPO"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>

View File

@ -260,6 +260,7 @@
<string name="no_items_found_message">Nessun articolo trovato</string>
<string name="no_lu_found_message">Nessuna UL trovata</string>
<string name="no_bolle_found_message">Non sono state trovate bolle</string>
<string name="no_orders_found_message">Non sono stati trovati ordini</string>
<string name="no_one_order_selected">Non è stato selezionato alcun ordine</string>
<string name="gestione_A_L_only_accepted_message">Sono ammesse solo UL di <b>Acquisto</b> o <b>Lavorazione</b> qui</string>

View File

@ -13,6 +13,7 @@
<item name="nav_home" type="id" />
<item name="nav_accettazione" type="id" />
<item name="nav_accettazione_bolle" type="id" />
<item name="nav_spedizione" type="id" />
<item name="nav_rettifica_giacenze" type="id" />
<item name="nav_rettifica_spedizione" type="id" />

View File

@ -267,6 +267,7 @@
<string name="no_items_found_message">No items found</string>
<string name="no_lu_found_message">No LU found</string>
<string name="no_bolle_found_message">No documents found</string>
<string name="no_orders_found_message">No orders found</string>
<string name="no_one_order_selected">No one order is selected</string>
<string name="gestione_A_L_only_accepted_message">Only <b>Purchase</b> or <b>Production\'s</b> LU are accepted here</string>

View File

@ -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