diff --git a/app/build.gradle b/app/build.gradle
index 28adf0b0..34741b9d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 215
- def appVersionName = '1.16.33'
+ def appVersionCode = 216
+ def appVersionName = '1.16.34'
signingConfigs {
release {
@@ -24,12 +24,12 @@ android {
}
}
- compileSdkVersion 29
+ compileSdkVersion 30
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode appVersionCode
versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -104,15 +104,15 @@ dependencies {
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.cardview:cardview:1.0.0'
- implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.recyclerview:recyclerview:1.2.0'
implementation 'androidx.preference:preference-ktx:1.1.1'
- implementation 'com.squareup.okhttp3:okhttp:4.9.0'
+ implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
- implementation 'com.annimon:stream:1.2.1'
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0'
+ implementation 'com.annimon:stream:1.2.2'
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
- implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.0'
+ implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1'
implementation 'org.apache.commons:commons-text:1.9'
//MVVM
@@ -127,16 +127,16 @@ dependencies {
implementation 'com.github.clans:fab:1.6.4'
//CUSTOM VIEWS
implementation 'com.github.NaimishTrivedi:FBToast:1.0'
- implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
+ implementation 'com.github.cachapa:ExpandableLayout:2.9.2'
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
- implementation 'com.fede987:status-bar-alert:1.0.1'
- implementation 'com.fxn769:stash:1.2'
- testImplementation 'junit:junit:4.13.1'
+ implementation 'com.github.fede87:StatusBarAlert:1.0.1'
+ implementation 'com.github.akshay2211:Stash:master'
+ testImplementation 'junit:junit:4.13.2'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
- def room_version = "2.2.6"
+ def room_version = "2.3.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
@@ -150,11 +150,12 @@ dependencies {
implementation project(':barcode_base_android_library')
implementation project(':honeywellscannerlibrary')
implementation project(':keyobardemulatorscannerlibrary')
- implementation project(':barcode_kaiteki')
- androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
- androidTestImplementation 'org.testng:testng:7.3.0'
+ androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
+ androidTestImplementation 'org.testng:testng:7.4.0'
}
+
repositories {
mavenCentral()
google()
+ maven { url 'https://jitpack.io' }
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1439c8a7..90a5623f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+
getAll();
- @Query("SELECT *, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id")
+ @Query("SELECT griglie.*, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id")
GrigliaWrapper findByCodAlis(String codAlis);
@Insert
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java
index 093507c0..b056d387 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Griglia.java
@@ -11,6 +11,7 @@ import androidx.room.PrimaryKey;
@Index(value = "cod_alis", unique = true)
}
)
+
public class Griglia {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "griglia_id")
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
index cdc2bee5..4bb3dc50 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseActivity.java
@@ -40,12 +40,14 @@ public class BaseActivity extends AppCompatActivity {
protected void openProgress() {
+ BarcodeManager.disable();
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this);
}
}
protected void closeProgress() {
+ BarcodeManager.enable();
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
index cbbeea5b..53e7ceb2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java
@@ -23,7 +23,7 @@ public class UtilityString {
}
public static String empty2null(String stringToCheck) {
- return (stringToCheck != null && stringToCheck.trim().length() == 0 || stringToCheck == null) ? null : stringToCheck.trim();
+ return (stringToCheck == null || stringToCheck.trim().length() == 0) ? null : stringToCheck.trim();
}
public static String capitalizeWords(String capString){
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java
index f4a5ab67..5219400b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/viewmodel/ContenutoBancaleViewModel.java
@@ -7,7 +7,6 @@ import android.text.SpannableString;
import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableField;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import it.integry.integrywmsnative.R;
@@ -24,6 +23,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleActivity;
import it.integry.integrywmsnative.gest.contenuto_bancale.core.ContenutoBancaleListAdapter;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import static android.app.Activity.RESULT_OK;
@@ -66,7 +66,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked
mContext.bindings.contenutoBancaleMainList.setLayoutManager(new LinearLayoutManager(mContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mContext.bindings.contenutoBancaleMainList.addItemDecoration(itemDecorator);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java
index 274129ea..6f4fc2ca 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/lista_bancali/viewmodel/ListaBancaliViewModel.java
@@ -2,22 +2,22 @@ package it.integry.integrywmsnative.gest.lista_bancali.viewmodel;
import android.app.Dialog;
-import androidx.databinding.ObservableArrayList;
import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
import it.integry.integrywmsnative.gest.lista_bancali.core.MainListListaColliAdapter;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class ListaBancaliViewModel implements IRecyclerItemClicked {
@@ -42,7 +42,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked {
mContext.bindings.listaColliMainList.setHasFixedSize(true);
mContext.bindings.listaColliMainList.setLayoutManager(new LinearLayoutManager(mContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mContext.bindings.listaColliMainList.addItemDecoration(itemDecorator);
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 3dfdcced..94a5867a 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
@@ -43,7 +43,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.FragmentMainOrdiniUscitaBinding;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzato;
+import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoAdapter;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.list.OrdiniUscitaElencoListModel;
@@ -125,9 +125,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.initRecyclerView();
this.initBarcodeReader();
- String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
- mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
-
return mBindings.getRoot();
}
@@ -135,9 +132,8 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
public void onStart() {
super.onStart();
- if(mAppliedFilterViewModel != null) {
-
- }
+ String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
+ mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol);
}
@Override
@@ -155,13 +151,13 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders();
boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV();
- this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), this::refreshList);
+ this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), v -> this.refreshList(null));
OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter =
new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData)
.setEmptyView(this.mBindings.ordiniVenditaEmptyView)
.setOnGroupItemClicked(x -> {
- if(!canSelectMultipleClienti) {
+ if (!canSelectMultipleClienti) {
Stream.of(mOrdiniInevasiMutableData)
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x) && y.getSelectedObservable().get())
.forEach(y -> y.getSelectedObservable().set(false));
@@ -176,7 +172,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
.forEach(y -> y.getSelectedObservable().set(!allSelected));
})
.setOnItemChecked(x -> {
- if(!canSelectMultipleClienti && x.getSelectedObservable().get()) {
+ if (!canSelectMultipleClienti && x.getSelectedObservable().get()) {
Stream.of(mOrdiniInevasiMutableData)
.filter(y -> !y.getGroupTitle().equalsIgnoreCase(x.getGroupTitle()) && y.getSelectedObservable().get())
.forEach(y -> y.getSelectedObservable().set(false));
@@ -189,7 +185,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter);
this.mBindings.venditaMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
- if(mToolbar != null)
+ if (mToolbar != null)
mToolbar.setRecyclerView(this.mBindings.venditaMainList);
}
@@ -211,9 +207,21 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
});
};
- private void refreshList(List orderList) {
+ private void refreshList(List filteredList) {
+ List tmpList = null;
+
+ if(filteredList != null) {
+ tmpList = filteredList;
+ } else if (mAppliedFilterViewModel != null) {
+ mAppliedFilterViewModel.init(mViewModel.getOrderList().getValue());
+ mAppliedFilterViewModel.applyAllTests();
+ tmpList = mAppliedFilterViewModel.getMutableFilteredOrderList().getValue();
+ } else {
+ tmpList = mViewModel.getOrderList().getValue();
+ }
+
this.mOrdiniInevasiMutableData.clear();
- this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(orderList));
+ this.mOrdiniInevasiMutableData.addAll(convertDataModelToListModel(tmpList));
}
private List convertDataModelToListModel(List dataList) {
@@ -348,19 +356,17 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
@Override
public void onFilterClick() {
- DialogVenditaFiltroAvanzato.make(
+ DialogVenditaFiltroAvanzatoView.make(
getActivity(),
this.mViewModel.getOrderList().getValue(),
mAppliedFilterViewModel,
- (filteredOrderList, filter) -> {
- mAppliedFilterViewModel = filter;
+ filter -> {
- if(filteredOrderList != null){
- refreshList(filteredOrderList);
- }
+ mAppliedFilterViewModel = filter;
+ refreshList(null);
- }).show();
+ }).show();
}
@Override
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java
deleted file mode 100644
index f20af8e3..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzato.java
+++ /dev/null
@@ -1,838 +0,0 @@
-package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
-
-import android.app.DatePickerDialog;
-import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.ArrayAdapter;
-import android.widget.MultiAutoCompleteTextView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.databinding.DataBindingUtil;
-
-import com.annimon.stream.Stream;
-import com.annimon.stream.function.Predicate;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.class_router.ClassRouter;
-import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
-import it.integry.integrywmsnative.core.di.BindableString;
-import it.integry.integrywmsnative.core.expansion.RunnableArgss;
-import it.integry.integrywmsnative.core.utility.UtilityDate;
-import it.integry.integrywmsnative.core.utility.UtilityString;
-import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
-import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
-
-
-public class DialogVenditaFiltroAvanzato {
-
-
- private final AlertDialog currentAlert;
- private final Context currentContext;
-
- private final RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
-
- private final List currentOrderList;
- private List currentFilteredOrderList;
-
- private ArrayAdapter arrayAdapterCodMdep;
- private ArrayAdapter arrayAdapterIdViaggio;
- private ArrayAdapter arrayAdapterNumOrds;
- private ArrayAdapter arrayAdapterCliente;
- private ArrayAdapter arrayAdapterTermCons;
- private ArrayAdapter arrayAdapterVettore;
- private ArrayAdapter arrayAdapterAgente;
- private ArrayAdapter arrayAdapterAutomezzo;
- private ArrayAdapter arrayAdapterPaese;
-
- private Predicate currentDepositoPredicate = null;
- private Predicate currentIdViaggioPredicate = null;
- private Predicate currentNumOrdsPredicate = null;
- private Predicate currentClientePredicate = null;
- private Predicate currentDataConsPredicate = null;
- private Predicate currentTermConsPredicate = null;
- private Predicate currentVettorePredicate = null;
- private Predicate currentAgentePredicate = null;
- private Predicate currentAutomezzoPredicate = null;
- private Predicate currentPaesePredicate = null;
-
- private boolean firstInit = true;
-
- public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
- return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
- }
-
- public static AlertDialog make(final Context context,
- final List ordersList,
- DialogVenditaFiltroAvanzatoViewModel baseViewModel,
- RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
- return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
- }
-
- private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
- currentContext = context;
- currentOrderList = ordersList;
- currentOnFilterDone = onDismiss;
-
- DialogVenditaFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel();
-
- LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
-
- DialogVenditaFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vendita_filtro_avanzato, null, false);
-
- final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
- .setView(binding.getRoot());
-
- binding.setViewmodel(viewModel);
- initViewModelNew(viewModel);
- initView(binding, viewModel);
-
- currentAlert = alertDialog.create();
- currentAlert.setCanceledOnTouchOutside(false);
-
- currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
- currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-
-
-
- binding.positiveBtn.setOnClickListener(view -> {
- currentAlert.dismiss();
- });
-
- binding.neutralBtn.setOnClickListener(view -> {
- resetAll(viewModel);
- });
-
-
- currentAlert.setOnDismissListener(dialogInterface -> {
- if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel);
- });
-
- refreshList();
- }
-
- private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) {
- viewModel.deposito.set(null);
- viewModel.idViaggio.set(null);
- viewModel.numOrds.set(null);
- viewModel.cliente.set(null);
- viewModel.dataConsegna.set(null);
- viewModel.terminiConsegna.set(null);
- viewModel.vettore.set(null);
- viewModel.automezzo.set(null);
- viewModel.agente.set(null);
- viewModel.paese.set(null);
- }
-
- private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
- IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
-
-// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> {
-// bindings.filledExposedDropdownDataCons.callOnClick();
-// });
-
- bindings.filledExposedDropdownDataCons.setOnClickListener(view -> {
- Calendar c = UtilityDate.getCalendarInstance();
-
- if(viewModel.dataConsegnaDate != null) {
- c.setTime(viewModel.dataConsegnaDate);
- }
-
- int mYear = c.get(Calendar.YEAR);
- int mMonth = c.get(Calendar.MONTH);
- int mDay = c.get(Calendar.DAY_OF_MONTH);
-
- DatePickerDialog datePickerDialog = new DatePickerDialog(currentContext,
- (view2, year, month, day) -> {
-
- viewModel.dataConsegnaDate = new GregorianCalendar(year, month, day).getTime();
- viewModel.dataConsegna.set(UtilityDate.formatDate(viewModel.dataConsegnaDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
-
- }, mYear, mMonth, mDay);
- datePickerDialog.show();
- });
-
-
- arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false));
- bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE);
- bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep);
-
- arrayAdapterIdViaggio = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(false));
- bindings.inputIdViaggio.setVisibility(filtroOrdiniVendita.shoudShowIdViaggioFilter() ? View.VISIBLE : View.GONE);
- bindings.filledExposedDropdownIdViaggio.setAdapter(arrayAdapterIdViaggio);
-
- arrayAdapterAgente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterAgente.addAll(getAvailableAgente(false));
- bindings.inputAgente.setVisibility(filtroOrdiniVendita.shoudShowAgenteFilter() ? View.VISIBLE : View.GONE);
- bindings.filledExposedDropdownAgente.setAdapter(arrayAdapterAgente);
-
- arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(false));
- bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds);
- bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
-
- arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterCliente.addAll(getAvailableCliente(false));
- bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente);
-
- arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterTermCons.addAll(getAvailableTermCons(false));
- bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons);
-
- arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterVettore.addAll(getAvailableVettori(false));
- bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore);
-
- arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false));
- bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo);
-
- arrayAdapterPaese = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
- arrayAdapterPaese.addAll(getAvailablePaesi(false));
- bindings.filledExposedDropdownPaese.setAdapter(arrayAdapterPaese);
-
-
- viewModel.deposito.refresh();
- viewModel.idViaggio.refresh();
- viewModel.numOrds.refresh();
- viewModel.cliente.refresh();
- viewModel.terminiConsegna.refresh();
- viewModel.vettore.refresh();
- viewModel.automezzo.refresh();
- viewModel.dataConsegna.refresh();
- viewModel.agente.refresh();
- viewModel.paese.refresh();
-
-
- }
-
- private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) {
- BindableString.registerListener(viewModel.idViaggio, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentIdViaggioPredicate = null;
- else {
- String[] idViaggiSplitted = value.split("[,\\ ]");
-
- try{
- List idViaggiInteger = Stream.of(idViaggiSplitted)
- .filter(x -> !UtilityString.isNullOrEmpty(x))
- .map(Integer::parseInt).toList();
-
- currentIdViaggioPredicate = o -> idViaggiInteger.contains(o.getIdViaggio());
- } catch (NumberFormatException ex) {
- currentNumOrdsPredicate = null;
- }
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.deposito, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentDepositoPredicate = null;
- else {
- currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(value);
- }
-
- refreshList();
-
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.numOrds, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null;
- else {
- String[] numOrdsSplitted = value.split("[,\\ ]");
-
- try{
- List numOrdsInteger = Stream.of(numOrdsSplitted)
- .filter(x -> !UtilityString.isNullOrEmpty(x))
- .map(Integer::parseInt).toList();
-
- currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
- } catch (NumberFormatException ex) {
- currentNumOrdsPredicate = null;
- }
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.cliente, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null;
- else {
- currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value.toLowerCase());
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.terminiConsegna, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null;
- else {
- currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(value);
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.vettore, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentVettorePredicate = null;
- else {
- currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(value);
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.registerListener(viewModel.automezzo, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null;
- else {
- currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && (o.getDescrizioneAuto().toLowerCase().contains(value) || o.getDescrizioneAuto().equalsIgnoreCase(value));
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.resetListeners(viewModel.dataConsegna);
- BindableString.registerListener(viewModel.dataConsegna, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null;
- else {
- currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate);
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.resetListeners(viewModel.agente);
- BindableString.registerListener(viewModel.agente, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentAgentePredicate = null;
- else {
- currentAgentePredicate = o -> !UtilityString.isNullOrEmpty(o.getNomeAgente()) && (o.getNomeAgente().toLowerCase().contains(value) || o.getNomeAgente().equalsIgnoreCase(value));
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterPaese.clear();
- arrayAdapterPaese.addAll(getAvailablePaesi(true));
- });
-
- BindableString.resetListeners(viewModel.paese);
- BindableString.registerListener(viewModel.paese, value -> {
- if(UtilityString.isNullOrEmpty(value)) currentPaesePredicate = null;
- else {
- currentPaesePredicate = o -> !UtilityString.isNullOrEmpty(o.getCitta()) && (o.getCitta().toLowerCase().contains(value) || o.getCitta().equalsIgnoreCase(value));
- }
-
- refreshList();
-
- arrayAdapterCodMdep.clear();
- arrayAdapterCodMdep.addAll(getAvailableCodMdeps(true));
- arrayAdapterIdViaggio.clear();
- arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(true));
- arrayAdapterNumOrds.clear();
- arrayAdapterNumOrds.addAll(getAvailableNumOrds(true));
- arrayAdapterCliente.clear();
- arrayAdapterCliente.addAll(getAvailableCliente(true));
- arrayAdapterTermCons.clear();
- arrayAdapterTermCons.addAll(getAvailableTermCons(true));
- arrayAdapterVettore.clear();
- arrayAdapterVettore.addAll(getAvailableVettori(true));
- arrayAdapterAutomezzo.clear();
- arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(true));
- arrayAdapterAgente.clear();
- arrayAdapterAgente.addAll(getAvailableAgente(true));
- });
-
- }
-
-
-
- private List getAvailableIdViaggio(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentTermConsPredicate == null &&
- currentDepositoPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream
- .of(currentFilteredOrderList)
- .filter(x -> x.getIdViaggio() != null)
- .sortBy(x -> -x.getIdViaggio())
- .map(x -> x.getIdViaggio() != null ? x.getIdViaggio().toString() : null)
- .distinct()
- .toList();
- }
-
- private List getAvailableAgente(boolean skipRecalc) {
- if(currentDepositoPredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentTermConsPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getNomeAgente).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableCodMdeps(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentTermConsPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCodMdep).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableCliente(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentDepositoPredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentTermConsPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getRagSocOrd).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableNumOrds(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentDepositoPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentTermConsPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(x -> x.getNumOrd().toString()).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableTermCons(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentVettorePredicate == null &&
- currentDepositoPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getTermCons).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableVettori(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentTermConsPredicate == null &&
- currentAutomezzoPredicate == null &&
- currentDepositoPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate .test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).filter(x -> x.getCodVvet() != null).map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore()).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailableAutomezzi(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentTermConsPredicate == null &&
- currentVettorePredicate == null &&
- currentDepositoPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getDescrizioneAuto).distinct().withoutNulls().sorted().toList();
- }
-
- private List getAvailablePaesi(boolean skipRecalc) {
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentTermConsPredicate == null &&
- currentVettorePredicate == null &&
- currentDepositoPredicate == null &&
- currentAutomezzoPredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else if(!skipRecalc){
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
- return Stream.of(currentFilteredOrderList).map(OrdiniUscitaElencoDTO::getCitta).withoutNulls().distinct().sorted().toList();
- }
-
- private void refreshList() {
-
- if(currentAgentePredicate == null &&
- currentIdViaggioPredicate == null &&
- currentNumOrdsPredicate == null &&
- currentClientePredicate == null &&
- currentDataConsPredicate == null &&
- currentTermConsPredicate == null &&
- currentVettorePredicate == null &&
- currentAutomezzoPredicate == null &&
- currentDepositoPredicate == null &&
- currentPaesePredicate == null
- ){
- currentFilteredOrderList = currentOrderList;
- } else {
- Stream tmpStream = Stream.of(currentOrderList)
- .filter(x ->
- (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
- (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
- (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
- (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
- (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
- (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
- (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
- (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
- (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
- (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
- );
-
- currentFilteredOrderList = tmpStream.toList();
- }
-
-
- }
-
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java
new file mode 100644
index 00000000..0c34d915
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoView.java
@@ -0,0 +1,465 @@
+package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
+
+import android.app.DatePickerDialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.ArrayAdapter;
+import android.widget.MultiAutoCompleteTextView;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.databinding.DataBindingUtil;
+
+import com.annimon.stream.Stream;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Objects;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.class_router.ClassRouter;
+import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
+import it.integry.integrywmsnative.core.di.BindableString;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.utility.UtilityDate;
+import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
+import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
+
+
+public class DialogVenditaFiltroAvanzatoView {
+
+
+ private final AlertDialog currentAlert;
+ private final Context currentContext;
+
+ private final RunnableArgs currentOnFilterDone;
+
+
+
+ public BindableString deposito = new BindableString();
+ public BindableString idViaggio = new BindableString();
+ public BindableString numOrds = new BindableString();
+ public BindableString cliente = new BindableString();
+ public BindableString dataConsegna = new BindableString();
+ public BindableString terminiConsegna = new BindableString();
+ public BindableString agente = new BindableString();
+ public BindableString vettore = new BindableString();
+ public BindableString automezzo = new BindableString();
+ public BindableString paese = new BindableString();
+
+ public Date dataConsegnaDate;
+
+ private ArrayAdapter arrayAdapterCodMdep;
+ private ArrayAdapter arrayAdapterIdViaggio;
+ private ArrayAdapter arrayAdapterNumOrds;
+ private ArrayAdapter arrayAdapterCliente;
+ private ArrayAdapter arrayAdapterTermCons;
+ private ArrayAdapter arrayAdapterVettore;
+ private ArrayAdapter arrayAdapterAgente;
+ private ArrayAdapter arrayAdapterAutomezzo;
+ private ArrayAdapter arrayAdapterPaese;
+
+ private DialogVenditaFiltroAvanzatoViewModel viewModel;
+
+ public static AlertDialog make(final Context context, final List ordersList, RunnableArgs onDismiss) {
+ return new DialogVenditaFiltroAvanzatoView(context, ordersList, null, onDismiss).currentAlert;
+ }
+
+ public static AlertDialog make(final Context context,
+ final List ordersList,
+ DialogVenditaFiltroAvanzatoViewModel baseViewModel,
+ RunnableArgs onDismiss) {
+ return new DialogVenditaFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert;
+ }
+
+ private DialogVenditaFiltroAvanzatoView(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgs onDismiss) {
+ currentContext = context;
+ currentOnFilterDone = onDismiss;
+
+ viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel();
+ viewModel.init(ordersList);
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+
+ DialogVenditaFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vendita_filtro_avanzato, null, false);
+
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
+ .setView(binding.getRoot());
+
+ binding.setView(this);
+ binding.setViewmodel(viewModel);
+ initViewModelNew(viewModel);
+ initView(binding, viewModel);
+
+ currentAlert = alertDialog.create();
+ currentAlert.setCanceledOnTouchOutside(false);
+
+ currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+
+
+ binding.positiveBtn.setOnClickListener(view -> {
+ currentAlert.dismiss();
+ });
+
+ binding.neutralBtn.setOnClickListener(view -> {
+ resetAll();
+ });
+
+
+ currentAlert.setOnDismissListener(dialogInterface -> {
+ if(currentOnFilterDone != null) currentOnFilterDone.run(viewModel);
+ });
+
+ }
+
+ private void initView(DialogVenditaFiltroAvanzatoBinding bindings, DialogVenditaFiltroAvanzatoViewModel viewModel) {
+ IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
+
+// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> {
+// bindings.filledExposedDropdownDataCons.callOnClick();
+// });
+
+ bindings.filledExposedDropdownDataCons.setOnClickListener(view -> {
+ Calendar c = UtilityDate.getCalendarInstance();
+
+ if(dataConsegnaDate != null) {
+ c.setTime(dataConsegnaDate);
+ }
+
+ int mYear = c.get(Calendar.YEAR);
+ int mMonth = c.get(Calendar.MONTH);
+ int mDay = c.get(Calendar.DAY_OF_MONTH);
+
+ DatePickerDialog datePickerDialog = new DatePickerDialog(currentContext,
+ (view2, year, month, day) -> {
+
+ dataConsegnaDate = new GregorianCalendar(year, month, day).getTime();
+ dataConsegna.set(UtilityDate.formatDate(dataConsegnaDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
+
+ }, mYear, mMonth, mDay);
+ datePickerDialog.show();
+ });
+
+
+ arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false));
+ bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE);
+ bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep);
+
+ arrayAdapterIdViaggio = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(false));
+ bindings.inputIdViaggio.setVisibility(filtroOrdiniVendita.shoudShowIdViaggioFilter() ? View.VISIBLE : View.GONE);
+ bindings.filledExposedDropdownIdViaggio.setAdapter(arrayAdapterIdViaggio);
+
+ arrayAdapterAgente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterAgente.addAll(getAvailableAgente(false));
+ bindings.inputAgente.setVisibility(filtroOrdiniVendita.shoudShowAgenteFilter() ? View.VISIBLE : View.GONE);
+ bindings.filledExposedDropdownAgente.setAdapter(arrayAdapterAgente);
+
+ arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterNumOrds.addAll(getAvailableNumOrds(false));
+ bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds);
+ bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
+
+ arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterCliente.addAll(getAvailableCliente(false));
+ bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente);
+
+ arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterTermCons.addAll(getAvailableTermCons(false));
+ bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons);
+
+ arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterVettore.addAll(getAvailableVettori(false));
+ bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore);
+
+ arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false));
+ bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo);
+
+ arrayAdapterPaese = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
+ arrayAdapterPaese.addAll(getAvailablePaesi(false));
+ bindings.filledExposedDropdownPaese.setAdapter(arrayAdapterPaese);
+
+
+ refreshAll();
+ }
+
+ private void initViewModelNew(DialogVenditaFiltroAvanzatoViewModel viewModel) {
+ viewModel.applyAllTests();
+
+ BindableString.registerListener(idViaggio, value -> {
+ viewModel.setIDViaggioFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(deposito, value -> {
+ viewModel.setDepositoFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(numOrds, value -> {
+ viewModel.setNumOrdFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(cliente, value -> {
+ viewModel.setClienteFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(terminiConsegna, value -> {
+ viewModel.setTerminiConsegnaFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(vettore, value -> {
+ viewModel.setVettoreFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.registerListener(automezzo, value -> {
+ viewModel.setAutomezzoFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ });
+
+ BindableString.resetListeners(dataConsegna);
+ BindableString.registerListener(dataConsegna, value -> {
+ viewModel.setDataConsegnaFilter(dataConsegnaDate);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ });
+
+ BindableString.resetListeners(agente);
+ BindableString.registerListener(agente, value -> {
+ viewModel.setAgenteFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ });
+
+ BindableString.resetListeners(paese);
+ BindableString.registerListener(paese, value -> {
+ viewModel.setPaeseFilter(value);
+ viewModel.applyAllTests();
+
+ refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
+ refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
+ refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
+ refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
+ refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
+ refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
+ refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
+ refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
+ });
+
+ }
+
+
+ private void refreshArrayAdapter(ArrayAdapter arrayAdapter, List inputList) {
+ arrayAdapter.clear();
+ arrayAdapter.addAll(inputList);
+ arrayAdapter.notifyDataSetChanged();
+ }
+
+
+ private List getAvailableIdViaggio(boolean skipRecalc) {
+ return Stream
+ .of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .filter(x -> x.getIdViaggio() != null)
+ .sortBy(x -> -x.getIdViaggio())
+ .map(x -> x.getIdViaggio() != null ? x.getIdViaggio().toString() : null)
+ .distinct()
+ .toList();
+ }
+
+ private List getAvailableAgente(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getNomeAgente)
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableCodMdeps(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getCodMdep)
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableCliente(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getRagSocOrd)
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableNumOrds(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(x -> x.getNumOrd().toString())
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableTermCons(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getTermCons)
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableVettori(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .filter(x -> x.getCodVvet() != null)
+ .map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore())
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailableAutomezzi(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getDescrizioneAuto)
+ .distinct()
+ .withoutNulls()
+ .sorted()
+ .toList();
+ }
+
+ private List getAvailablePaesi(boolean skipRecalc) {
+ return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
+ .map(OrdiniUscitaElencoDTO::getCitta)
+ .withoutNulls()
+ .distinct()
+ .sorted()
+ .toList();
+ }
+
+
+ public void refreshAll() {
+ deposito.refresh();
+ idViaggio.refresh();
+ numOrds.refresh();
+ cliente.refresh();
+ terminiConsegna.refresh();
+ vettore.refresh();
+ automezzo.refresh();
+ dataConsegna.refresh();
+ agente.refresh();
+ paese.refresh();
+ }
+
+
+ public void resetAll() {
+ deposito.set(null);
+ idViaggio.set(null);
+ numOrds.set(null);
+ cliente.set(null);
+ dataConsegna.set(null);
+ terminiConsegna.set(null);
+ vettore.set(null);
+ automezzo.set(null);
+ agente.set(null);
+ paese.set(null);
+ }
+
+
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java
index c2a7b8fb..3efba5fb 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/dialogs/DialogVenditaFiltroAvanzatoViewModel.java
@@ -1,22 +1,167 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
-import java.util.Date;
+import androidx.lifecycle.MutableLiveData;
-import it.integry.integrywmsnative.core.di.BindableString;
+import com.annimon.stream.Stream;
+import com.annimon.stream.function.Predicate;
+
+import java.util.Date;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.utility.UtilityString;
+import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
public class DialogVenditaFiltroAvanzatoViewModel {
- public BindableString deposito = new BindableString();
- public BindableString idViaggio = new BindableString();
- public BindableString numOrds = new BindableString();
- public BindableString cliente = new BindableString();
- public BindableString dataConsegna = new BindableString();
- public BindableString terminiConsegna = new BindableString();
- public BindableString agente = new BindableString();
- public BindableString vettore = new BindableString();
- public BindableString automezzo = new BindableString();
- public BindableString paese = new BindableString();
+ private Predicate currentDepositoPredicate = null;
+ private Predicate currentIdViaggioPredicate = null;
+ private Predicate currentNumOrdsPredicate = null;
+ private Predicate currentClientePredicate = null;
+ private Predicate currentDataConsPredicate = null;
+ private Predicate currentTermConsPredicate = null;
+ private Predicate currentVettorePredicate = null;
+ private Predicate currentAgentePredicate = null;
+ private Predicate currentAutomezzoPredicate = null;
+ private Predicate currentPaesePredicate = null;
- public Date dataConsegnaDate;
+
+ private List initialOrderList;
+ private MutableLiveData> currentFilteredOrderList = new MutableLiveData<>();
+
+ public void init(List initialList) {
+ this.initialOrderList = initialList;
+ this.currentFilteredOrderList.setValue(this.initialOrderList);
+ }
+
+ public MutableLiveData> getMutableFilteredOrderList() {
+ return this.currentFilteredOrderList;
+ }
+
+ public void setIDViaggioFilter(String idViaggio) {
+ if(UtilityString.isNullOrEmpty(idViaggio)) currentIdViaggioPredicate = null;
+ else {
+ String[] idViaggiSplitted = idViaggio.split("[,\\ ]");
+
+ try{
+ List idViaggiInteger = Stream.of(idViaggiSplitted)
+ .filter(x -> !UtilityString.isNullOrEmpty(x))
+ .map(Integer::parseInt).toList();
+
+ currentIdViaggioPredicate = o -> idViaggiInteger.contains(o.getIdViaggio());
+ } catch (NumberFormatException ex) {
+ currentIdViaggioPredicate = null;
+ }
+ }
+ }
+
+ public void setDepositoFilter(String deposito) {
+ if(UtilityString.isNullOrEmpty(deposito)) currentDepositoPredicate = null;
+ else {
+ currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(deposito);
+ }
+ }
+
+ public void setNumOrdFilter(String numOrds) {
+ if(UtilityString.isNullOrEmpty(numOrds)) currentNumOrdsPredicate = null;
+ else {
+ String[] numOrdsSplitted = numOrds.split("[,\\ ]");
+
+ try{
+ List numOrdsInteger = Stream.of(numOrdsSplitted)
+ .filter(x -> !UtilityString.isNullOrEmpty(x))
+ .map(Integer::parseInt).toList();
+
+ currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
+ } catch (NumberFormatException ex) {
+ currentNumOrdsPredicate = null;
+ }
+ }
+ }
+
+ public void setClienteFilter(String cliente) {
+ if(UtilityString.isNullOrEmpty(cliente)) currentClientePredicate = null;
+ else {
+ currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(cliente.toLowerCase());
+ }
+ }
+
+ public void setTerminiConsegnaFilter(String terminiConsegna) {
+ if(UtilityString.isNullOrEmpty(terminiConsegna)) currentTermConsPredicate = null;
+ else {
+ currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(terminiConsegna);
+ }
+ }
+
+ public void setVettoreFilter(String vettore) {
+ if(UtilityString.isNullOrEmpty(vettore)) currentVettorePredicate = null;
+ else {
+ currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(vettore);
+ }
+ }
+
+ public void setAutomezzoFilter(String automezzo) {
+ if(UtilityString.isNullOrEmpty(automezzo)) currentAutomezzoPredicate = null;
+ else {
+ currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && (o.getDescrizioneAuto().toLowerCase().contains(automezzo) || o.getDescrizioneAuto().equalsIgnoreCase(automezzo));
+ }
+ }
+
+ public void setDataConsegnaFilter(Date dataConsegna) {
+ if(dataConsegna == null) currentDataConsPredicate = null;
+ else {
+ currentDataConsPredicate = o -> o.getDataConsD().equals(dataConsegna);
+ }
+ }
+
+ public void setAgenteFilter(String agente) {
+ if(UtilityString.isNullOrEmpty(agente)) currentAgentePredicate = null;
+ else {
+ currentAgentePredicate = o -> !UtilityString.isNullOrEmpty(o.getNomeAgente()) && (o.getNomeAgente().toLowerCase().contains(agente) || o.getNomeAgente().equalsIgnoreCase(agente));
+ }
+ }
+
+ public void setPaeseFilter(String paese) {
+ if(UtilityString.isNullOrEmpty(paese)) currentPaesePredicate = null;
+ else {
+ currentPaesePredicate = o -> !UtilityString.isNullOrEmpty(o.getCitta()) && (o.getCitta().toLowerCase().contains(paese) || o.getCitta().equalsIgnoreCase(paese));
+ }
+ }
+
+ public void applyAllTests() {
+
+ List returnList = null;
+
+ if (currentNumOrdsPredicate == null &&
+ currentClientePredicate == null &&
+ currentDataConsPredicate == null &&
+ currentTermConsPredicate == null &&
+ currentVettorePredicate == null &&
+ currentAutomezzoPredicate == null &&
+ currentDepositoPredicate == null &&
+ currentIdViaggioPredicate == null &&
+ currentAgentePredicate == null &&
+ currentPaesePredicate == null
+ ) {
+ returnList = this.initialOrderList;
+ } else {
+ Stream tmpStream = Stream.of(this.initialOrderList)
+ .filter(x ->
+ (currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
+ (currentClientePredicate == null || (currentClientePredicate.test(x))) &&
+ (currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
+ (currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
+ (currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
+ (currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
+ (currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
+ (currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
+ (currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
+ (currentPaesePredicate == null || (currentPaesePredicate.test(x)))
+ );
+
+ returnList = tmpStream.toList();
+ }
+
+ this.currentFilteredOrderList.setValue(returnList);
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
index ee558fd1..7e319cd8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
@@ -13,7 +13,6 @@ import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableList;
import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.tfb.fbtoast.FBToast;
@@ -52,6 +51,7 @@ import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGExcep
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@@ -168,7 +168,7 @@ public class PickingLiberoFragment extends BaseFragment implements ITitledFragme
mBindings.pickingLiberoMainList.setHasFixedSize(true);
mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBindings.pickingLiberoMainList.addItemDecoration(itemDecorator);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
index 4da7c280..a8f24976 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java
@@ -9,7 +9,6 @@ import android.widget.Toast;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
@@ -40,6 +39,7 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAc
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@@ -114,7 +114,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(this, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::selectAction);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
index 065c665c..8246e7cf 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java
@@ -15,7 +15,6 @@ import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
@@ -46,6 +45,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPv
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.ui.ElevatedToolbar;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@@ -169,7 +169,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.ordiniAApertiMainList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoPvOpenListAdapter(getActivity(), mRenderedOrderList, this::selectAction);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java
index 0d4e5772..edaaf44d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeFragment.java
@@ -17,7 +17,6 @@ import androidx.core.content.res.ResourcesCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.textfield.TextInputLayout;
@@ -57,13 +56,14 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
-import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
+import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUView;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
@@ -153,7 +153,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(getActivity(), SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
index a613a931..c5225a75 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
@@ -42,6 +42,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
+import it.integry.integrywmsnative.core.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
@@ -68,7 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPosi
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
-import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader;
+import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@@ -642,13 +643,6 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}, BarcodeManager::enable).show();
}
- public void startCameraBarcode() {
- DialogCameraBarcodeReader.newInstance(this, data -> {
- this.onScanSuccessful.run(data);
- })
- .show(getSupportFragmentManager(), "camera_barcode");
- }
-
public void removeListFilter() {
this.mViewmodel.resetMatchedRows();
}
@@ -724,7 +718,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageView
.makeSuccessDialog(res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null)
- .show(getSupportFragmentManager(), "tag");;
+ .show(getSupportFragmentManager(), "tag");
}
@Override
@@ -765,7 +759,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
() -> onComplete.run(true),
() -> onComplete.run(false)
)
- .show(getSupportFragmentManager(), "tag");
+ .show(getSupportFragmentManager(), "tag");
}
@Override
@@ -859,6 +853,12 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}).show();
}
+ @Override
+ public void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) {
+ DialogChooseBatchLotView.newInstance(availableBatchLots, onComplete)
+ .show(getSupportFragmentManager(), "tag");
+ }
+
@Override
public void onRowSaved() {
FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
index cf516e7e..ae84ba9e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
@@ -395,6 +395,11 @@ public class SpedizioneViewModel {
if (this.mListener != null) mListener.onLUPositionChangeRequest(onComplete);
}
+ private void sendBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete) {
+ if (this.mListener != null)
+ mListener.onBatchLotSelectionRequest(availableBatchLots, onComplete);
+ }
+
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
//Se non c'è una UL aperta
@@ -758,6 +763,70 @@ public class SpedizioneViewModel {
public void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, boolean canPartitaMagBeChanged) {
+ //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
+
+ if (pickingObjectDTO.getTempPickData() != null &&
+ pickingObjectDTO.getTempPickData().getSourceMtbColt() != null &&
+ pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null) {
+
+ List scannedMtbColrs = pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr();
+
+ List availableBatchLot = Stream.of(scannedMtbColrs)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) && (
+ x.getPartitaMag() == null || UtilityString.isNullOrEmpty(x.getMtbPartitaMag().getDataScadS()) || UtilityDate.getDateInstance().before(x.getMtbPartitaMag().getDataScadD())
+ ))
+ .distinctBy(MtbColr::getPartitaMag)
+ .map(x -> x.getPartitaMag() == null ? new MtbPartitaMag().setCodMart(x.getMtbAart().getCodMart()) : x.getMtbPartitaMag())
+ .toList();
+
+ if(availableBatchLot.size() > 1) {
+ this.sendOnLoadingStarted();
+
+ List tmp = new ArrayList<>();
+
+ if(Stream.of(availableBatchLot).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) {
+ tmp.addAll(
+ Stream.of(availableBatchLot)
+ .filter(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()) && UtilityDate.getDateInstance().before(x.getDataScadD()))
+ .sortBy(MtbPartitaMag::getDataScadD)
+ .toList());
+ }
+
+ if(Stream.of(availableBatchLot).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) {
+ tmp.addAll(
+ Stream.of(availableBatchLot)
+ .filter(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))
+ .sortBy(MtbPartitaMag::getPartitaMag)
+ .toList());
+ }
+
+ this.sendBatchLotSelectionRequest(tmp, selected -> {
+ this.sendOnLoadingEnded();
+
+ if(selected != null) {
+ MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr())
+ .filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
+ ((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) ||
+ (x.getPartitaMag() == null && selected.getPartitaMag() == null)))
+ .toList()
+ .get(0);
+
+ dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, scannedMtbColr, canPartitaMagBeChanged);
+ }
+ });
+
+ } else {
+ dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, scannedMtbColrs.get(0), canPartitaMagBeChanged);
+ }
+
+ } else {
+ dispatchOrdineRowOnPostBatchLotSelection(pickingObjectDTO, refMtbColt, null, canPartitaMagBeChanged);
+ }
+
+
+ }
+
+ private void dispatchOrdineRowOnPostBatchLotSelection(final PickingObjectDTO pickingObjectDTO, MtbColt refMtbColt, MtbColr scannedMtbColr, boolean canPartitaMagBeChanged) {
BigDecimal totalQtaOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaOrd();
BigDecimal totalNumCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd();
BigDecimal qtaCnfOrd = pickingObjectDTO.getSitArtOrdDTO().getQtaCnfOrd();
@@ -791,21 +860,13 @@ public class SpedizioneViewModel {
Date dataScad = null;
- //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta
- MtbColr scannedMtbColr = pickingObjectDTO.getTempPickData() != null &&
- pickingObjectDTO.getTempPickData().getSourceMtbColt() != null &&
- pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr() != null &&
- pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().size() > 0 ?
- pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr().get(0) : null;
-
-
if (refMtbColt == null && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() == 1) {
refMtbColt = pickingObjectDTO.getMtbColts().get(0);
}
MtbColr refMtbColr = null;
- if (refMtbColt != null && refMtbColt.getMtbColr().size() > 0) {
+ if (scannedMtbColr != null && refMtbColt != null && refMtbColt.getMtbColr().size() > 0) {
Optional optionalMtbColr = Stream.of(refMtbColt.getMtbColr())
.filter(y -> UtilityString.equalsIgnoreCase(y.getCodMart(), scannedMtbColr.getCodMart()) &&
UtilityString.equalsIgnoreCase(y.getCodTagl(), scannedMtbColr.getCodTagl()) &&
@@ -933,7 +994,6 @@ public class SpedizioneViewModel {
});
}
-
public void dispatchExtraItem(MtbAart mtbAart, Ean128Model ean128Model, MtbColr mtbColrToUse) {
PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
@@ -1460,7 +1520,7 @@ public class SpedizioneViewModel {
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
- if(mCurrentMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
+ if (mCurrentMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) {
mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
} else {
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT);
@@ -1540,7 +1600,7 @@ public class SpedizioneViewModel {
} else {
distribuisciLU(mtbColts -> {
- if(this.mIsNewLU) {
+ if (this.mIsNewLU) {
this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> {
if (shouldChangePosition) {
@@ -1702,7 +1762,7 @@ public class SpedizioneViewModel {
this.mCurrentMtbColt = null;
- if(mEnableQuantityReset) {
+ if (mEnableQuantityReset) {
for (PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) {
List withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColrs();
@@ -1864,6 +1924,8 @@ public class SpedizioneViewModel {
void onLUPositionChangeRequest(RunnableArgss onComplete);
+
+ void onBatchLotSelectionRequest(List availableBatchLots, RunnableArgs onComplete);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java b/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java
new file mode 100644
index 00000000..40d664b5
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/SimpleDividerItemDecoration.java
@@ -0,0 +1,165 @@
+package it.integry.integrywmsnative.ui;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.util.Log;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration {
+ public static final int HORIZONTAL = LinearLayout.HORIZONTAL;
+ public static final int VERTICAL = LinearLayout.VERTICAL;
+
+ private static final String TAG = "DividerItem";
+ private static final int[] ATTRS = new int[]{ android.R.attr.listDivider };
+
+ private Drawable mDivider;
+
+ /**
+ * Current orientation. Either {@link #HORIZONTAL} or {@link #VERTICAL}.
+ */
+ private int mOrientation;
+
+ private final Rect mBounds = new Rect();
+
+ /**
+ * Creates a divider {@link RecyclerView.ItemDecoration} that can be used with a
+ * {@link LinearLayoutManager}.
+ *
+ * @param context Current context, it will be used to access resources.
+ * @param orientation Divider orientation. Should be {@link #HORIZONTAL} or {@link #VERTICAL}.
+ */
+ public SimpleDividerItemDecoration(Context context, int orientation) {
+ final TypedArray a = context.obtainStyledAttributes(ATTRS);
+ mDivider = a.getDrawable(0);
+ if (mDivider == null) {
+ Log.w(TAG, "@android:attr/listDivider was not set in the theme used for this "
+ + "DividerItemDecoration. Please set that attribute all call setDrawable()");
+ }
+ a.recycle();
+ setOrientation(orientation);
+ }
+
+ /**
+ * Sets the orientation for this divider. This should be called if
+ * {@link RecyclerView.LayoutManager} changes orientation.
+ *
+ * @param orientation {@link #HORIZONTAL} or {@link #VERTICAL}
+ */
+ public void setOrientation(int orientation) {
+ if (orientation != HORIZONTAL && orientation != VERTICAL) {
+ throw new IllegalArgumentException(
+ "Invalid orientation. It should be either HORIZONTAL or VERTICAL");
+ }
+ mOrientation = orientation;
+ }
+
+ /**
+ * Sets the {@link Drawable} for this divider.
+ *
+ * @param drawable Drawable that should be used as a divider.
+ */
+ public void setDrawable(@NonNull Drawable drawable) {
+ if (drawable == null) {
+ throw new IllegalArgumentException("Drawable cannot be null.");
+ }
+ mDivider = drawable;
+ }
+
+ /**
+ * @return the {@link Drawable} for this divider.
+ */
+ @Nullable
+ public Drawable getDrawable() {
+ return mDivider;
+ }
+
+ @Override
+ public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+ if (parent.getLayoutManager() == null || mDivider == null) {
+ return;
+ }
+ if (mOrientation == VERTICAL) {
+ drawVertical(c, parent);
+ } else {
+ drawHorizontal(c, parent);
+ }
+ }
+
+ private void drawVertical(Canvas canvas, RecyclerView parent) {
+ canvas.save();
+ final int left;
+ final int right;
+ //noinspection AndroidLintNewApi - NewApi lint fails to handle overrides.
+ if (parent.getClipToPadding()) {
+ left = parent.getPaddingLeft();
+ right = parent.getWidth() - parent.getPaddingRight();
+ canvas.clipRect(left, parent.getPaddingTop(), right,
+ parent.getHeight() - parent.getPaddingBottom());
+ } else {
+ left = 0;
+ right = parent.getWidth();
+ }
+
+ final int childCount = parent.getChildCount();
+ for (int i = 0; i < childCount - 1; i++) {
+ final View child = parent.getChildAt(i);
+ parent.getDecoratedBoundsWithMargins(child, mBounds);
+ final int bottom = mBounds.bottom + Math.round(child.getTranslationY());
+ final int top = bottom - mDivider.getIntrinsicHeight();
+ mDivider.setBounds(left, top, right, bottom);
+ mDivider.draw(canvas);
+ }
+ canvas.restore();
+ }
+
+ private void drawHorizontal(Canvas canvas, RecyclerView parent) {
+ canvas.save();
+ final int top;
+ final int bottom;
+ //noinspection AndroidLintNewApi - NewApi lint fails to handle overrides.
+ if (parent.getClipToPadding()) {
+ top = parent.getPaddingTop();
+ bottom = parent.getHeight() - parent.getPaddingBottom();
+ canvas.clipRect(parent.getPaddingLeft(), top,
+ parent.getWidth() - parent.getPaddingRight(), bottom);
+ } else {
+ top = 0;
+ bottom = parent.getHeight();
+ }
+
+ final int childCount = parent.getChildCount();
+ for (int i = 0; i < childCount - 1; i++) {
+ final View child = parent.getChildAt(i);
+ parent.getLayoutManager().getDecoratedBoundsWithMargins(child, mBounds);
+ final int right = mBounds.right + Math.round(child.getTranslationX());
+ final int left = right - mDivider.getIntrinsicWidth();
+ mDivider.setBounds(left, top, right, bottom);
+ mDivider.draw(canvas);
+ }
+ canvas.restore();
+ }
+
+ @Override
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
+ RecyclerView.State state) {
+ if (mDivider == null) {
+ outRect.set(0, 0, 0, 0);
+ return;
+ }
+ if (mOrientation == VERTICAL) {
+ outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
+ } else {
+ outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
+ }
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java
index e110c041..78d73165 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java
@@ -5,7 +5,6 @@ import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.databinding.ViewDataBinding;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
@@ -14,9 +13,8 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
-import it.integry.integrywmsnative.core.utility.UtilityDialog;
-import it.integry.integrywmsnative.databinding.DialogBasketLuBinding;
import it.integry.integrywmsnative.databinding.DialogBasketLuPage1Binding;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel;
import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel;
@@ -82,7 +80,7 @@ public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel
mBinding.dialogBasketLuMainList.setHasFixedSize(true);
mBinding.dialogBasketLuMainList.setLayoutManager(new LinearLayoutManager(mContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mBinding.dialogBasketLuMainList.addItemDecoration(itemDecorator);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java
index ccc4653e..1094644f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java
@@ -5,7 +5,6 @@ import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.databinding.ViewDataBinding;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
@@ -15,6 +14,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.DialogBasketLuPage2Binding;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel;
import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel;
@@ -79,7 +79,7 @@ public class DialogBasketLU_Page2_ViewModel extends DialogBasketLU_BaseViewModel
mBinding.dialogBasketLuMtbColrList.setHasFixedSize(true);
mBinding.dialogBasketLuMtbColrList.setLayoutManager(new LinearLayoutManager(mContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mBinding.dialogBasketLuMtbColrList.addItemDecoration(itemDecorator);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java
deleted file mode 100644
index 785fe3e2..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/camera_barcode_reader/DialogCameraBarcodeReader.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package it.integry.integrywmsnative.view.dialogs.camera_barcode_reader;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.databinding.DataBindingUtil;
-import androidx.fragment.app.DialogFragment;
-
-import com.google.zxing.BarcodeFormat;
-import com.google.zxing.Result;
-import com.kroegerama.kaiteki.bcode.BarcodeResultListener;
-import com.orhanobut.logger.Logger;
-
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-import it.integry.barcode_base_android_library.model.BarcodeType;
-import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.expansion.RunnableArgs;
-import it.integry.integrywmsnative.core.utility.UtilityDialog;
-import it.integry.integrywmsnative.databinding.DialogCameraBarcodeReaderBinding;
-
-public class DialogCameraBarcodeReader extends DialogFragment implements BarcodeResultListener {
-
- private Context mContext;
-
- private DialogCameraBarcodeReaderBinding mBindings;
- private final RunnableArgs onComplete;
-
- public static DialogCameraBarcodeReader newInstance(@NonNull Context context, @NonNull final RunnableArgs onComplete) {
- return new DialogCameraBarcodeReader(context, onComplete);
- }
-
- private DialogCameraBarcodeReader(@NonNull Context context, @NonNull final RunnableArgs onComplete){
- this.mContext = context;
- this.onComplete = onComplete;
- }
-
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_camera_barcode_reader, container, false);
-
-
- getDialog().setCanceledOnTouchOutside(false);
- getDialog().setCancelable(false);
- getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-
- this.initBarcodeView();
-
- mBindings.buttonConfirm.setOnClickListener(v -> {
- dismiss();
- });
-
- return mBindings.getRoot();
- }
-
- @Override
- public void onStart() {
- super.onStart();
-
- UtilityDialog.setTo95PercentWidth(mContext, this);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- this.mBindings.bcode.unbind();
- }
-
- private void initBarcodeView() {
- List availableBarcodeFormats = new ArrayList<>();
- availableBarcodeFormats.add(BarcodeFormat.QR_CODE);
- availableBarcodeFormats.add(BarcodeFormat.CODE_128);
- availableBarcodeFormats.add(BarcodeFormat.UPC_E);
- availableBarcodeFormats.add(BarcodeFormat.CODABAR);
- availableBarcodeFormats.add(BarcodeFormat.EAN_8);
- availableBarcodeFormats.add(BarcodeFormat.EAN_13);
- availableBarcodeFormats.add(BarcodeFormat.ITF);
- availableBarcodeFormats.add(BarcodeFormat.UPC_A);
-
- mBindings.bcode.setFormats(availableBarcodeFormats);
- mBindings.bcode.setBarcodeInverted(false);
- mBindings.bcode.setBarcodeResultListener(this);
- mBindings.bcode.bindToLifecycle(this);
- }
-
- @Override
- public boolean onBarcodeResult(@NotNull Result result) {
-
- BarcodeScanDTO barcodeScanDTO = new BarcodeScanDTO()
- .setByteValue(result.getRawBytes())
- .setStringValue(result.getText());
-
- BarcodeType type = null;
-
- switch (result.getBarcodeFormat()) {
- case CODE_128:
- type = BarcodeType.CODE128;
- break;
- case CODE_39:
- type = BarcodeType.CODE39;
- break;
-
- case EAN_13:
- type = BarcodeType.EAN13;
- break;
- case EAN_8:
- type = BarcodeType.EAN8;
- break;
-
- case UPC_A:
- type = BarcodeType.UPCA;
- break;
- case UPC_E:
- type = BarcodeType.UPCE;
- break;
- default:
- Logger.e("Barcode type " + result.getBarcodeFormat().toString() + " was not mapped in DialogCameraBarcodeReader.java");
- type = null;
- break;
- }
-
- barcodeScanDTO.setType(type);
-
- this.dismiss();
- this.onComplete.run(barcodeScanDTO);
- return true;
- }
-
- @Override
- public void onBarcodeScanCancelled() {
-
- }
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java
index b1d82cea..493b36a3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_arts/DialogChooseArtFromListaArts.java
@@ -2,15 +2,14 @@ package it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts;
import android.app.Dialog;
import android.content.Context;
-import androidx.databinding.DataBindingUtil;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
import java.util.List;
import it.integry.integrywmsnative.R;
@@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaArts {
@@ -61,7 +61,7 @@ public class DialogChooseArtFromListaArts {
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java
index b9872432..22480a72 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_art_from_lista_mtb_colr/DialogChooseArtFromListaMtbColrView.java
@@ -8,7 +8,6 @@ import android.view.LayoutInflater;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
-import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.List;
@@ -19,6 +18,7 @@ import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class DialogChooseArtFromListaMtbColrView {
@@ -61,7 +61,7 @@ public class DialogChooseArtFromListaMtbColrView {
binding.dialogChooseArtFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
- DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL);
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(currentContext, SimpleDividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java
new file mode 100644
index 00000000..70f90566
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotAdapter.java
@@ -0,0 +1,74 @@
+package it.integry.integrywmsnative.view.dialogs.choose_batch_lot;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.ViewGroup;
+
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
+import it.integry.integrywmsnative.core.model.MtbPartitaMag;
+import it.integry.integrywmsnative.databinding.DialogChooseBatchLotItemModelBinding;
+
+public class DialogChooseBatchLotAdapter extends RecyclerView.Adapter {
+
+ protected Context mContext;
+
+ private final List mDataset;
+ private final IRecyclerItemClicked mOnItemClickListener;
+
+
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+ protected DialogChooseBatchLotItemModelBinding mViewDataBinding;
+
+
+ public ViewHolder(DialogChooseBatchLotItemModelBinding v) {
+ super(v.getRoot());
+ mViewDataBinding = v;
+ }
+
+ public void bind(MtbPartitaMag mtbPartitaMag) {
+ mViewDataBinding.setMtbPartitaMag(mtbPartitaMag);
+ mViewDataBinding.executePendingBindings();
+ }
+ }
+
+ public DialogChooseBatchLotAdapter(List myDataset, IRecyclerItemClicked onItemClickListener) {
+ mDataset = myDataset;
+ mOnItemClickListener = onItemClickListener;
+ }
+
+ @Override
+ public DialogChooseBatchLotAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ // create a new view
+ DialogChooseBatchLotItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_batch_lot_item_model, parent, false);
+ return new DialogChooseBatchLotAdapter.ViewHolder(viewDataBinding);
+ }
+
+ @Override
+ public void onBindViewHolder(DialogChooseBatchLotAdapter.ViewHolder holder, int position) {
+ MtbPartitaMag item = mDataset.get(position);
+ holder.bind(item);
+
+ holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
+ if(mOnItemClickListener != null) {
+ mOnItemClickListener.onItemClick(item, position);
+ }
+ });
+ }
+
+ @Override
+ public void onViewRecycled(DialogChooseBatchLotAdapter.ViewHolder holder) {
+ super.onViewRecycled(holder);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mDataset.size();
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java
new file mode 100644
index 00000000..8a055734
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotComponent.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.view.dialogs.choose_batch_lot;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface DialogChooseBatchLotComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ DialogChooseBatchLotComponent create();
+ }
+
+ void inject(DialogChooseBatchLotView dialogChooseBatchLotView);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java
new file mode 100644
index 00000000..3e118b75
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotModule.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.choose_batch_lot;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+public class DialogChooseBatchLotModule {
+
+ @Provides
+ DialogChooseBatchLotViewModel providesDialogChooseBatchLotViewModel() {
+ return new DialogChooseBatchLotViewModel();
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java
new file mode 100644
index 00000000..2a7d8fb1
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotView.java
@@ -0,0 +1,111 @@
+package it.integry.integrywmsnative.view.dialogs.choose_batch_lot;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
+import it.integry.integrywmsnative.core.model.MtbPartitaMag;
+import it.integry.integrywmsnative.databinding.DialogChooseBatchLotBinding;
+import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
+
+public class DialogChooseBatchLotView extends BaseDialogFragment {
+
+ @Inject
+ DialogChooseBatchLotViewModel mViewModel;
+
+ private List mAvailableBatchLot;
+ private RunnableArgs mOnItemSelected;
+
+ private Context mContext;
+ private DialogChooseBatchLotBinding mBindings;
+
+ private DialogChooseBatchLotAdapter mAdapter;
+
+ private MtbPartitaMag mSelectedItem;
+
+ public static DialogChooseBatchLotView newInstance(List availableBatchLot, RunnableArgs onItemSelected) {
+ return new DialogChooseBatchLotView(availableBatchLot, onItemSelected);
+ }
+
+ private DialogChooseBatchLotView(List availableBatchLot, RunnableArgs onItemSelected) {
+ super();
+
+ this.mAvailableBatchLot = availableBatchLot;
+ this.mOnItemSelected = onItemSelected;
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ this.mContext = getActivity();
+
+ mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_batch_lot, container, false);
+
+ MainApplication.appComponent
+ .dialogChooseBatchLotComponent()
+ .create()
+ .inject(this);
+
+ mBindings.setView(this);
+ mBindings.setViewmodel(this.mViewModel);
+
+ getDialog().setCanceledOnTouchOutside(false);
+ getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ return mBindings.getRoot();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ this.initRecyclerView();
+ }
+
+ @Override
+ public void dismiss() {
+ super.dismiss();
+
+ if(mOnItemSelected != null) {
+ this.mOnItemSelected.run(mSelectedItem);
+ }
+ }
+
+ private void initRecyclerView() {
+ mBindings.mainList.setNestedScrollingEnabled(false);
+ mBindings.mainList.setHasFixedSize(true);
+ mBindings.mainList.setLayoutManager(new LinearLayoutManager(mContext));
+
+ SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(mContext, SimpleDividerItemDecoration.VERTICAL);
+ itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
+ mBindings.mainList.addItemDecoration(itemDecorator);
+
+ mAdapter = new DialogChooseBatchLotAdapter(mAvailableBatchLot, onItemClicked);
+ mBindings.mainList.setAdapter(mAdapter);
+ }
+
+ private final IRecyclerItemClicked onItemClicked = (item, position) -> {
+ mSelectedItem = item;
+ dismiss();
+ };
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java
new file mode 100644
index 00000000..9889a0c3
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_batch_lot/DialogChooseBatchLotViewModel.java
@@ -0,0 +1,4 @@
+package it.integry.integrywmsnative.view.dialogs.choose_batch_lot;
+
+public class DialogChooseBatchLotViewModel {
+}
diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml
index 3eefc481..ada4900c 100644
--- a/app/src/main/res/layout/activity_spedizione.xml
+++ b/app/src/main/res/layout/activity_spedizione.xml
@@ -79,23 +79,11 @@
android:tint="@color/colorPrimaryGray"
android:visibility="@{BuildConfig.DEBUG ? View.VISIBLE : View.GONE}" />
-
-
-
-
-
+
-
-
+
diff --git a/app/src/main/res/layout/dialog_camera_barcode_reader.xml b/app/src/main/res/layout/dialog_camera_barcode_reader.xml
deleted file mode 100644
index 19c3372f..00000000
--- a/app/src/main/res/layout/dialog_camera_barcode_reader.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml b/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml
index 7f739823..811e9ff8 100644
--- a/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml
+++ b/app/src/main/res/layout/dialog_choose_art_from_lista_art__item_model.xml
@@ -12,7 +12,7 @@
type="it.integry.integrywmsnative.core.model.MtbAart"/>
-
-
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_choose_batch_lot.xml b/app/src/main/res/layout/dialog_choose_batch_lot.xml
new file mode 100644
index 00000000..0936ccfa
--- /dev/null
+++ b/app/src/main/res/layout/dialog_choose_batch_lot.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml b/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml
new file mode 100644
index 00000000..361ceb0c
--- /dev/null
+++ b/app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
index 933e19ee..ee289fa4 100644
--- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
+++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml
@@ -9,6 +9,10 @@
name="viewmodel"
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
+
+
+ app:binding="@{view.deposito}" />
@@ -79,7 +83,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_num_ords"
- app:binding="@{viewmodel.idViaggio}" />
+ app:binding="@{view.idViaggio}" />
@@ -101,7 +105,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_cliente"
- app:binding="@{viewmodel.numOrds}"/>
+ app:binding="@{view.numOrds}"/>
@@ -122,7 +126,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
- app:binding="@{viewmodel.cliente}"/>
+ app:binding="@{view.cliente}"/>
@@ -143,7 +147,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_automezzo"
- app:binding="@{viewmodel.vettore}"/>
+ app:binding="@{view.vettore}"/>
@@ -164,7 +168,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_paese"
- app:binding="@{viewmodel.automezzo}"/>
+ app:binding="@{view.automezzo}"/>
@@ -174,8 +178,7 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/city"
- android:visibility="gone">
+ android:hint="@string/city">
+ app:binding="@{view.paese}"/>
@@ -207,7 +210,7 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_term_cons"
- app:binding="@{viewmodel.agente}"/>
+ app:binding="@{view.agente}"/>
@@ -226,7 +229,7 @@
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
- app:binding="@{viewmodel.dataConsegna}"/>
+ app:binding="@{view.dataConsegna}"/>
@@ -246,7 +249,7 @@
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionDone"
- app:binding="@{viewmodel.terminiConsegna}"/>
+ app:binding="@{view.terminiConsegna}"/>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 36aed500..c3f6e08f 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -275,6 +275,7 @@
Lav. terzi / Trasf. interni
Produzione
Linea di produzione
+ Seleziona un lotto
Movimentazione interna
Accettazione da ordine
Picking da ordine
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 781a9637..fe0256d6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -280,6 +280,7 @@
Manufacture / Internal movement
Production
Production line
+ Select a batch lot
Internal handling
Production picking
Manufacture picking
diff --git a/barcode_base_android_library/build.gradle b/barcode_base_android_library/build.gradle
index 36e6a5ac..6de1224c 100644
--- a/barcode_base_android_library/build.gradle
+++ b/barcode_base_android_library/build.gradle
@@ -31,7 +31,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
diff --git a/barcode_kaiteki/build.gradle b/barcode_kaiteki/build.gradle
index 36fe6c65..ebc5e92b 100644
--- a/barcode_kaiteki/build.gradle
+++ b/barcode_kaiteki/build.gradle
@@ -1,13 +1,12 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
-apply plugin: 'kotlin-android-extensions'
android {
- compileSdkVersion 29
+ compileSdkVersion 30
defaultConfig {
minSdkVersion 21
- targetSdkVersion 29
+ targetSdkVersion 30
versionCode 1
versionName "1.1.1"
}
diff --git a/build.gradle b/build.gradle
index 2d07a2ab..0a12c5ee 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,12 +2,12 @@
buildscript {
ext {
- kotlin_version = '1.4.31'
+ kotlin_version = '1.5.0'
}
repositories {
- jcenter()
google()
+ mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
@@ -16,7 +16,7 @@ buildscript {
classpath 'com.google.firebase:perf-plugin:1.3.5'
// Add the Firebase Crashlytics Gradle plugin.
- classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1'
+ classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -25,9 +25,9 @@ buildscript {
allprojects {
repositories {
- jcenter()
google()
maven { url 'https://jitpack.io' }
+ mavenCentral()
}
}
diff --git a/dynamic_gramm/build.gradle b/dynamic_gramm/build.gradle
index 88d9fdcc..c0e13cb7 100644
--- a/dynamic_gramm/build.gradle
+++ b/dynamic_gramm/build.gradle
@@ -21,8 +21,8 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation project(":app")
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
- androidTestImplementation 'androidx.annotation:annotation:1.1.0'
+ androidTestImplementation 'androidx.annotation:annotation:1.2.0'
}
\ No newline at end of file
diff --git a/honeywellscannerlibrary/build.gradle b/honeywellscannerlibrary/build.gradle
index 4df057fa..2ed73626 100644
--- a/honeywellscannerlibrary/build.gradle
+++ b/honeywellscannerlibrary/build.gradle
@@ -31,7 +31,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
diff --git a/keyobardemulatorscannerlibrary/build.gradle b/keyobardemulatorscannerlibrary/build.gradle
index 0462a7f5..7eee9b11 100644
--- a/keyobardemulatorscannerlibrary/build.gradle
+++ b/keyobardemulatorscannerlibrary/build.gradle
@@ -32,7 +32,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
diff --git a/pointmobilescannerlibrary/build.gradle b/pointmobilescannerlibrary/build.gradle
index 629e95ea..df257659 100644
--- a/pointmobilescannerlibrary/build.gradle
+++ b/pointmobilescannerlibrary/build.gradle
@@ -31,7 +31,7 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.2.0'
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
diff --git a/zebrascannerlibrary/build.gradle b/zebrascannerlibrary/build.gradle
index 886038c7..5095fdf2 100644
--- a/zebrascannerlibrary/build.gradle
+++ b/zebrascannerlibrary/build.gradle
@@ -32,7 +32,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
- testImplementation 'junit:junit:4.13.1'
+ testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'