From 42ea19a7b0d3dbd57eb4bbdc0c5e50debf345811 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 20 Feb 2020 12:37:53 +0100 Subject: [PATCH 01/60] Creata nuova Activity e nuovo adapter --- app/src/main/AndroidManifest.xml | 3 +- .../integrywmsnative/core/di/Converters.java | 21 +- .../OnListGeneralChangedCallback.java | 35 +++ .../ProdOrdineLavorazioneElencoFragment.java | 2 +- .../VenditaOrdineInevasoActivity.java | 10 +- .../MainListOrdineVenditaInevasoAdapter.java | 7 +- .../spedizione/core/SpedizioneHelper.java | 18 ++ .../core/VenditaOrdineInevasoHelper.java | 6 +- .../IOnOrdineVenditaRowDispatched.java | 2 +- .../VenditaOrdineInevasoListViewModel.java | 2 +- ...dineVenditaInevasoRESTConsumerService.java | 4 + .../VenditaOrdineInevasoViewModel.java | 10 +- .../spedizione_new/SpedizioneActivity.java | 80 +++++ .../spedizione_new/SpedizioneViewModel.java | 48 +++ .../core/SpedizioneListAdapter.java | 258 ++++++++++++++++ .../core/SpedizioneListModel.java | 120 ++++++++ .../gest/vendita/MainVenditaFragment.java | 7 +- .../gest/vendita/dto/PickingObjectDTO.java | 2 +- ...dineVenditaInevasoRESTConsumerService.java | 4 - .../main/res/layout/activity_spedizione.xml | 281 ++++++++++++++++++ .../activity_vendita_ordine_inevaso.xml | 2 +- .../spedizione_main_list__group_header.xml | 27 ++ .../spedizione_main_list__group_item.xml | 168 +++++++++++ 23 files changed, 1065 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/VenditaOrdineInevasoActivity.java (92%) rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/core/MainListOrdineVenditaInevasoAdapter.java (96%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneHelper.java rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/core/VenditaOrdineInevasoHelper.java (96%) rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/core/interfaces/IOnOrdineVenditaRowDispatched.java (68%) rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/dto/VenditaOrdineInevasoListViewModel.java (97%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione/rest/OrdineVenditaInevasoRESTConsumerService.java rename app/src/main/java/it/integry/integrywmsnative/gest/{vendita_ordine_inevaso => spedizione}/viewmodel/VenditaOrdineInevasoViewModel.java (99%) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java create mode 100644 app/src/main/res/layout/activity_spedizione.xml create mode 100644 app/src/main/res/layout/spedizione_main_list__group_header.xml create mode 100644 app/src/main/res/layout/spedizione_main_list__group_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 73effea7..9d4a8adb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,6 +18,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> + diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java index 2bbd3e2c..560795c3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java @@ -27,6 +27,8 @@ import java.text.DecimalFormatSymbols; import java.util.Locale; import androidx.databinding.Observable; +import androidx.lifecycle.MutableLiveData; + import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; @@ -234,25 +236,6 @@ public class Converters { } - - - @BindingAdapter("visibility") - public static void bindCheckbox(LinearLayout view, final BindableBoolean bindableBoolean) { - if (view.getTag(R.id.bound_observable) != bindableBoolean) { - view.setTag(R.id.bound_observable, bindableBoolean); - //view.setOnCheckedChangeListener((compoundButton, b) -> bindableBoolean.set(b)); - } - bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); - } - }); - - view.setVisibility(bindableBoolean.get() ? View.VISIBLE : View.GONE); - } - - @BindingAdapter("visibility") public static void bindView(View view, final BindableBoolean bindableBoolean) { if (view.getTag(R.id.bound_observable) != bindableBoolean) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java new file mode 100644 index 00000000..f48257af --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java @@ -0,0 +1,35 @@ +package it.integry.integrywmsnative.core.expansion; + +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; + +public interface OnListGeneralChangedCallback extends ObservableList.OnListChangedCallback { + + + @Override + public void onChanged(ObservableList sender) { + + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java index 120d1d0a..6547252c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_pick_ord_lavorazione/ProdOrdineLavorazioneElencoFragment.java @@ -39,7 +39,7 @@ import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdin import it.integry.integrywmsnative.gest.prod_pick_ord_lavorazione.core.ProdOrdineLavorazioneListAdapter; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; +import it.integry.integrywmsnative.gest.spedizione.VenditaOrdineInevasoActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/VenditaOrdineInevasoActivity.java similarity index 92% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/VenditaOrdineInevasoActivity.java index c16939a5..f67af501 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/VenditaOrdineInevasoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/VenditaOrdineInevasoActivity.java @@ -1,16 +1,14 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso; +package it.integry.integrywmsnative.gest.spedizione; -import android.app.Dialog; import android.content.Intent; import androidx.databinding.DataBindingUtil; -import androidx.appcompat.app.AppCompatActivity; + import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; -import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @@ -19,15 +17,13 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding; import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel.VenditaOrdineInevasoViewModel; +import it.integry.integrywmsnative.gest.spedizione.viewmodel.VenditaOrdineInevasoViewModel; import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; -import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; public class VenditaOrdineInevasoActivity extends BaseActivity { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/MainListOrdineVenditaInevasoAdapter.java similarity index 96% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/MainListOrdineVenditaInevasoAdapter.java index 17106f62..433a4bc9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/MainListOrdineVenditaInevasoAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/MainListOrdineVenditaInevasoAdapter.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core; +package it.integry.integrywmsnative.gest.spedizione.core; import android.content.Context; import androidx.databinding.ObservableArrayList; @@ -23,9 +23,8 @@ import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.interfaces.IOnOrdineVenditaRowDispatched; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto.VenditaOrdineInevasoListViewModel; +import it.integry.integrywmsnative.gest.spedizione.core.interfaces.IOnOrdineVenditaRowDispatched; +import it.integry.integrywmsnative.gest.spedizione.dto.VenditaOrdineInevasoListViewModel; public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneHelper.java new file mode 100644 index 00000000..eef2bd43 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/SpedizioneHelper.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.gest.spedizione.core; + +import androidx.databinding.ObservableArrayList; + +import java.util.List; + +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + +public class SpedizioneHelper { + + private ObservableArrayList mPickingObjectDtoList; + + public SpedizioneHelper(List pickingObjectDTOList) { + this.mPickingObjectDtoList = new ObservableArrayList<>(); + this.mPickingObjectDtoList.addAll(pickingObjectDTOList); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/VenditaOrdineInevasoHelper.java similarity index 96% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/VenditaOrdineInevasoHelper.java index e201fc7f..abc3e264 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/VenditaOrdineInevasoHelper.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core; +package it.integry.integrywmsnative.gest.spedizione.core; import android.content.Context; import androidx.databinding.ObservableArrayList; @@ -16,11 +16,9 @@ import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.settings.SettingsManager; -import it.integry.integrywmsnative.core.utility.UtilityNumber; -import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto.VenditaOrdineInevasoListViewModel; +import it.integry.integrywmsnative.gest.spedizione.dto.VenditaOrdineInevasoListViewModel; public class VenditaOrdineInevasoHelper { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/interfaces/IOnOrdineVenditaRowDispatched.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/interfaces/IOnOrdineVenditaRowDispatched.java similarity index 68% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/interfaces/IOnOrdineVenditaRowDispatched.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/interfaces/IOnOrdineVenditaRowDispatched.java index d9e77f13..4f253e87 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/interfaces/IOnOrdineVenditaRowDispatched.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/core/interfaces/IOnOrdineVenditaRowDispatched.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.interfaces; +package it.integry.integrywmsnative.gest.spedizione.core.interfaces; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dto/VenditaOrdineInevasoListViewModel.java similarity index 97% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dto/VenditaOrdineInevasoListViewModel.java index 1099956a..f6636a19 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/dto/VenditaOrdineInevasoListViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dto/VenditaOrdineInevasoListViewModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto; +package it.integry.integrywmsnative.gest.spedizione.dto; import com.annimon.stream.Stream; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/rest/OrdineVenditaInevasoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/rest/OrdineVenditaInevasoRESTConsumerService.java new file mode 100644 index 00000000..c87b126c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/rest/OrdineVenditaInevasoRESTConsumerService.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.spedizione.rest; + +public interface OrdineVenditaInevasoRESTConsumerService { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java similarity index 99% rename from app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java rename to app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java index c50d4c26..a8421b99 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java @@ -1,4 +1,4 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.viewmodel; +package it.integry.integrywmsnative.gest.spedizione.viewmodel; import android.app.Dialog; @@ -57,10 +57,10 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.VenditaOrdineInevasoHelper; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.MainListOrdineVenditaInevasoAdapter; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.core.interfaces.IOnOrdineVenditaRowDispatched; +import it.integry.integrywmsnative.gest.spedizione.VenditaOrdineInevasoActivity; +import it.integry.integrywmsnative.gest.spedizione.core.VenditaOrdineInevasoHelper; +import it.integry.integrywmsnative.gest.spedizione.core.MainListOrdineVenditaInevasoAdapter; +import it.integry.integrywmsnative.gest.spedizione.core.interfaces.IOnOrdineVenditaRowDispatched; import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback; import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java new file mode 100644 index 00000000..5a779457 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -0,0 +1,80 @@ +package it.integry.integrywmsnative.gest.spedizione_new; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; + +import android.os.Bundle; + +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; +import it.integry.integrywmsnative.core.class_router.ClassRouter; +import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; +import it.integry.integrywmsnative.core.data_cache.DataCache; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; +import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListAdapter; +import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + +public class SpedizioneActivity extends AppCompatActivity { + + private ActivitySpedizioneBinding mBindings; + + private SpedizioneViewModel mViewmodel; + + private ObservableArrayList> mSpedizioneMutableData = new ObservableArrayList(); + + + private boolean mFlashShowCodForn; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + ArrayList pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); + ArrayList testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); + ArrayList colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); + + ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); + mFlashShowCodForn = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE); + + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione); + mViewmodel = new ViewModelProvider(this).get(SpedizioneViewModel.class); + + mBindings.setLifecycleOwner(this); + mBindings.setSpedizioneViewModel(mViewmodel); + + this.initRecyclerView(); + + mViewmodel.setDataset(pickingList); + } + + private void initRecyclerView() { + this.mViewmodel.uiModel.observe(this, updatedData -> { + this.mSpedizioneMutableData.postValue(convertDataModelToListModel(updatedData)); + }); + + SpedizioneListAdapter spedizioneListAdapter = new SpedizioneListAdapter(this, mSpedizioneMutableData); + this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); + + this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); + } + + + private List convertDataModelToListModel(List dataList) { + List listToReturn = new ArrayList<>(); + + + + return listToReturn; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java new file mode 100644 index 00000000..e435e12a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -0,0 +1,48 @@ +package it.integry.integrywmsnative.gest.spedizione_new; + +import android.util.Log; + +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + + +import java.util.List; + +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + +public class SpedizioneViewModel extends ViewModel { + + public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); + public BindableBoolean anyItemToPick = new BindableBoolean(false); + public BindableBoolean anyLUOpened = new BindableBoolean(false); + + public MutableLiveData> uiModel = new MutableLiveData<>(); + + + public SpedizioneViewModel() { + Log.d("Test", "Test"); + } + + public void setDataset(List dataset) { + this.uiModel.postValue(dataset); + } + + + + public void startManualSearch() { + } + + public void removeListFilter() { + + } + + + public void createNewUL() { + + } + + public void showCreatedUL() { + + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java new file mode 100644 index 00000000..39b32879 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java @@ -0,0 +1,258 @@ +package it.integry.integrywmsnative.gest.spedizione_new.core; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Color; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.lifecycle.MutableLiveData; +import androidx.recyclerview.widget.RecyclerView; + +import com.annimon.stream.Stream; +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; +import it.integry.integrywmsnative.core.class_router.ClassRouter; +import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupHeaderBinding; +import it.integry.integrywmsnative.databinding.SpedizioneMainListGroupItemBinding; +import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; + +public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { + + + private Context mContext; + private List mDataset = new ArrayList<>(); + + static class SubheaderHolder extends RecyclerView.ViewHolder { + + SpedizioneMainListGroupHeaderBinding mBinding; + + SubheaderHolder(SpedizioneMainListGroupHeaderBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + SpedizioneMainListGroupItemBinding mBinding; + + SingleItemViewHolder(SpedizioneMainListGroupItemBinding binding) { + super(binding.getRoot()); + this.mBinding = binding; + } + } + + + public SpedizioneListAdapter(AppCompatActivity context, ObservableArrayList> mutableDataSet) { + this.mContext = context; + + mutableDataSet.addOnListChangedCallback(new ObservableList.OnListChangedCallback>>() { + @Override + public void onChanged(ObservableList> sender) { + + } + + @Override + public void onItemRangeChanged(ObservableList> sender, int positionStart, int itemCount) { + + } + + @Override + public void onItemRangeInserted(ObservableList> sender, int positionStart, int itemCount) { + + } + + @Override + public void onItemRangeMoved(ObservableList> sender, int fromPosition, int toPosition, int itemCount) { + + } + + @Override + public void onItemRangeRemoved(ObservableList> sender, int positionStart, int itemCount) { + + } + }); + + mutableDataSet.observe(context, updatedDataSet -> { + this.mDataset.clear(); + this.mDataset.addAll(updatedDataSet); + notifyDataSetChanged(); + notifyDataChanged(); + }); + } + + + @Override + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + SpedizioneMainListGroupHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.spedizione_main_list__group_header, parent, false); + return new SubheaderHolder(binding); + } + + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + SpedizioneMainListGroupItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.spedizione_main_list__group_item, parent, false); + return new SingleItemViewHolder(binding); + } + + + @Override + public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { + SpedizioneListModel pickingObjectDTO = this.mDataset.get(nextItemPosition); + + subheaderHolder.mBinding.spedizioneGroupTitle.setText(pickingObjectDTO.getGroupTitle()); + +// if (pickingObjectDTO.isDeactivated()) { +// subheaderHolder.mBinding.spedizioneGroupTitle.setText(mContext.getText(R.string.picking_not_available)); +// } else { +// subheaderHolder.mBinding.spedizioneGroupTitle.setText(String.format("%s: %s", mContext.getText(R.string.position_text), UtilityString.isNullOrEmpty(pickingObjectDTO.getPosizione()) ? "N.A." : pickingObjectDTO.getPosizione())); +// } + } + + @Override + public void onBindItemViewHolder(final SpedizioneListAdapter.SingleItemViewHolder holder, final int position) { + SpedizioneListModel pickingObjectDTO = this.mDataset.get(position); + + holder.mBinding.deactivatedOverBg.setVisibility(!pickingObjectDTO.isActive() ? View.VISIBLE : View.GONE); + holder.mBinding.getRoot().setAlpha(!pickingObjectDTO.isActive() ? 0.8f : 1); + holder.mBinding.badge1.setBackground(mContext.getResources().getDrawable(!pickingObjectDTO.isActive() ? R.drawable.badge_gray_round_corner : R.drawable.badge1_round_corner)); + holder.mBinding.qtaEvasa.setTextColor(mContext.getResources().getColor(!pickingObjectDTO.isActive() ? R.color.gray_600 : R.color.green_700)); + +// BigDecimal qtaEvasa = BigDecimal.ZERO; +// +// if (SettingsManager.iDB().isFlagForceAllToColli()) { +// for (MtbColr withdrawRow : pickingObjectDTO.getWithdrawRows()) { +// qtaEvasa = qtaEvasa.add(withdrawRow.getNumCnf()); +// } +// } else { +// for (MtbColr withdrawRow : pickingObjectDTO.getWithdrawRows()) { +// qtaEvasa = qtaEvasa.add(withdrawRow.getQtaCol()); +// } +// } + + holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(pickingObjectDTO.getQtaEvasa())); + holder.mBinding.descrizione.setText(pickingObjectDTO.getDescrizione()); + holder.mBinding.descrizione.setTextColor(pickingObjectDTO.isDescrizionePresente() ? Color.BLACK : Color.GRAY); + +// String descrizioneString = pickingObjectDTO.getDescrizione(); +// int descrizioneColor = Color.BLACK; +// +// +// if (UtilityString.isNullOrEmpty(descrizioneString)) { +// holder.mBinding.descrizione.setText(mContext.getString(R.string.no_description)); +// holder.mBinding.descrizione.setTextColor(Color.BLACK); +// } else { +// holder.mBinding.descrizione.setText(descrizioneString); +// holder.mBinding.descrizione.setTextColor(Color.GRAY); +// } +// +// +// if (UtilityString.isNullOrEmpty(descrizioneString)) { +// descrizioneString = mContext.getString(R.string.no_description); +// descrizioneColor = Color.GRAY; +// } else if (descrizioneString.equalsIgnoreCase(CommonConst.Config.COMMESSA_MAG)) { +// descrizioneString = mContext.getString(R.string.stock); +// } +// +// holder.mBinding.descrizione.setText(descrizioneString); +// holder.mBinding.descrizione.setTextColor(descrizioneColor); + + +// String badge1 = ""; +// +// if (mFlashShowCodForn) { +// badge1 += !UtilityString.isNullOrEmpty(pickingObjectDTO.getCodAlis()) ? (pickingObjectDTO.getCodAlis() + " - ") : ""; +// badge1 += (!UtilityString.isNullOrEmpty(pickingObjectDTO.getCodArtFor()) ? pickingObjectDTO.getCodArtFor() : pickingObjectDTO.getCodMart()); +// } else { +// badge1 += pickingObjectDTO.getCodMart(); +// } + + holder.mBinding.badge1.setText(pickingObjectDTO.getBadge1()); +// holder.mBinding.badge2.setText(UtilityString.isNullOrEmpty(pickingObjectDTO.getCodJcom()) ? null : pickingObjectDTO.getCodJcom()); + holder.mBinding.badge2.setText(pickingObjectDTO.getBadge2()); + holder.mBinding.badge2.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getBadge2()) ? View.GONE : View.VISIBLE); + + + holder.mBinding.subdescrizione1.setText(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione1()) ? null : Html.fromHtml(pickingObjectDTO.getSubDescrizione1())); + holder.mBinding.subdescrizione1.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione1()) ? View.GONE : View.VISIBLE); + + holder.mBinding.subdescrizione2.setText(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? null : Html.fromHtml(pickingObjectDTO.getSubDescrizione2())); + holder.mBinding.subdescrizione2.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getSubDescrizione2()) ? View.GONE : View.VISIBLE); + +// if (!UtilityString.isNullOrEmpty(pickingObjectDTO.getPartitaMag())) { +// holder.mBinding.subdescrizione1.setText(pickingObjectDTO.getPartitaMag()); +// holder.mBinding.subdescrizione1.setVisibility(View.VISIBLE); +// } else { +// holder.mBinding.subdescrizione1.setText(null); +// holder.mBinding.subdescrizione1.setVisibility(View.GONE); +// } +// +// if (pickingObjectDTO.getNumCollo() != null) { +// String description2 = String.format(mContext.getResources().getText(R.string.lu_number_data_text).toString(), pickingObjectDTO.getNumCollo(), pickingObjectDTO.getDataColloHuman()); +// holder.mBinding.subdescrizione2.setText(Html.fromHtml(description2)); +// holder.mBinding.subdescrizione2.setVisibility(View.VISIBLE); +// } else { +// holder.mBinding.subdescrizione2.setText(null); +// holder.mBinding.subdescrizione2.setVisibility(View.GONE); +// } + + +// if (SettingsManager.iDB().isFlagForceAllToColli() || (pickingObjectDTO.getMtbAart() == null || !pickingObjectDTO.getMtbAart().isFlagQtaCnfFissa())) { +// holder.mBinding.untMis.setText("col"); +// holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getNumCollo() != null ? pickingObjectDTO.getNumCnfCollo() : pickingObjectDTO.getNumCnfOrd())); +// } else { +// holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(pickingObjectDTO.getNumCollo() != null ? pickingObjectDTO.getQtaCollo() : pickingObjectDTO.getQtaOrd())); +// if (pickingObjectDTO.getMtbAart() != null) +// holder.mBinding.untMis.setText(pickingObjectDTO.getMtbAart().getUntMis()); +// } + + holder.mBinding.untMis.setText(pickingObjectDTO.getUntMis()); + holder.mBinding.untMis.setVisibility(UtilityString.isNullOrEmpty(pickingObjectDTO.getUntMis()) ? View.GONE : View.VISIBLE); + + } + + + @Override + public boolean onPlaceSubheaderBetweenItems(int position) { + + if (getItemSize() == 1) return true; + else if (getItemSize() > 1) { + SpedizioneListModel compare1 = this.mDataset.get(position); + SpedizioneListModel compare2 = this.mDataset.get(position + 1); + + if (UtilityString.equalsIgnoreCase(compare1.getGroupTitle(), compare2.getGroupTitle())) { + return false; + } + } + + return true; + } + + @Override + public int getItemSize() { + return mDataset.size(); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java new file mode 100644 index 00000000..e435d708 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListModel.java @@ -0,0 +1,120 @@ +package it.integry.integrywmsnative.gest.spedizione_new.core; + +import java.math.BigDecimal; + +public class SpedizioneListModel { + + private String groupTitle; + + private String badge1; + private String badge2; + + private String descrizione; + private boolean descrizionePresente; + private String subDescrizione1; + private String subDescrizione2; + private BigDecimal qtaEvasa; + private BigDecimal qtaTot; + private String untMis; + + private boolean active; + + public String getGroupTitle() { + return groupTitle; + } + + public SpedizioneListModel setGroupTitle(String groupTitle) { + this.groupTitle = groupTitle; + return this; + } + + public String getBadge1() { + return badge1; + } + + public SpedizioneListModel setBadge1(String badge1) { + this.badge1 = badge1; + return this; + } + + public String getBadge2() { + return badge2; + } + + public SpedizioneListModel setBadge2(String badge2) { + this.badge2 = badge2; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public SpedizioneListModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public boolean isDescrizionePresente() { + return descrizionePresente; + } + + public SpedizioneListModel setDescrizionePresente(boolean descrizionePresente) { + this.descrizionePresente = descrizionePresente; + return this; + } + + public String getSubDescrizione1() { + return subDescrizione1; + } + + public SpedizioneListModel setSubDescrizione1(String subDescrizione1) { + this.subDescrizione1 = subDescrizione1; + return this; + } + + public String getSubDescrizione2() { + return subDescrizione2; + } + + public SpedizioneListModel setSubDescrizione2(String subDescrizione2) { + this.subDescrizione2 = subDescrizione2; + return this; + } + + public BigDecimal getQtaEvasa() { + return qtaEvasa; + } + + public SpedizioneListModel setQtaEvasa(BigDecimal qtaEvasa) { + this.qtaEvasa = qtaEvasa; + return this; + } + + public BigDecimal getQtaTot() { + return qtaTot; + } + + public SpedizioneListModel setQtaTot(BigDecimal qtaTot) { + this.qtaTot = qtaTot; + return this; + } + + public String getUntMis() { + return untMis; + } + + public SpedizioneListModel setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public boolean isActive() { + return active; + } + + public SpedizioneListModel setActive(boolean active) { + this.active = active; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 93596e6f..f93d4ae5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -1,7 +1,6 @@ package it.integry.integrywmsnative.gest.vendita; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; @@ -40,6 +39,7 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; +import it.integry.integrywmsnative.gest.spedizione_new.SpedizioneActivity; import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter; import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato; @@ -47,7 +47,7 @@ import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanz import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.viewmodel.VenditaViewModel; -import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity; +import it.integry.integrywmsnative.gest.spedizione.VenditaOrdineInevasoActivity; import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; @@ -359,7 +359,8 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS } private void startVenditaActivity(List ordini, List selectedOrders, List mtbColtList) { - Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class); +// Intent myIntent = new Intent(getActivity(), VenditaOrdineInevasoActivity.class); + Intent myIntent = new Intent(getActivity(), SpedizioneActivity.class); String keyPickingList = DataCache.addItem(ordini); myIntent.putExtra("keyPickingList", keyPickingList); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java index ea4c0a72..502abb35 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java @@ -310,7 +310,7 @@ public class PickingObjectDTO { } public Boolean isDeactivated() { - return deactivated; + return deactivated != null ? deactivated : false; } public PickingObjectDTO setDeactivated(boolean deactivated) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java deleted file mode 100644 index 19adc825..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/rest/OrdineVenditaInevasoRESTConsumerService.java +++ /dev/null @@ -1,4 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.rest; - -public interface OrdineVenditaInevasoRESTConsumerService { -} diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml new file mode 100644 index 00000000..bcbeba36 --- /dev/null +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml index 3ac4b0d6..53154b95 100644 --- a/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml +++ b/app/src/main/res/layout/activity_vendita_ordine_inevaso.xml @@ -6,7 +6,7 @@ + type="it.integry.integrywmsnative.gest.spedizione.viewmodel.VenditaOrdineInevasoViewModel"/> diff --git a/app/src/main/res/layout/spedizione_main_list__group_header.xml b/app/src/main/res/layout/spedizione_main_list__group_header.xml new file mode 100644 index 00000000..ec7b8ecb --- /dev/null +++ b/app/src/main/res/layout/spedizione_main_list__group_header.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/spedizione_main_list__group_item.xml b/app/src/main/res/layout/spedizione_main_list__group_item.xml new file mode 100644 index 00000000..98da03e0 --- /dev/null +++ b/app/src/main/res/layout/spedizione_main_list__group_item.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 82dc4e73ee5c2144fad7599f0a6d3b4b05a82cae Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 25 Feb 2020 10:59:10 +0100 Subject: [PATCH 02/60] Vario --- app/build.gradle | 31 +- .../SpedizioneViewModelTest.java | 10 + app/src/main/AndroidManifest.xml | 2 + .../OnListGeneralChangedCallback.java | 15 +- .../PVOrdiniAcquistoRESTConsumer.java | 2 - .../rest/consumers/PrinterRESTConsumer.java | 6 +- .../core/utility/UtilityExceptions.java | 4 +- ...oneOrdineAccettazioneInevasoViewModel.java | 14 +- .../settings/SettingsPreferenceFragment.java | 2 - .../VenditaOrdineInevasoViewModel.java | 5 - .../spedizione_new/SpedizioneActivity.java | 208 +++++- .../spedizione_new/SpedizioneViewModel.java | 606 +++++++++++++++++- .../core/SpedizioneListAdapter.java | 44 +- ...ntMonoLUPositionIsNotCorrectException.java | 7 + .../exceptions/NoArtsFoundException.java | 10 + .../exceptions/NoLUFoundException.java | 8 + .../exceptions/NoOrdersSelectedException.java | 4 + .../NoResultFromBarcodeException.java | 10 + .../exceptions/NotCurrentYearLUException.java | 8 + .../ScannedPositionNotExistException.java | 7 + .../UltimeConsegneMainListAdapter.java | 1 - .../gest/vendita/dto/PickingObjectDTO.java | 5 +- .../main/res/layout/activity_spedizione.xml | 19 +- app/src/main/res/layout/nav_header_main.xml | 6 - barcode_base_android_library/build.gradle | 2 +- gradle.properties | 2 +- honeywellscannerlibrary/build.gradle | 2 +- keyobardemulatorscannerlibrary/build.gradle | 2 +- pointmobilescannerlibrary/build.gradle | 2 +- zebrascannerlibrary/build.gradle | 2 +- 30 files changed, 910 insertions(+), 136 deletions(-) create mode 100644 app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModelTest.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/CurrentMonoLUPositionIsNotCorrectException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoArtsFoundException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoLUFoundException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoOrdersSelectedException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoResultFromBarcodeException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NotCurrentYearLUException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/ScannedPositionNotExistException.java diff --git a/app/build.gradle b/app/build.gradle index 1961869c..91c33846 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -49,6 +49,9 @@ android { } buildTypes { + debug { + ext.enableCrashlytics = false + } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' @@ -101,45 +104,35 @@ dependencies { implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'com.google.android.material:material:1.1.0-beta01' + implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.preference:preference:1.1.0' - implementation 'com.squareup.okhttp3:okhttp:4.2.2' - implementation 'com.squareup.retrofit2:retrofit:2.6.2' - implementation 'com.squareup.retrofit2:converter-gson:2.6.2' + implementation 'com.squareup.okhttp3:okhttp:4.4.0' + implementation 'com.squareup.retrofit2:retrofit:2.7.1' + implementation 'com.squareup.retrofit2:converter-gson:2.7.1' implementation 'com.annimon:stream:1.2.1' implementation 'androidx.lifecycle:lifecycle-runtime:2.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0' - implementation 'org.apache.commons:commons-text:1.6' + implementation 'org.apache.commons:commons-text:1.8' //kapt "androidx.lifecycle:lifecycle-compiler:2.0.0" //MVVM implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0" - implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0' - implementation 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.2.0' - implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.2.0' - implementation 'com.jakewharton.rxbinding2:rxbinding-design:2.2.0' - implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.2.0' - implementation 'br.com.zbra:android-linq:1.1.0' //FAB implementation 'com.github.clans:fab:1.6.4' //CUSTOM VIEWS implementation 'com.github.NaimishTrivedi:FBToast:1.0' - implementation 'de.hdodenhof:circleimageview:3.0.1' implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2' implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar' implementation 'com.github.andrefrsousa:SuperBottomSheet:1.2.1@aar' implementation 'com.fede987:status-bar-alert:1.0.1' implementation 'com.fxn769:stash:1.2' - testImplementation 'junit:junit:4.12' - implementation 'com.mikhaellopez:lazydatepicker:1.0.0' - implementation 'com.github.demoNo:AutoScrollViewPager:v1.0.2' + testImplementation 'junit:junit:4.13' implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3' - implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' //SQLite ROOM def room_version = "2.2.3" @@ -153,9 +146,11 @@ dependencies { //Barcode implementation project(':pointmobilescannerlibrary') implementation project(':zebrascannerlibrary') - implementation project(path: ':barcode_base_android_library') - implementation project(path: ':honeywellscannerlibrary') + implementation project(':barcode_base_android_library') + implementation project(':honeywellscannerlibrary') implementation project(':keyobardemulatorscannerlibrary') + androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.1' + androidTestImplementation 'org.testng:testng:6.9.6' } repositories { mavenCentral() diff --git a/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModelTest.java b/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModelTest.java new file mode 100644 index 00000000..d66fd4c2 --- /dev/null +++ b/app/src/androidTest/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModelTest.java @@ -0,0 +1,10 @@ +package it.integry.integrywmsnative.gest.spedizione_new; + +import static org.junit.jupiter.api.Assertions.*; + +class SpedizioneViewModelTest { + + @org.junit.jupiter.api.Test + void createNewLU() { + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9d4a8adb..1f4b33c1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ @@ -17,6 +18,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" + tools:replace="android:debuggable" android:usesCleartextTraffic="true"> diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java index f48257af..b8d387b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnListGeneralChangedCallback.java @@ -3,32 +3,27 @@ package it.integry.integrywmsnative.core.expansion; import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableList; -public interface OnListGeneralChangedCallback extends ObservableList.OnListChangedCallback { +public abstract class OnListGeneralChangedCallback extends ObservableList.OnListChangedCallback { - @Override - public void onChanged(ObservableList sender) { - - } - @Override public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - + onChanged(sender); } @Override public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - + onChanged(sender); } @Override public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - + onChanged(sender); } @Override public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - + onChanged(sender); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index 32a30960..1e52ec0c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -29,8 +29,6 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; -import static br.com.zbra.androidlinq.Linq.stream; - public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java index e99da070..bb5b5309 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java @@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.rest.consumers; import android.util.Log; +import com.annimon.stream.Stream; + import java.util.List; import it.integry.integrywmsnative.BuildConfig; @@ -16,8 +18,6 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; -import static br.com.zbra.androidlinq.Linq.stream; - public class PrinterRESTConsumer extends _BaseRESTConsumer { public enum Type { @@ -51,7 +51,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { - callback.onSuccess(value != null ? stream(value).where(x -> x != null).toList() : null); + callback.onSuccess(value != null ? Stream.of(value).withoutNulls().toList() : null); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java index 976394c3..1c015bd9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityExceptions.java @@ -16,13 +16,13 @@ public class UtilityExceptions { public static void defaultException(Context context, Exception ex, Dialog progressDialog){ - progressDialog.dismiss(); defaultException(context, ex); + if(progressDialog != null) progressDialog.dismiss(); } public static void defaultException(Context context, Exception ex, Dialog progressDialog, boolean sendMail){ - progressDialog.dismiss(); defaultException(context, ex, sendMail); + if(progressDialog != null) progressDialog.dismiss(); } public static void defaultException(Context context, Exception ex){ defaultException(context, ex, false); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java index 38eff484..5c1699b1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordine_inevaso/viewmodel/AccettazioneOrdineAccettazioneInevasoViewModel.java @@ -57,8 +57,6 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuanti import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -import static br.com.zbra.androidlinq.Linq.stream; - public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloClosedCallback, IOnOrdineAccettazioneRowDispatchCallback { public ObservableField isFabVisible = new ObservableField<>(); @@ -463,8 +461,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } List codAnags = - stream(mOrders) - .select(OrdineAccettazioneDTO::getCodAnag) + Stream.of(mOrders) + .map(OrdineAccettazioneDTO::getCodAnag) .distinct() .toList(); @@ -473,8 +471,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } List rifOrds = - stream(mOrders) - .select(OrdineAccettazioneDTO::getRifOrd) + Stream.of(mOrders) + .map(OrdineAccettazioneDTO::getRifOrd) .distinct() .toList(); @@ -483,8 +481,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } List numDataOrds = - stream(mOrders) - .select(value -> ("" + value.getNumero()) + value.getData()) + Stream.of(mOrders) + .map(value -> ("" + value.getNumero()) + value.getData()) .distinct() .toList(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java index b76482ba..d267ecc0 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/settings/SettingsPreferenceFragment.java @@ -22,8 +22,6 @@ import it.integry.integrywmsnative.core.settings.SharedPrefKeys; import it.integry.integrywmsnative.core.utility.UtilityArray; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import static br.com.zbra.androidlinq.Linq.stream; - public class SettingsPreferenceFragment extends PreferenceFragmentCompat implements ITitledFragment { @Override public void onCreatePreferences(Bundle bundle, String s) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java index a8421b99..063f7923 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/viewmodel/VenditaOrdineInevasoViewModel.java @@ -489,11 +489,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("Nessuna posizione trovata con il barcode scansionato"), null, BarcodeManager::enable).show(); } - - - - - } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java index 5a779457..f21d333c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneActivity.java @@ -3,78 +3,256 @@ package it.integry.integrywmsnative.gest.spedizione_new; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; -import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; +import android.app.Dialog; import android.os.Bundle; +import com.annimon.stream.Stream; +import com.tfb.fbtoast.FBToast; + 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.barcode_reader.BarcodeCallbackDTO; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; import it.integry.integrywmsnative.core.data_cache.DataCache; +import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; +import it.integry.integrywmsnative.core.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityExceptions; +import it.integry.integrywmsnative.core.utility.UtilityProgress; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListAdapter; import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; -public class SpedizioneActivity extends AppCompatActivity { +public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners { private ActivitySpedizioneBinding mBindings; private SpedizioneViewModel mViewmodel; - private ObservableArrayList> mSpedizioneMutableData = new ObservableArrayList(); + private ObservableArrayList mSpedizioneMutableData = new ObservableArrayList(); + + + public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); + public BindableBoolean noItemsToPick = new BindableBoolean(false); + public BindableBoolean noLUPresent = new BindableBoolean(true); private boolean mFlashShowCodForn; + private int barcodeScannerIstanceID = -1; + private Integer mMtbColtSessionID; + + private ArrayList mPickingList; + private ArrayList mTestateOrdini; + private ArrayList mColliRegistrati; + + private Dialog mCurrentProgress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ArrayList pickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); - ArrayList testateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); - ArrayList colliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); + mPickingList = DataCache.retrieveItem(getIntent().getStringExtra("keyPickingList")); + mTestateOrdini = DataCache.retrieveItem(getIntent().getStringExtra("keyTestateOrdini")); + mColliRegistrati = DataCache.retrieveItem(getIntent().getStringExtra("keyColliRegistrati")); + + mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione); + mViewmodel = new ViewModelProvider(this).get(SpedizioneViewModel.class); + mViewmodel.addListeners(this); + + setSupportActionBar(mBindings.toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); mFlashShowCodForn = customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE); - mBindings = DataBindingUtil.setContentView(this, R.layout.activity_spedizione); - mViewmodel = new ViewModelProvider(this).get(SpedizioneViewModel.class); - mBindings.setLifecycleOwner(this); mBindings.setSpedizioneViewModel(mViewmodel); + mBindings.setSpedizioneView(this); + this.initBarcodeReader(); this.initRecyclerView(); - mViewmodel.setDataset(pickingList); + + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + mViewmodel.setDataset(codMdep, mPickingList, mTestateOrdini); + } + + private void initBarcodeReader() { + barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() + .setOnScanSuccessfull(onScanSuccessful) + .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); } private void initRecyclerView() { - this.mViewmodel.uiModel.observe(this, updatedData -> { - this.mSpedizioneMutableData.postValue(convertDataModelToListModel(updatedData)); + this.mViewmodel.getmPickingList().observe(this, updatedData -> { + this.mSpedizioneMutableData.clear(); + this.mSpedizioneMutableData.addAll(convertDataModelToListModel(updatedData)); + this.noItemsToPick.set(!isThereAnyItemToPick(updatedData)); }); SpedizioneListAdapter spedizioneListAdapter = new SpedizioneListAdapter(this, mSpedizioneMutableData); this.mBindings.spedizionePickingList.setAdapter(spedizioneListAdapter); - this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); } private List convertDataModelToListModel(List dataList) { - List listToReturn = new ArrayList<>(); + + List tmpList = Stream.of(dataList) + .filter(x -> (x.isHidden() == null || !x.isHidden()) && (x.isTempHidden() == null || !x.isTempHidden())) + .toList(); + List sortedList = Stream.of(tmpList) + .filter(x -> !x.isDeactivated() && !UtilityString.isNullOrEmpty(x.getPosizione())) + .sortBy(PickingObjectDTO::getPosizione) + .toList(); - return listToReturn; + sortedList.addAll( + Stream.of(tmpList) + .filter(x -> !x.isDeactivated() && UtilityString.isNullOrEmpty(x.getPosizione())) + .toList() + ); + + sortedList.addAll( + Stream.of(tmpList) + .filter(PickingObjectDTO::isDeactivated) + .toList() + ); + + + return Stream.of(sortedList) + .map(x -> { + SpedizioneListModel spedizioneListModel = new SpedizioneListModel(); + + if (x.isDeactivated()) { + spedizioneListModel.setGroupTitle(getString(R.string.picking_not_available)); + } else { + spedizioneListModel.setGroupTitle(String.format("%s: %s", getString(R.string.position_text), UtilityString.isNullOrEmpty(x.getPosizione()) ? "N.A." : x.getPosizione())); + } + + spedizioneListModel.setActive(!x.isDeactivated()); + + String badge1 = ""; + if (mFlashShowCodForn) { + badge1 += !UtilityString.isNullOrEmpty(x.getCodAlis()) ? (x.getCodAlis() + " - ") : ""; + badge1 += (!UtilityString.isNullOrEmpty(x.getCodArtFor()) ? x.getCodArtFor() : x.getCodMart()); + } else { + badge1 += x.getCodMart(); + } + + spedizioneListModel.setBadge1(badge1); + spedizioneListModel.setBadge2(x.getCodJcom()); + + if (UtilityString.isNullOrEmpty(x.getDescrizioneEstesa())) { + spedizioneListModel.setDescrizione(getString(R.string.no_description)); + spedizioneListModel.setDescrizionePresente(false); + } else { + spedizioneListModel.setDescrizione(x.getDescrizioneEstesa()); + spedizioneListModel.setDescrizionePresente(true); + } + + if (!UtilityString.isNullOrEmpty(x.getPartitaMag())) { + spedizioneListModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), x.getPartitaMag())); + } + + if (x.getNumCollo() != null) { + spedizioneListModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), x.getNumCollo(), x.getDataColloHuman())); + } + + if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissa())) { + spedizioneListModel.setUntMis("col"); + spedizioneListModel.setQtaTot(x.getNumCollo() != null ? x.getNumCnfCollo() : x.getNumCnfOrd()); + } else { + spedizioneListModel.setQtaTot(x.getNumCollo() != null ? x.getQtaCollo() : x.getQtaOrd()); + if (x.getMtbAart() != null) + spedizioneListModel.setUntMis(x.getMtbAart().getUntMis()); + } + + return spedizioneListModel; + }).toList(); } + private boolean isThereAnyItemToPick(List dataList) { + return Stream.of(dataList) + .anyMatch(x -> !x.isDeactivated() && !x.isHidden() && !x.isTempHidden()); + } + + private RunnableArgs onScanSuccessful = data -> { + BarcodeManager.disable(); + + mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + + this.mViewmodel.processBarcodeDTO(data, () -> { + BarcodeManager.enable(); + mCurrentProgress.dismiss(); + }); + }; + + + public void startManualSearch() { + BarcodeManager.disable(); + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre", codice -> { + + this.onScanSuccessful.run(new BarcodeScanDTO().setStringValue(codice).setType(BarcodeType.CODE128)); + BarcodeManager.enable(); + + }, BarcodeManager::enable).show(); + } + + public void removeListFilter() { + + } + + + public void createNewUL() { + mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); + + this.mViewmodel.createNewLU(null, null, () -> { + mCurrentProgress.dismiss(); + }); + } + + public void showCreatedUL() { + + } + + + @Override + public void onLUCreated(MtbColt mtbColt) { + noLUPresent.set(false); + + mMtbColtSessionID = ColliDataRecover.startNewSession(mtbColt, mTestateOrdini); + + FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + } + + @Override + public void onLUClosed() { + noLUPresent.set(true); + + if(mMtbColtSessionID != null) ColliDataRecover.closeSession(mMtbColtSessionID); + } + + @Override + public void onError(Exception ex) { + UtilityExceptions.defaultException(this, ex, mCurrentProgress); + BarcodeManager.enable(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java index e435e12a..61d1484b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneViewModel.java @@ -1,48 +1,618 @@ package it.integry.integrywmsnative.gest.spedizione_new; -import android.util.Log; - +import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import java.util.List; +import com.annimon.stream.Stream; -import it.integry.integrywmsnative.core.di.BindableBoolean; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +import it.integry.barcode_base_android_library.model.BarcodeScanDTO; +import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; +import it.integry.integrywmsnative.core.model.CommonModelConsts; +import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; +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.secondary.GestioneEnum; +import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; +import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBarcode; +import it.integry.integrywmsnative.core.utility.UtilityPosizione; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.CurrentMonoLUPositionIsNotCorrectException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoArtsFoundException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoLUFoundException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoOrdersSelectedException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoResultFromBarcodeException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NotCurrentYearLUException; +import it.integry.integrywmsnative.gest.spedizione_new.exceptions.ScannedPositionNotExistException; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; public class SpedizioneViewModel extends ViewModel { - public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); - public BindableBoolean anyItemToPick = new BindableBoolean(false); - public BindableBoolean anyLUOpened = new BindableBoolean(false); + private List mTestateOrdini; + private MutableLiveData> mPickingList = new MutableLiveData<>(); - public MutableLiveData> uiModel = new MutableLiveData<>(); + private List mListeners = new ArrayList<>(); + private GestioneEnum mDefaultGestioneOfUL = null; + private String mDefaultCodMdep = null; + private List mDefaultFiltroOrdine = new ArrayList<>(); + private String mDefaultCodAnagOfUL = null; + private String mDefaultRagSocOfUL = null; + private String mDefaultRifOrdOfUL = null; + private Integer mDefaultNumOrdOfUL = null; + private Date mDefaultDataOrdOfUL = null; + private String mDefaultCodJFasOfUL = null; - public SpedizioneViewModel() { - Log.d("Test", "Test"); - } + private MtbColt mCurrentMtbColt = null; - public void setDataset(List dataset) { - this.uiModel.postValue(dataset); + public void setDataset(String codMdep, List pickingList, List testateOrdini) { + this.mDefaultCodMdep = codMdep; + this.mPickingList.postValue(pickingList); + this.mTestateOrdini = testateOrdini; + + this.initDefaultVars(); } + private void initDefaultVars() { + if (this.mTestateOrdini == null || this.mTestateOrdini.size() == 0) { + sendError(new NoOrdersSelectedException()); + return; + } - public void startManualSearch() { - } + //Definizione della gestione collo di default + List foundGestioni = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getGestioneEnum) + .withoutNulls() + .distinct() + .toList(); - public void removeListFilter() { + if (foundGestioni != null && foundGestioni.size() > 1) { + return; + } else if (foundGestioni != null && foundGestioni.size() == 1) { + mDefaultGestioneOfUL = foundGestioni.get(0); + } else { + mDefaultGestioneOfUL = GestioneEnum.VENDITA; + } + + //Definizione del filtro ordine da applicare a tutti i colli generati + Stream.of(mTestateOrdini).forEach(x -> { + FiltroOrdineDTO filtro = new FiltroOrdineDTO() + .setDataOrd(x.getDataOrdD()) + .setNumOrd(x.getNumOrd()) + .setGestioneOrd(x.getGestione()) + .setDataCons(x.getDataConsD()); + + if (!mDefaultFiltroOrdine.contains(filtro)) mDefaultFiltroOrdine.add(filtro); + }); + + + //Definizione del codAnag + List foundCodAnag = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getCodAnagOrd) + .distinctBy(x -> x) + .toList(); + + if (foundCodAnag != null && foundCodAnag.size() == 1) { + mDefaultCodAnagOfUL = foundCodAnag.get(0); + } + + + //Definizione del codAnag + List foundRagSoc = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getRagSocOrd) + .distinctBy(x -> x) + .toList(); + + if (foundRagSoc != null && foundRagSoc.size() == 1) { + mDefaultRagSocOfUL = foundRagSoc.get(0); + } + + + //Definizione del rifOrd + List foundRifOrd = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getRifOrd) + .distinctBy(x -> x) + .toList(); + + if (foundRifOrd != null && foundRifOrd.size() == 1) { + mDefaultRifOrdOfUL = foundRifOrd.get(0); + } + + + //Definizione del numOrd + List foundNumOrd = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getNumOrd) + .withoutNulls() + .distinctBy(x -> x) + .toList(); + + if (foundNumOrd != null && foundNumOrd.size() == 1) { + mDefaultNumOrdOfUL = foundNumOrd.get(0); + } + + + //Definizione del dataOrd + List foundDataOrd = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getDataOrdD) + .withoutNulls() + .distinctBy(x -> x) + .toList(); + + if (foundDataOrd != null && foundDataOrd.size() == 1) { + mDefaultDataOrdOfUL = foundDataOrd.get(0); + } + + + //Definizione del codJfas + List foundCodJfas = Stream.of(mTestateOrdini) + .map(OrdineVenditaInevasoDTO::getCodJfas) + .distinctBy(x -> x) + .toList(); + + if (foundCodJfas != null && foundCodJfas.size() == 1) { + mDefaultCodJFasOfUL = foundCodJfas.get(0); + } } - public void createNewUL() { + private void sendError(Exception ex) { + for (Listeners listener : mListeners) listener.onError(ex); + } + + private void sendLUCreated(MtbColt mtbColt) { + for (Listeners listener : mListeners) listener.onLUCreated(mtbColt); + } + + private void sendLUClosed() { + for (Listeners listener : mListeners) listener.onLUClosed(); + } + + private void sendFilterChanged(String newValue) { + for (Listeners listener : mListeners) listener.onFilterChanged(newValue); + } + + public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + //Se non c'è una UL aperta + if (mCurrentMtbColt != null) { + + //Se è un'etichetta anonima + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + //Se il collo non esiste allora lo creo associandolo a questa etichetta anonima + //invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul + //dell'etichetta anonima + this.executeEtichettaAnonimaNotOpenedLU(barcodeScanDTO, onComplete); + } else { + this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete); + } + + } else { + if (UtilityBarcode.isEtichettaAnonima(barcodeScanDTO)) { + //Cerco gli articoli presenti nell'ul dell'etichetta anonima + this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete); + + } else { + this.processBarcodeAlreadyOpenedLU(barcodeScanDTO, onComplete); + } + } + } + + private void processBarcodeAlreadyOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + if (UtilityBarcode.isEanPeso(barcodeScanDTO)) { + //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) + this.executeEtichettaEanPeso(barcodeScanDTO, onComplete); + + + } else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) { + //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL) + this.executeEtichettaEan128(barcodeScanDTO, onComplete); + + + } else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) { + //Cerco l'UL presente all'interno della posizione + this.executeEtichettaPosizione(barcodeScanDTO.getStringValue(), onComplete); + + + } else { + this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete); + } + } + + + private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + + if (mtbColt == null) { + + if (!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { + this.sendError(new NotCurrentYearLUException()); + } else { + + this.createNewLU( + UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), + CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, onComplete); + } + } else { + + this.createNewLU( + null, + null, + () -> searchArtFromUL(mtbColt, onComplete) + ); + } + + }, this::sendError); + } + + private void executeEtichettaPosizione(String posizione, Runnable onComplete) { + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(posizione); + + if (foundPosizione != null) { + if (foundPosizione.isFlagMonoCollo()) { + + PosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> { + + if (mtbColtList == null || mtbColtList.size() != 1) { + //Nessuna UL trovata oppure più UL nella stessa posizione + this.sendError(new NoLUFoundException()); + + } else { + ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + searchArtFromUL(mtbColt, onComplete); + } else { + this.sendError(new NoArtsFoundException()); + } + + }, this::sendError); + } + + }, this::sendError); + + } else { + //La posizione non è Mono-UL + this.sendError(new CurrentMonoLUPositionIsNotCorrectException()); + } + + } else { + //Nessuna posizione trovata con questo barcode + this.sendError(new ScannedPositionNotExistException()); + + } + } + + + private void executeEtichettaLU(String SSCC, Runnable onComplete) { + ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + + if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { + searchArtFromUL(mtbColt, onComplete); + } else { + this.sendError(new NoArtsFoundException()); + } + + }, this::sendError); + } + + + private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> { + + String barcodeProd = null; + + if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc; + if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin; + if (!UtilityString.isNullOrEmpty(ean128Model.Content)) + barcodeProd = ean128Model.Content; + + + if (!UtilityString.isNullOrEmpty(barcodeProd)) { + + if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { + this.executeEtichettaLU(ean128Model.Sscc, onComplete); + } else { + + if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) { + barcodeProd = barcodeProd.substring(1); + } + + this.loadArticolo(barcodeProd, PickingObjectDTO.PickData.fromEan128(ean128Model), onComplete); + + } + + + } else { + //EAN 128 non completo o comunque mancano i riferimenti al prodotto + onComplete.run(); + } + }, this::sendError); + } + + + private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { + + try { + Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue()); + + this.loadArticolo(ean13PesoModel.getPrecode(), PickingObjectDTO.PickData.fromEan128(ean13PesoModel.toEan128()), onComplete); + } catch (Exception ex) { + this.sendError(ex); + } + } + + private void loadArticolo(String barcodeProd, PickingObjectDTO.PickData pickData, Runnable onComplete) { + if (barcodeProd.length() == 14) { + barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); + } + + ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> { + + if (mtbAartList != null && mtbAartList.size() > 0) { + this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); + } else { + this.sendError(new NoResultFromBarcodeException()); + } + + }, this::sendError); + } - public void showCreatedUL() { + private void searchArtFromUL(MtbColt scannedUL, Runnable onComplete) { + + final List pickingList = mPickingList.getValue(); + + List matchPickingObject = Stream.of(pickingList) + .filter(x -> Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) && + x.getDataColloS().equals(scannedUL.getDataColloS()) && + x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) && + (scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE)).toList(); + + List alreadyMatchedArts = Stream.of(matchPickingObject) + .map(PickingObjectDTO::getCodMart).toList(); + + //Cerco se devo fare pick dell'articolo tramite codMart perché forse non risulta in nessun collo + //if(matchPickingObject != null && matchPickingObject.size() == 0 && scannedUL.getItem() != null && scannedUL.getItem().size() > 0) { + List listOfCodMartsInRowCollo = Stream.of(scannedUL.getMtbColr()) + .map(MtbColr::getCodMart) + .withoutNulls() + .toList(); + + + + List matchPickingObjectByArt = Stream.of(pickingList) + .filter(x -> //x.getNumCollo() == null && + (listOfCodMartsInRowCollo.contains(x.getCodMart()) && !alreadyMatchedArts.contains(x.getCodMart()))) + .toList(); + + + if(SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) { + for (int i = 0; i < matchPickingObjectByArt.size(); i++) { + PickingObjectDTO tmpPickObj = matchPickingObjectByArt.get(i); + + + + List matchWithPartitaMag = Stream.of(scannedUL.getMtbColr()) + .filter(x -> x.getCodMart().equalsIgnoreCase(tmpPickObj.getCodMart()) && + Objects.equals(x.getPartitaMag(), tmpPickObj.getPartitaMag())).toList(); + + boolean anyMatch = matchWithPartitaMag.size() > 0; + + if(!anyMatch) { + matchPickingObjectByArt.remove(i); + i--; + } else { + + for(int k = 0; k < matchWithPartitaMag.size(); k++) { + + + MtbColr matchRow = matchWithPartitaMag.get(k); + + PickingObjectDTO.PickData pickData = new PickingObjectDTO.PickData() + .setMtbPartitaMag(matchRow.getRifPartitaMag()) + .setNumCnf(matchRow.getNumCnf()) + .setQtaCnf(matchRow.getQtaCnf()) + .setQtaTot(matchRow.getQtaCol()) + .setSourceMtbColt(scannedUL); + + tmpPickObj.setTempPickData(pickData); + } + } + } + + } else { + for (int i = 0; i < matchPickingObjectByArt.size(); i++) { + + PickingObjectDTO tmpPickObj = matchPickingObjectByArt.get(i); + List matchWithColloRow = Stream.of(scannedUL.getMtbColr()) + .filter(x -> x.getCodMart().equalsIgnoreCase(tmpPickObj.getCodMart())).toList(); + + for(int k = 0; k < matchWithColloRow.size(); k++) { + + + MtbColr matchRow = matchWithColloRow.get(k); + PickingObjectDTO.PickData pickData = new PickingObjectDTO.PickData() + .setMtbPartitaMag(matchRow.getRifPartitaMag()) + .setNumCnf(matchRow.getNumCnf()) + .setQtaCnf(matchRow.getQtaCnf()) + .setQtaTot(matchRow.getQtaCol()) + .setSourceMtbColt(scannedUL); + + tmpPickObj.setTempPickData(pickData); + } + + } + } + + + + + //} + matchPickingObject.addAll(matchPickingObjectByArt); + + this.loadMatchedRows(matchPickingObject); + + onComplete.run(); } + + + private void searchArtFromAnag(MtbAart mtbAart, PickingObjectDTO.PickData pickData, Runnable onComplete) { + + final List pickingList = mPickingList.getValue(); + + List matchPickingObject = Stream.of(pickingList) + .filter(x -> x.getNumCollo() == null && + (mtbAart.getCodMart().equalsIgnoreCase(x.getCodMart()))) + .toList(); + + + if (SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) { + matchPickingObject = Stream.of(matchPickingObject) + .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()) && + (pickData != null && pickData.getMtbPartitaMag() != null && Objects.equals(x.getPartitaMag(), pickData.getMtbPartitaMag().getPartitaMag()))).toList(); + + } + + if (matchPickingObject.size() == 1) { + matchPickingObject.get(0).setTempPickData(pickData); + } + + this.loadMatchedRows(matchPickingObject); + + onComplete.run(); + } + + + private void loadMatchedRows(List matchedRows) { + if(matchedRows == null || matchedRows.size() == 0) { + this.sendError(new NoArtsFoundException()); + } else { + List pickingList = mPickingList.getValue(); + + for(int i = 0; i < pickingList.size(); i++) { + if(!matchedRows.contains(pickingList.get(i))) { + pickingList.get(i).setTempHidden(true); + } + } + + if(matchedRows.size() == 1 ) { + + if (matchedRows.get(0).getTempPickData() != null && + matchedRows.get(0).getTempPickData().getSourceMtbColt() != null ) { + +// MtbColt tempSourceMtbColt = matchedRows.get(0).getTempPickData().getSourceMtbColt(); + +// if (tempSourceMtbColt.getGestione().equals(matchedRows.get(0).getGestione()) && +// tempSourceMtbColt.getNumCollo() == matchedRows.get(0).getNumCollo() && +// tempSourceMtbColt.getSerCollo().equals(matchedRows.get(0).getSerCollo()) && +// tempSourceMtbColt.getDataColloS().equals(matchedRows.get(0).getDataColloS())) { + + dispatchOrdineRow(matchedRows.get(0)); +// } else { +// //Se sto pickando da una UL diversa da quella suggerita allora non te la apro in +// //automatico ma ti mostro il filtro +// applyFilter(""); +// refreshOrderBy(false); +// } + + } else if(matchedRows.get(0).isDeactivated()) { + this.sendFilterChanged(""); +// applyFilter(""); +// refreshOrderBy(false); + } else { + dispatchOrdineRow(matchedRows.get(0)); + } + } else { + this.sendFilterChanged(""); +// applyFilter(""); +// refreshOrderBy(false); + } + } + } + + + private void dispatchOrdineRow(final PickingObjectDTO pickingObjectDTO) { + + } + + + public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) { + MtbColt mtbColt = new MtbColt(); + mtbColt.initDefaultFields(); + mtbColt.setGestione(mDefaultGestioneOfUL) + .setSegno(-1) + .setRifOrd(mDefaultRifOrdOfUL) + .setNumOrd(mDefaultNumOrdOfUL) + .setDataOrdD(mDefaultDataOrdOfUL) + .setCodAnag(mDefaultCodAnagOfUL) + .setCodMdep(mDefaultCodMdep) + .setRagSocCliente(mDefaultRagSocOfUL) + .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + if (mDefaultGestioneOfUL == GestioneEnum.LAVORAZIONE) + mtbColt.setPosizione(mDefaultCodJFasOfUL); + if (customNumCollo != null) mtbColt.setNumCollo(customNumCollo); + if (!UtilityString.isNullOrEmpty(customSerCollo)) mtbColt.setSerCollo(customSerCollo); + + mtbColt.generaFiltroOrdineFromDTO(mDefaultFiltroOrdine); + + ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + + mtbColt + .setNumCollo(value.getNumCollo()) + .setDataCollo(value.getDataColloS()) + .setMtbColr(new ObservableArrayList<>()); + +// value +// .setDisablePrint(disablePrint) +// .setMtbColr(new ObservableArrayList<>()); + +// setULToCurrentContext(value); + + this.mCurrentMtbColt = mtbColt; + + if (onComplete != null) onComplete.run(); + this.sendLUCreated(mtbColt); + }, this::sendError); + + } + + public MutableLiveData> getmPickingList() { + return mPickingList; + } + + public SpedizioneViewModel addListeners(Listeners mListeners) { + this.mListeners.add(mListeners); + return this; + } + + public interface Listeners { + void onLUCreated(MtbColt mtbColt); + + void onLUClosed(); + + void onFilterChanged(String newValue); + + void onError(Exception ex); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java index 39b32879..3fec2ea1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/core/SpedizioneListAdapter.java @@ -27,6 +27,7 @@ import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration; import it.integry.integrywmsnative.core.class_router.ClassRouter; import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration; +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -65,41 +66,17 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter> mutableDataSet) { + public SpedizioneListAdapter(AppCompatActivity context, ObservableArrayList mutableDataSet) { this.mContext = context; - mutableDataSet.addOnListChangedCallback(new ObservableList.OnListChangedCallback>>() { + mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback() { @Override - public void onChanged(ObservableList> sender) { - + public void onChanged(ObservableList sender) { + mDataset.clear(); + mDataset.addAll(sender); + notifyDataSetChanged(); + notifyDataChanged(); } - - @Override - public void onItemRangeChanged(ObservableList> sender, int positionStart, int itemCount) { - - } - - @Override - public void onItemRangeInserted(ObservableList> sender, int positionStart, int itemCount) { - - } - - @Override - public void onItemRangeMoved(ObservableList> sender, int fromPosition, int toPosition, int itemCount) { - - } - - @Override - public void onItemRangeRemoved(ObservableList> sender, int positionStart, int itemCount) { - - } - }); - - mutableDataSet.observe(context, updatedDataSet -> { - this.mDataset.clear(); - this.mDataset.addAll(updatedDataSet); - notifyDataSetChanged(); - notifyDataChanged(); }); } @@ -151,7 +128,6 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter