From f0bbc60ab6dcc9377730d154cc4fc984b104ac5a Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Thu, 2 Apr 2020 17:36:19 +0200 Subject: [PATCH] Implementata view bottom sheet per contenuto UL --- app/build.gradle | 1 - .../MainApplicationModule.java | 14 + .../interfaces/IOrdiniVendita.java | 2 +- .../core/context/AppContext.java | 2 + .../core/di/BindableBoolean.java | 13 + .../core/di/BindableInteger.java | 18 +- .../integrywmsnative/core/di/Converters.java | 130 ++++- .../core/di/ViewConverters.java | 28 + .../core/expansion/OnSingleClickListener.java | 55 ++ .../WeakReferenceOnListChangedCallback.java | 56 ++ .../integrywmsnative/core/model/MtbAart.java | 2 +- .../consumers/ColliMagazzinoRESTConsumer.java | 67 ++- .../rest/consumers/PrinterRESTConsumer.java | 13 +- .../core/rest/model/SitArtOrdDTO.java | 10 + .../core/utility/UtilityContext.java | 18 + ...oneOrdineAccettazioneInevasoViewModel.java | 12 +- .../ui/ContenutoBancaleBottomPanel.java | 31 -- .../viewmodel/ContenutoBancaleViewModel.java | 3 +- .../viewmodel/ListaBancaliViewModel.java | 3 +- .../gest/main/MainFragment.java | 34 +- .../viewmodel/PickingLiberoViewModel.java | 12 +- .../picking_resi/PickingResiActivity.java | 15 +- .../ProdRecuperoMaterialeViewModel.java | 5 +- .../viewmodel/RettificaGiacenzeViewModel.java | 11 +- .../settings/SettingsPreferenceFragment.java | 2 +- .../VenditaOrdineInevasoViewModel.java | 34 +- .../spedizione_new/SpedizioneActivity.java | 168 +++++- .../gest/spedizione_new/SpedizioneModule.java | 13 +- .../spedizione_new/SpedizioneViewModel.java | 376 ++++++++++++-- .../core/SpedizioneListAdapter.java | 14 +- .../exceptions/NoPrintersFoundException.java | 7 + .../vendita/viewmodel/VenditaViewModel.java | 3 +- .../viewmodel/VersamentoMerceViewModel.java | 4 +- ...ttomSheetFragmentLUContentListAdapter.java | 101 ++++ .../BottomSheetFragmentLUContentView.java | 195 +++++++ ...BottomSheetFragmentLUContentViewModel.java | 33 ++ ...etFragmentViewNotInitializedException.java | 7 + ...icoliInColloBottomSheetMtbColrAdapter.java | 48 +- .../ArticoliInColloBottomSheetViewModel.java | 2 +- .../input_quantity/DialogInputQuantity.java | 4 +- .../DialogInputQuantityV2.java | 51 +- .../DialogInputQuantityV2DTO.java | 22 + .../DialogInputQuantityV2ResultDTO.java | 59 +++ .../DialogInputQuantityV2ViewModel.java | 30 ++ .../DialogScanOrCreateLU.java | 10 +- .../main/res/layout/activity_spedizione.xml | 484 +++++++++--------- .../bottom_sheet_fragment__lu_content.xml | 384 ++++++++++++++ ..._sheet_fragment__lu_content__list_item.xml | 120 +++++ .../res/layout/dialog_input_quantity_v2.xml | 63 ++- .../res/layout/fragment_contenuto_bancale.xml | 18 - barcode_kaiteki/build.gradle | 2 +- build.gradle | 2 +- .../extensions/OrdiniVendita.java | 2 +- .../extensions/OrdiniVendita.java | 2 +- .../extensions/OrdiniVendita.java | 2 +- .../extensions/OrdiniVendita.java | 2 +- .../extensions/OrdiniVendita.java | 2 +- .../extensions/OrdiniVendita.java | 2 +- 58 files changed, 2293 insertions(+), 530 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleBottomPanel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoPrintersFoundException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ResultDTO.java create mode 100644 app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml create mode 100644 app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml delete mode 100644 app/src/main/res/layout/fragment_contenuto_bancale.xml diff --git a/app/build.gradle b/app/build.gradle index 17401dc2..73153d23 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -124,7 +124,6 @@ dependencies { implementation 'com.github.NaimishTrivedi:FBToast:1.0' 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.13' diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index b4f61bb9..db1e1f83 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -7,7 +7,9 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; @Module public class MainApplicationModule { @@ -30,5 +32,17 @@ public class MainApplicationModule { return new OrdiniRESTConsumer(); } + @Provides + @Singleton + ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer() { + return new ColliMagazzinoRESTConsumer(); + } + + @Provides + @Singleton + PrinterRESTConsumer providePrinterRESTConsumer() { + return new PrinterRESTConsumer(); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java index 1f147dd9..1d9e0990 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/interfaces/IOrdiniVendita.java @@ -11,6 +11,6 @@ import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public interface IOrdiniVendita { - void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed); + void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index c45a6c91..ee590adb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -10,6 +10,7 @@ import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.data_recover.ColliDataRecover; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.Stash; +import it.integry.integrywmsnative.core.utility.UtilityContext; import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityToast; @@ -59,6 +60,7 @@ public class AppContext { } private void initUtilities() { + UtilityContext.initApplicationContext(mContext); UtilityResources.init(mContext); UtilityToast.init(mContext); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java index 64175f0e..f61088ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableBoolean.java @@ -29,6 +29,19 @@ public class BindableBoolean implements Observable { } mCallbacks.add(callback); } + public void addOnPropertyChangedCallback(@NonNull Runnable callback) { + synchronized (this) { + if (mCallbacks == null) { + mCallbacks = new PropertyChangeRegistry(); + } + } + mCallbacks.add(new OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + callback.run(); + } + }); + } @Override public void removeOnPropertyChangedCallback(@NonNull OnPropertyChangedCallback callback) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java index 5541bd46..3c0b4500 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableInteger.java @@ -3,7 +3,13 @@ package it.integry.integrywmsnative.core.di; import androidx.databinding.BaseObservable; public class BindableInteger extends BaseObservable { - Integer value; + Integer mValue; + + public BindableInteger() {} + + public BindableInteger(int startValue) { + this.mValue = startValue; + } public Integer get() { return get(true); @@ -11,21 +17,21 @@ public class BindableInteger extends BaseObservable { public Integer get(boolean defaultIfNull) { - if(value == null){ + if(mValue == null){ if(defaultIfNull) return 0; else return null; - } else return value; + } else return mValue; } public void set(Integer value) { - if (!Objects.equals(this.value, value)) { - this.value = value; + if (!Objects.equals(this.mValue, value)) { + this.mValue = value; notifyChange(); } } public boolean isEmpty() { - return value == null; + return mValue == null; } } 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 9b631b99..7b444ed5 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 @@ -10,17 +10,21 @@ import androidx.databinding.BindingConversion; import androidx.constraintlayout.widget.Guideline; import com.google.android.material.textfield.TextInputEditText; +import com.google.android.material.textfield.TextInputLayout; import androidx.core.util.Pair; import androidx.appcompat.widget.AppCompatCheckBox; import androidx.appcompat.widget.AppCompatTextView; +import android.app.DatePickerDialog; +import android.content.Context; import android.content.res.ColorStateList; import android.util.Log; import android.view.View; import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; @@ -28,6 +32,9 @@ import android.widget.RadioGroup; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; import java.util.Locale; import androidx.databinding.Observable; @@ -36,15 +43,20 @@ import androidx.lifecycle.MutableLiveData; import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityContext; +import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityString; public class Converters { + @BindingConversion public static String convertBindableToString(BindableString bindableString) { - return bindableString.get(); + if(bindableString != null) return bindableString.get(); + return ""; } @BindingConversion @@ -52,6 +64,33 @@ public class Converters { return bindableBoolean.get(); } + @BindingConversion + public static boolean convertObservableToBoolean(ObservableField bindableBoolean) { + return bindableBoolean.get(); + } + + @BindingAdapter("binding") + public static void bindEditText(AppCompatTextView view, final BindableInteger bindableInteger) { + Pair pair = (Pair) view.getTag(R.id.bound_observable); + if (pair == null || pair.first != bindableInteger) { + if (pair != null) { + view.removeTextChangedListener(pair.second); + } + TextWatcherAdapter watcher = new TextWatcherAdapter() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if(bindableInteger != null) bindableInteger.set(Integer.parseInt(s.toString())); + } + }; + view.setTag(R.id.bound_observable, new Pair<>(bindableInteger, watcher)); + view.addTextChangedListener(watcher); + } + String newValue = bindableInteger != null && bindableInteger.get() != null ? bindableInteger.get().toString() : "0"; + if (!view.getText().toString().equals(newValue)) { + view.setText(newValue); + } + } + @BindingAdapter("binding") public static void bindEditText(EditText view, final BindableString bindableString) { Pair pair = (Pair) view.getTag(R.id.bound_observable); @@ -97,7 +136,7 @@ public class Converters { } @BindingAdapter("binding") - public static void bindTextInputEditText(TextInputEditText view, final ObservableField observableBigDecimal) { + public static void bindTextInputEditTextBigDecimal(TextInputEditText view, final ObservableField observableBigDecimal) { Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); if (pair == null || pair.first != observableBigDecimal) { if (pair != null) { @@ -122,6 +161,77 @@ public class Converters { } } + @BindingAdapter("binding") + public static void bindTextInputEditTextString(TextInputEditText view, final ObservableField observableString) { + Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); + if (pair == null || pair.first != observableString) { + if (pair != null) { + view.removeTextChangedListener(pair.second); + } + TextWatcherAdapter watcher = new TextWatcherAdapter() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + observableString.set(s.toString()); + } + }; + view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher)); + view.addTextChangedListener(watcher); + } + String newValue = observableString.get(); + String viewValue = view.getText().toString().trim(); + + if(!viewValue.equalsIgnoreCase(newValue)) { + view.setText(newValue); + } + } + + @BindingAdapter({"binding"}) + public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField observableDate) { + Pair, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable); + if (pair == null || pair.first != observableDate) { + if (pair != null) { + view.removeTextChangedListener(pair.second); + } + TextWatcherAdapter watcher = new TextWatcherAdapter() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + }; + view.setTag(R.id.bound_observable, new Pair<>(observableDate, watcher)); + view.addTextChangedListener(watcher); + + RunnableArgs onClick = v -> { + // Get Current Date + Calendar c = UtilityDate.getCalendarInstance(); + + if(observableDate.get() != null) { + c.setTime(observableDate.get()); + } + + int mYear = c.get(Calendar.YEAR); + int mMonth = c.get(Calendar.MONTH); + int mDay = c.get(Calendar.DAY_OF_MONTH); + + DatePickerDialog datePickerDialog = new DatePickerDialog(view.getContext(), + (cView, year, month, day) -> { + Date resultDate = new GregorianCalendar(year, month, day).getTime(); + view.setText(UtilityDate.formatDate(resultDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + observableDate.set(resultDate); + }, mYear, mMonth, mDay); + datePickerDialog.show(); + }; + + //Adding click-listener + view.setOnClickListener(onClick::run); + if(view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) { + ((FrameLayout)view.getParent()).setOnClickListener(onClick::run); + ((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run); + } + } + Date newValue = observableDate.get(); + view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + } + @BindingAdapter("binding") public static void bindAutoCompleteTextView(AutoCompleteTextView view, final BindableString bindableString) { Pair pair = (Pair) view.getTag(R.id.bound_observable); @@ -292,6 +402,22 @@ public class Converters { } +// @BindingAdapter("visibility") +// public static void bindView(View view, final ObservableField bindableBoolean) { +// if (view.getTag(R.id.bound_observable) != bindableBoolean) { +// view.setTag(R.id.bound_observable, bindableBoolean); +// } +// 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("android:layout_weight") public static void setLayoutWeight(View view, final Float weight) { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java b/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java new file mode 100644 index 00000000..9ade457e --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/ViewConverters.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.core.di; + +import android.view.View; + +import androidx.appcompat.widget.AppCompatTextView; +import androidx.core.util.Pair; +import androidx.databinding.BindingAdapter; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.OnSingleClickListener; + +public class ViewConverters { + + + + @BindingAdapter("singleClick") + public static void bindViewSingleClick(View view, final Runnable callback) { + view.setFocusable(true); + view.setClickable(true); + view.setOnClickListener(new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + callback.run(); + } + }); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java new file mode 100644 index 00000000..97dc26d8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/OnSingleClickListener.java @@ -0,0 +1,55 @@ +package it.integry.integrywmsnative.core.expansion; + +import android.util.Config; +import android.util.Log; +import android.view.View; + + +/** + * Implementation of {@link View.OnClickListener} that ignores subsequent clicks that happen too quickly after the first one.
+ * To use this class, implement {@link #onSingleClick(View)} instead of {@link View.OnClickListener#onClick(View)}. + */ +public abstract class OnSingleClickListener implements View.OnClickListener { + private static final String TAG = OnSingleClickListener.class.getSimpleName(); + + private static final long MIN_DELAY_MS = 500; + + private long mLastClickTime; + + @Override + public final void onClick(View v) { + long lastClickTime = mLastClickTime; + long now = System.currentTimeMillis(); + mLastClickTime = now; + if (now - lastClickTime < MIN_DELAY_MS) { + // Too fast: ignore + if (Config.LOGD) Log.d(TAG, "onClick Clicked too quickly: ignored"); + } else { + // Register the click + onSingleClick(v); + } + } + + /** + * Called when a view has been clicked. + * + * @param v The view that was clicked. + */ + public abstract void onSingleClick(View v); + + /** + * Wraps an {@link View.OnClickListener} into an {@link OnSingleClickListener}.
+ * The argument's {@link View.OnClickListener#onClick(View)} method will be called when a single click is registered. + * + * @param onClickListener The listener to wrap. + * @return the wrapped listener. + */ + public static View.OnClickListener wrap(final View.OnClickListener onClickListener) { + return new OnSingleClickListener() { + @Override + public void onSingleClick(View v) { + onClickListener.onClick(v); + } + }; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java new file mode 100644 index 00000000..9ae2c97c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/WeakReferenceOnListChangedCallback.java @@ -0,0 +1,56 @@ +package it.integry.integrywmsnative.core.expansion; + +import android.widget.BaseAdapter; + +import androidx.databinding.ObservableList; + +import java.lang.ref.WeakReference; + +public class WeakReferenceOnListChangedCallback extends ObservableList.OnListChangedCallback { + + private final WeakReference adapterReference; + + public WeakReferenceOnListChangedCallback(BaseAdapter baseAdapter) { + this.adapterReference = new WeakReference<>(baseAdapter); + } + + @Override + public void onChanged(ObservableList sender) { + BaseAdapter adapter = adapterReference.get(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + BaseAdapter adapter = adapterReference.get(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + BaseAdapter adapter = adapterReference.get(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + BaseAdapter adapter = adapterReference.get(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + BaseAdapter adapter = adapterReference.get(); + if (adapter != null) { + adapter.notifyDataSetChanged(); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java index f8af41e4..5801b5db 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbAart.java @@ -98,7 +98,7 @@ public class MtbAart extends EntityBase{ this.type = "mtb_aart"; } - public boolean isFlagTracciabilita() { + public boolean isFlagTracciabilitaBoolean() { return flagTracciabilita != null && flagTracciabilita.equalsIgnoreCase("S"); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index fbceb75c..6a6eb02d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -13,13 +13,14 @@ import com.google.gson.reflect.TypeToken; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; -import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import javax.inject.Singleton; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -32,7 +33,6 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; -import it.integry.integrywmsnative.core.rest.model.SingleValueDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDate; @@ -44,9 +44,10 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; +@Singleton public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { - public static void saveCollo(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) { + public static void saveColloStatic(MtbColt mtbColtToSave, final ISimpleOperationCallback callback) { for (int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) { mtbColtToSave.getMtbColr().get(i) @@ -58,8 +59,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } + public void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSave, onComplete, onFailed); + } - public static void saveCollo(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { + public static void saveColloStatic(MtbColt mtbColtToSave, RunnableArgs onComplete, RunnableArgs onFailed) { MtbColt mtbColtToSaveClone = (MtbColt) mtbColtToSave.clone(); mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); @@ -143,7 +147,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setOperation(CommonModelConsts.OPERATION.INSERT); - saveCollo(mtbColtToCreate, new ISimpleOperationCallback() { + saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -206,7 +210,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - saveCollo(newMtbColt, new ISimpleOperationCallback() { + saveColloStatic(newMtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -281,7 +285,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - saveCollo(newMtbColt, new ISimpleOperationCallback() { + saveColloStatic(newMtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -326,7 +330,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { mtbColtToCreate .setOperation(CommonModelConsts.OPERATION.INSERT); - saveCollo(mtbColtToCreate, new ISimpleOperationCallback() { + saveColloStatic(mtbColtToCreate, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(value); @@ -339,11 +343,15 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }); } - public static void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) { + public void deleteCollo(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.deleteColloStatic(mtbColtToDelete, onComplete, onFailed); + } + + public static void deleteColloStatic(MtbColt mtbColtToDelete, Runnable onComplete, RunnableArgs onFailed) { mtbColtToDelete.setOperation(CommonModelConsts.OPERATION.DELETE); - saveCollo(mtbColtToDelete, new ISimpleOperationCallback() { + saveColloStatic(mtbColtToDelete, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(); @@ -399,7 +407,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } - public static void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { + public void getBySSCC(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed); + } + + public static void getBySSCCStatic(String ssccString, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class); colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback>() { @Override @@ -415,8 +427,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } }, onFailed); - - } @Override @@ -467,7 +477,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { }, onFailed); } - public static void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.getMultipleByTestateStatic(testate, onlyResiduo, onComplete, onFailed); + } + + public static void getMultipleByTestateStatic(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) { ArrayList resultMtbColt = new ArrayList<>(); cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> { onComplete.run(resultMtbColt); @@ -477,7 +491,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { private static void cyclicGetMultipleByTestate(@NotNull Iterator sourceMtbColts, boolean onlyResiduo, ArrayList resultMtbColt, Runnable onComplete, RunnableArgs onAbort) { if (sourceMtbColts.hasNext()) { - getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { + getByTestataStatic(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> { resultMtbColt.add(mtbColt); cyclicGetMultipleByTestate(sourceMtbColts, onlyResiduo, resultMtbColt, onComplete, onAbort); }, onAbort); @@ -486,7 +500,11 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } } - public static void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { + public void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.getByTestataStatic(testata, onlyResiduo, throwExcIfNull, onComplete, onFailed); + } + + public static void getByTestataStatic(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs onComplete, RunnableArgs onFailed) { String ssccString = null; if (testata.getSerCollo().equalsIgnoreCase(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE)) { @@ -520,7 +538,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { ssccString += "0"; } - getBySSCC(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed); + getBySSCCStatic(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed); } @@ -531,7 +549,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { if (posizione == null) testata.setPosizione(null); else testata.setPosizione(posizione.getPosizione()); - ColliMagazzinoRESTConsumer.saveCollo(testata, new ISimpleOperationCallback() { + ColliMagazzinoRESTConsumer.saveColloStatic(testata, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { if (onComplete != null) onComplete.run(); @@ -590,25 +608,30 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { } + public void updateDataFine(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.updateDataFineStatic(mtbColt, onComplete, onFailed); + } - public static void updateDataFine(Context context, Dialog progress, MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { + public static void updateDataFineStatic(MtbColt mtbColt, Runnable onComplete, RunnableArgs onFailed) { MtbColt cloneMtbColt = (MtbColt) mtbColt.clone(); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance()); cloneMtbColt.setMtbColr(new ObservableArrayList<>()); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { onComplete.run(); }, ex -> { - UtilityExceptions.defaultException(context, ex, progress); if(onFailed != null) onFailed.run(ex); }); } + public void canLUBeDeleted(MtbColt mtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { + ColliMagazzinoRESTConsumer.canLUBeDeletedStatic(mtbColt, onComplete, onFailed); + } - public static void canLUBeDeleted(MtbColt mtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { + public static void canLUBeDeletedStatic(MtbColt mtbColt, RunnableArgs onComplete, RunnableArgs onFailed) { HashMap params = new HashMap<>(); params.put("mtb_colt.gestione", mtbColt.getGestione()); 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 bb5b5309..c8f12524 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 @@ -6,6 +6,8 @@ import com.annimon.stream.Stream; import java.util.List; +import javax.inject.Singleton; + import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -18,6 +20,7 @@ import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; +@Singleton public class PrinterRESTConsumer extends _BaseRESTConsumer { public enum Type { @@ -26,7 +29,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrinters(final ISimpleOperationCallback> callback) { + public static void getAvailablePrintersStatic(final ISimpleOperationCallback> callback) { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService.getAvailablePrinters().enqueue(new Callback>>() { @Override @@ -42,7 +45,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrinters(String codMdep, final ISimpleOperationCallback> callback) { + public static void getAvailablePrintersStatic(String codMdep, final ISimpleOperationCallback> callback) { PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); printerService.getAvailablePrinters(codMdep).enqueue(new Callback>>() { @@ -71,7 +74,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer { } - public static void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { + PrinterRESTConsumer.getAvailablePrintersStatic(codMdep, printerType, onComplete, onFailed); + } + + public static void getAvailablePrintersStatic(String codMdep, Type printerType, RunnableArgs> onComplete, RunnableArgs onFailed) { String printerTypeStr = printerType != null ? printerType.toString() : null; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java index e70a1942..78340d0f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/SitArtOrdDTO.java @@ -17,6 +17,7 @@ public class SitArtOrdDTO { private BigDecimal qtaCnfOrd; private String idViaggio; private String codMdep; + private boolean flagEnablePickManuale; public String getCodJcom() { return codJcom; @@ -125,4 +126,13 @@ public class SitArtOrdDTO { this.codMdep = codMdep; return this; } + + public boolean isFlagEnablePickManuale() { + return flagEnablePickManuale; + } + + public SitArtOrdDTO setFlagEnablePickManuale(boolean flagEnablePickManuale) { + this.flagEnablePickManuale = flagEnablePickManuale; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java new file mode 100644 index 00000000..f1e73285 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityContext.java @@ -0,0 +1,18 @@ +package it.integry.integrywmsnative.core.utility; + +import android.content.Context; + +public class UtilityContext { + + private static Context mApplicationContext; + + public static void initApplicationContext(Context context) { + mApplicationContext = context; + } + + + public static Context getApplicationContext() { + return mApplicationContext; + } + +} 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 b0a156d9..49d1764b 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 @@ -259,7 +259,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), false, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), false, false, mtbColt -> { if (mtbColt == null) { if (!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) { @@ -499,7 +499,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC } - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback() { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { @@ -567,7 +567,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC progress.show(); if (thereIsAnyRowInUL()) { - ColliMagazzinoRESTConsumer.updateDataFine(mActivity, progress, getColloRef(), () -> { + ColliMagazzinoRESTConsumer.updateDataFineStatic(getColloRef(), () -> { if (shouldPrint) printCollo(progress, onComplete); else { postCloseOperations(onComplete); @@ -593,7 +593,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC return; } - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, value -> { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, value -> { if (value.size() > 0) { try { @@ -643,7 +643,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC private void deleteCollo(Dialog progress, Runnable onComplete) { - ColliMagazzinoRESTConsumer.deleteCollo(getColloRef(), () -> { + ColliMagazzinoRESTConsumer.deleteColloStatic(getColloRef(), () -> { mArticoliInColloBottomSheetViewModel.mtbColt.set(null); isFabVisible.set(true); @@ -839,7 +839,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleBottomPanel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleBottomPanel.java deleted file mode 100644 index 5f2ab4bb..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/ui/ContenutoBancaleBottomPanel.java +++ /dev/null @@ -1,31 +0,0 @@ -package it.integry.integrywmsnative.gest.contenuto_bancale.ui; - -import android.graphics.Color; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.andrefrsousa.superbottomsheet.SuperBottomSheetFragment; - -import it.integry.integrywmsnative.R; - -public class ContenutoBancaleBottomPanel extends SuperBottomSheetFragment { - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState); - return inflater.inflate(R.layout.fragment_contenuto_bancale, container, false); - } - - public float getCornerRadius() { - if(getContext() != null) return getContext().getResources().getDimension(R.dimen.bottom_sheet_round16); - return 0; - } - - @Override - public int getStatusBarColor() { - return Color.RED; - } - -} 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 efd3fc97..42f7fcd5 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 @@ -1,7 +1,6 @@ package it.integry.integrywmsnative.gest.contenuto_bancale.viewmodel; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.Intent; import android.content.res.Resources; import androidx.databinding.ObservableField; @@ -101,7 +100,7 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked mContext.bindings.contenutoBancaleFab.close(true); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, value -> { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, value -> { if(value.size() > 0) { 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 38a68006..1a2ed724 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 @@ -1,7 +1,6 @@ package it.integry.integrywmsnative.gest.lista_bancali.viewmodel; import android.app.Dialog; -import android.app.ProgressDialog; import androidx.databinding.ObservableArrayList; import androidx.core.content.ContextCompat; @@ -58,7 +57,7 @@ public class ListaBancaliViewModel implements IRecyclerItemClicked { final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); try { - ColliMagazzinoRESTConsumer.getByTestata(item, true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getByTestataStatic(item, true, false, mtbColt -> { ObservableArrayList mtbColrObservableArrayList = new ObservableArrayList<>(); mtbColrObservableArrayList.addAll(mtbColt.getMtbColr()); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java index 5b229a83..0b89a202 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainFragment.java @@ -166,8 +166,8 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); - ColliMagazzinoRESTConsumer.updateDataFine(getActivity(), null, recoveredMtbColt, () -> { - ordiniVendita.distribuisciCollo(null, recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(), + ColliMagazzinoRESTConsumer.updateDataFineStatic(recoveredMtbColt, () -> { + ordiniVendita.distribuisciCollo(recoveredMtbColt, recoveredMtbColtDto.getTestateOrdini(), mtbColts -> { ColliDataRecover.closeSession(recoveredMtbColtID); @@ -224,27 +224,29 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab private void initGestMenu() { ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION); - BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); - List menuGroups = menuConfiguration.getGroups(); + if(customConfiguration != null) { + BaseMenuConfiguration menuConfiguration = customConfiguration.getConfig(BaseCustomConfiguration.Keys.MENU_CONFIGURATION); + List menuGroups = menuConfiguration.getGroups(); - for (MenuConfiguration.MenuGroup menuGroup : menuGroups) { + for (MenuConfiguration.MenuGroup menuGroup : menuGroups) { - FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false); + FragmentMainMenuGroupLayoutBinding groupBinding = DataBindingUtil.inflate(mLayoutInflater, R.layout.fragment_main_menu_group_layout, null, false); - String title = this.getResources().getString(menuGroup.getGroupText()); - groupBinding.generalDashboardGroupTitle.setText(title); + String title = this.getResources().getString(menuGroup.getGroupText()); + groupBinding.generalDashboardGroupTitle.setText(title); - MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), menuGroup.getItems()); + MenuListAdapter menuListAdapter = new MenuListAdapter(getContext(), menuGroup.getItems()); - groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), 2)); - groupBinding.mainList.setAdapter(menuListAdapter); - groupBinding.mainList.setNestedScrollingEnabled(false); + groupBinding.mainList.setLayoutManager(new GridLayoutManager(getContext(), 2)); + groupBinding.mainList.setAdapter(menuListAdapter); + groupBinding.mainList.setNestedScrollingEnabled(false); - menuListAdapter.setClickListener((view, position) -> { - onMenuClick(menuGroup.getItems().get(position)); - }); + menuListAdapter.setClickListener((view, position) -> { + onMenuClick(menuGroup.getItems().get(position)); + }); - mBindings.menuContainer.addView(groupBinding.getRoot()); + mBindings.menuContainer.addView(groupBinding.getRoot()); + } } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java index 54b376bb..25289ddc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/viewmodel/PickingLiberoViewModel.java @@ -27,7 +27,6 @@ import it.integry.integrywmsnative.R; 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.ISimpleOperationCallback; import it.integry.integrywmsnative.core.rest.model.Ean128Model; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; @@ -50,7 +49,6 @@ import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentPickingLiberoBinding; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter; -import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskCliente; @@ -273,7 +271,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { private void executeEtichettaLU(String sscc, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColtScanned -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(sscc, true, false, mtbColtScanned -> { if(mtbColtScanned == null) { DialogCommon.showNoULFound(mContext, () -> { @@ -561,7 +559,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - ColliMagazzinoRESTConsumer.saveCollo(mtbColtToSave, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtToSave, value -> { mtbColt.get().getMtbColr().addAll(mtbColtToSave.getMtbColr()); for(int i = 0; i < mtbColt.get().getMtbColr().size(); i++) { @@ -628,7 +626,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { mtbColt.setCodVdes(vtbDest.getCodVdes()); } - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, savedMtbColt -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, savedMtbColt -> { savedMtbColt.setMtbColr(new ObservableArrayList<>()); setULToCurrentContext(savedMtbColt); @@ -657,7 +655,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); if(thereIsAnyRowInUL.get()) { - ColliMagazzinoRESTConsumer.updateDataFine(mContext, progress, this.mtbColt.get(), () -> { + ColliMagazzinoRESTConsumer.updateDataFineStatic(this.mtbColt.get(), () -> { progress.dismiss(); setULToCurrentContext(null); }, null); @@ -715,7 +713,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked { Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - ColliMagazzinoRESTConsumer.saveCollo(mtbColtClone, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, value -> { progressDialog.dismiss(); mtbColt.get().getMtbColr().remove(mtbColrToDelete); }, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog)); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java index c63c3158..71b30b15 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiActivity.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.picking_resi; -import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; @@ -230,7 +229,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC Dialog finalProgress = progress; - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> { value.setDisablePrint(disablePrint); @@ -324,7 +323,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { mtbColr .setDataCollo(value.getDataColloS()) @@ -368,9 +367,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC MtbColt currentLU = currentMtbColt.get(); Runnable postNoteSave = () -> { - ColliMagazzinoRESTConsumer.updateDataFine( - this, - progress, + ColliMagazzinoRESTConsumer.updateDataFineStatic( currentLU, () -> printCollo(progress, currentMtbColt.get(), onComplete), ex -> UtilityExceptions.defaultException(this, ex, progress)); @@ -379,7 +376,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC if(!UtilityString.isNullOrEmpty(noteString)) { currentLU.setAnnotazioni(noteString); - ColliMagazzinoRESTConsumer.saveCollo(currentLU, mtbColt -> { + ColliMagazzinoRESTConsumer.saveColloStatic(currentLU, mtbColt -> { postNoteSave.run(); }, ex -> UtilityExceptions.defaultException(this, ex, progress)); } else postNoteSave.run(); @@ -428,7 +425,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> { if(shouldPrint) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { if (printerList.size() > 0) { try { @@ -512,7 +509,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC private void deleteCollo(Dialog progress, Runnable onComplete) { - ColliMagazzinoRESTConsumer.deleteCollo(currentMtbColt.get(), () -> { + ColliMagazzinoRESTConsumer.deleteColloStatic(currentMtbColt.get(), () -> { setULToCurrentContext(null); progress.dismiss(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java index e0d97260..7bd53b55 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/viewmodel/ProdRecuperoMaterialeViewModel.java @@ -38,7 +38,6 @@ import it.integry.integrywmsnative.databinding.FragmentProdRecuperoMaterialeBind import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.HistoryULsListAdapter; import it.integry.integrywmsnative.gest.prod_recupero_materiale.core.ProdRecuperoMaterialeHelper; import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULDTO; -import it.integry.integrywmsnative.gest.prod_recupero_materiale.dto.HistoryVersamentoProdULRestDTO; import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; @@ -110,7 +109,7 @@ public class ProdRecuperoMaterialeViewModel { }; private void executeEtichettaUL(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { if(mtbColt != null) { @@ -295,7 +294,7 @@ public class ProdRecuperoMaterialeViewModel { private void printCollo(Dialog progress, MtbColt mtbColtToPrint, Runnable onComplete) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> { if (printerList.size() > 0) { try { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java index 9e358376..4641d9d6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/viewmodel/RettificaGiacenzeViewModel.java @@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel; import android.app.Activity; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.res.Resources; import androidx.databinding.ObservableArrayList; @@ -434,7 +433,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback() { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback() { @Override public void onSuccess(MtbColt value) { @@ -560,7 +559,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked cloneMtbColt.setMtbCols(new ArrayList<>()); cloneMtbColt.getMtbCols().add(mtbCols); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), ex -> { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, mtbColt -> onComplete.run(), ex -> { UtilityExceptions.defaultException(mContext, ex, progress); DialogCommon.showRestError(mContext, ex, onComplete::run); }); @@ -643,7 +642,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - ColliMagazzinoRESTConsumer.saveCollo(mtbColtClone, valueNewMtbColt -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, valueNewMtbColt -> { progressDialog.dismiss(); mtbColt.get().getMtbColr().remove(index); @@ -683,7 +682,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext); - ColliMagazzinoRESTConsumer.saveCollo(mtbColtClone, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, value -> { progressDialog.dismiss(); mtbColt.get().getMtbColr().remove(mtbColrToDelete); }, ex -> { @@ -697,7 +696,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked this.showAskPrint(shouldPrint -> { if (shouldPrint) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback>() { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback>() { @Override public void onSuccess(List value) { 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 d267ecc0..b5361fda 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 @@ -26,7 +26,7 @@ public class SettingsPreferenceFragment extends PreferenceFragmentCompat impleme @Override public void onCreatePreferences(Bundle bundle, String s) { - PrinterRESTConsumer.getAvailablePrinters(new ISimpleOperationCallback>() { + PrinterRESTConsumer.getAvailablePrintersStatic(new ISimpleOperationCallback>() { @Override public void onSuccess(final List availablePrinters) { initScreen(availablePrinters); 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 5b18c791..6c26bddb 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 @@ -402,7 +402,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO }; private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { if(mtbColt == null) { @@ -454,7 +454,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO DialogSimpleMessageHelper.makeErrorDialog(mActivity, new SpannableString("Nessuna UL trovata"), null, BarcodeManager::enable).show(); } else { - ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtList.get(0), true, false, mtbColt -> { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { searchArtFromUL(mtbColt, progressDialog); } else { @@ -491,7 +491,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private void executeEtichettaLU(String SSCC, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(SSCC, true, false, mtbColt -> { if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { @@ -813,7 +813,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO mtbColt.generaFiltroOrdineFromDTO(defaultFiltroOrdine); Dialog finalProgress = progress; - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColt, value -> { mtbColt .setNumCollo(value.getNumCollo()) @@ -858,13 +858,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO final MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get(); - ColliMagazzinoRESTConsumer.canLUBeDeleted(currentMtbColt, canBeDeleted -> { + ColliMagazzinoRESTConsumer.canLUBeDeletedStatic(currentMtbColt, canBeDeleted -> { if(!canBeDeleted) { Runnable saveAction = () -> { - ColliMagazzinoRESTConsumer.updateDataFine( - mActivity, - progress, + ColliMagazzinoRESTConsumer.updateDataFineStatic( currentMtbColt, () -> distribuisciCollo(progress, (generatedMtbColts) -> { if(shouldPrint) printCollo(progress, generatedMtbColts, onComplete); @@ -911,13 +909,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); - ordiniVendita.distribuisciCollo(progress, cloneMtbColt, mTestateOrdini, mtbColts -> { + ordiniVendita.distribuisciCollo(cloneMtbColt, mTestateOrdini, mtbColts -> { if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID); - ColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, true, mtbColtsReloaded -> { - onComplete.run(mtbColtsReloaded); - }, ex -> { + ColliMagazzinoRESTConsumer.getMultipleByTestateStatic(mtbColts, true, onComplete::run, ex -> { UtilityExceptions.defaultException(mActivity, ex, progress); }); @@ -930,7 +926,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> { if(shouldPrint) { - PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, value -> { + PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, value -> { if (value.size() > 0) { try { @@ -979,22 +975,22 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } } - private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onAbort) { + private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) { ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { PrinterRESTConsumer.printCollo( printerName, mtbColtToPrint, 1, - reportName, onComplete, onAbort); + reportName, onComplete, onFailed); - }, onAbort); + }, onFailed); } private void deleteCollo(Dialog progress, Runnable onComplete) { - ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> { + ColliMagazzinoRESTConsumer.deleteColloStatic(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> { mArticoliInColloBottomSheetViewModel.mtbColt.set(null); isFabVisible.set(true); @@ -1326,7 +1322,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO private void onOrdineRowSave(PickingObjectDTOOld item, MtbColt cloneMtbColt, boolean closeUL, boolean hasTipoCollo, Dialog progress) { - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { MtbColr mtbColr = cloneMtbColt.getMtbColr().get(0); @@ -1446,7 +1442,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.getMtbColr().add(mtbColr); - ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { mtbColr .setDataCollo(value.getDataColloS()) 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 6ad09419..141e6e0e 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 @@ -7,18 +7,14 @@ import androidx.recyclerview.widget.LinearLayoutManager; import android.app.Dialog; import android.os.Bundle; +import android.text.SpannableString; import com.annimon.stream.Stream; -import com.google.zxing.BarcodeFormat; -import com.google.zxing.Result; -import com.kroegerama.kaiteki.bcode.BarcodeResultListener; -import com.kroegerama.kaiteki.bcode.ui.BarcodeBottomSheet; import com.tfb.fbtoast.FBToast; -import org.jetbrains.annotations.NotNull; - import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.inject.Inject; @@ -34,14 +30,17 @@ 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.di.BindableBoolean; +import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.model.MtbAart; +import it.integry.integrywmsnative.core.expansion.RunnableArgsss; 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.rest.model.SitArtOrdDTO; 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.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivitySpedizioneBinding; @@ -49,25 +48,34 @@ import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListAdapte import it.integry.integrywmsnative.gest.spedizione_new.core.SpedizioneListModel; import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentView; +import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; +import it.integry.integrywmsnative.view.bottom_sheet__lu_content.exceptions.BottomSheetFragmentViewNotInitializedException; +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.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.camera_barcode_reader.DialogCameraBarcodeReader; +import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2; import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO; +import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2ResultDTO; -public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners, BarcodeResultListener { +public class SpedizioneActivity extends AppCompatActivity implements SpedizioneViewModel.Listeners, BottomSheetFragmentLUContentViewModel.Listener { private ActivitySpedizioneBinding mBindings; @Inject SpedizioneViewModel mViewmodel; + private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; + private ObservableArrayList mSpedizioneMutableData = new ObservableArrayList(); public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); public BindableBoolean noItemsToPick = new BindableBoolean(false); public BindableBoolean noLUPresent = new BindableBoolean(true); - + public BindableBoolean bottomSheetEnabled = new BindableBoolean(false); private boolean mEnableGiacenza; private boolean mFlagShowCodForn; @@ -78,6 +86,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV private ArrayList mColliRegistrati; private Dialog mCurrentProgress; + private boolean mShouldCloseActivity; @Override protected void onCreate(Bundle savedInstanceState) { @@ -96,7 +105,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV spedizioneComponent.inject(this); - mViewmodel.addListeners(this); + mViewmodel.setListeners(this); setSupportActionBar(mBindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -107,6 +116,12 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mBindings.setLifecycleOwner(this); mBindings.setSpedizioneView(this); + mBindings.bottomSheetLuContent.init(mBindings.bottomSheetLuContent); + mBottomSheetFragmentLUContentViewModel = mBindings.bottomSheetLuContent.getViewModelInstance(); + mBottomSheetFragmentLUContentViewModel.setListener(this); + + + this.initVars(); this.initBarcodeReader(); this.initRecyclerView(); @@ -115,9 +130,10 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV mEnableGiacenza = !SettingsManager.iDB().isFlagSpedizioneEnableFakeGiacenza(); boolean enableCheckPartitaMag = SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV(); boolean canOverflowOrderQuantity = SettingsManager.iDB().isFlagCanAddExtraQuantitySpedizione(); + boolean shouldAskPesoLU = SettingsManager.iDB().isFlagAskPesoColloSpedizione(); if (mEnableGiacenza) mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); - mViewmodel.init(codMdep, mEnableGiacenza, enableCheckPartitaMag, mSitArtOrd, mTestateOrdini, canOverflowOrderQuantity); + mViewmodel.init(codMdep, mEnableGiacenza, enableCheckPartitaMag, shouldAskPesoLU, canOverflowOrderQuantity, mSitArtOrd, mTestateOrdini, mColliRegistrati); } @Override @@ -126,6 +142,27 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV return true; } + @Override + public void onBackPressed() { + + if (this.mBindings.bottomSheetLuContent.isExpanded()) { + this.mBindings.bottomSheetLuContent.collapse(); + } else if (!noLUPresent.get()) { + this.mShouldCloseActivity = true; + BarcodeManager.removeCallback(barcodeScannerIstanceID); + this.mViewmodel.closeLU(true); + } else { + BarcodeManager.removeCallback(barcodeScannerIstanceID); + super.onBackPressed(); + } + } + + private void initVars() { + this.noLUPresent.addOnPropertyChangedCallback(() -> { + this.bottomSheetEnabled.set(!this.noLUPresent.get()); + }); + } + private void initBarcodeReader() { barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(onScanSuccessful) @@ -144,7 +181,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV this.mBindings.spedizionePickingList.setLayoutManager(new LinearLayoutManager(this)); spedizioneListAdapter.setOnItemClicked(clickedItem -> { - if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick()) { + if (!noLUPresent.get() && SettingsManager.iDB().isFlagSpedizioneEnableManualPick() && clickedItem.getSitArtOrdDTO().isFlagEnablePickManuale()) { this.mViewmodel.dispatchOrdineRow(clickedItem); } }); @@ -187,14 +224,27 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV spedizioneListModel.setActive(!mEnableGiacenza || anyLUPresent); + + AtomicBigDecimal numCnfWithdrawRows = new AtomicBigDecimal(); + AtomicBigDecimal qtaColWithdrawRows = new AtomicBigDecimal(); + + Stream.of(x.getWithdrawMtbColr()) + .forEach(row -> { + numCnfWithdrawRows.addAndGet(row.getNumCnf()); + qtaColWithdrawRows.addAndGet(row.getQtaCol()); + }); + + if (!anyLUPresent) { spedizioneListModel.setGroupTitle(mEnableGiacenza ? getString(R.string.picking_not_available) : ""); if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { spedizioneListModel.setUntMis("col"); spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd()); + spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue()); } else { spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getQtaOrd()); + spedizioneListModel.setQtaEvasa(qtaColWithdrawRows.getBigDecimalValue()); if (x.getMtbAart() != null) spedizioneListModel.setUntMis(x.getMtbAart().getUntMis()); } @@ -219,8 +269,10 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) { cloneModel.setUntMis("col"); cloneModel.setQtaTot(mtbColrToDispatch != null ? mtbColrToDispatch.getNumCnf() : x.getSitArtOrdDTO().getNumCnfOrd()); + cloneModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue()); } else { cloneModel.setQtaTot(mtbColrToDispatch != null ? mtbColrToDispatch.getQtaCol() : x.getSitArtOrdDTO().getQtaOrd()); + cloneModel.setQtaEvasa(qtaColWithdrawRows.getBigDecimalValue()); if (x.getMtbAart() != null) cloneModel.setUntMis(x.getMtbAart().getUntMis()); } @@ -258,6 +310,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV .anyMatch(x -> !x.isHidden()); } + private RunnableArgs onScanSuccessful = data -> { BarcodeManager.disable(); @@ -285,7 +338,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV DialogCameraBarcodeReader.newInstance(this, data -> { this.onScanSuccessful.run(data); }) - .show(getSupportFragmentManager(), "camera_barcode"); + .show(getSupportFragmentManager(), "camera_barcode"); } public void removeListFilter() { @@ -294,6 +347,8 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV public void createNewUL() { + this.mBindings.spedizioneFab.close(true); + mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); this.mViewmodel.createNewLU(null, null, () -> { @@ -303,7 +358,7 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV } public void showCreatedUL() { - + this.mBindings.spedizioneFab.close(true); } @@ -319,11 +374,54 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV public void onLUCreated(MtbColt mtbColt) { noLUPresent.set(false); FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(mtbColt); + } + + @Override + public void onLUClosing() { + mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); } @Override public void onLUClosed() { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + noLUPresent.set(true); + this.mBottomSheetFragmentLUContentViewModel.setMtbColt(null); + + if (this.mShouldCloseActivity) super.onBackPressed(); + } + + @Override + public void onLUPositionRequired(RunnableArgs onComplete) { + + } + + @Override + public void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete) { + DialogInputPeso.make(this, codTcol, netWeightKG, grossWeightKG, (newCodTcol, newNetWeight, newGrossWeight) -> { + onComplete.run(newCodTcol, netWeightKG, grossWeightKG); + }).show(); + } + + @Override + public void onLUPrintRequest(RunnableArgs onComplete) { + DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); + } + + @Override + public void onLUPrintError(Exception ex, Runnable onComplete) { + DialogSimpleMessageHelper.makeErrorDialog( + this, + new SpannableString(ex.getMessage()), + null, + null, + R.string.button_ignore_print, + onComplete).show(); } @Override @@ -340,12 +438,17 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV @Override public void onError(Exception ex) { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + UtilityExceptions.defaultException(this, ex, mCurrentProgress); BarcodeManager.enable(); } @Override - public void onItemDispatched(MtbAart mtbAart, + public void onItemDispatched(PickingObjectDTO pickingObjectDTO, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, @@ -355,9 +458,11 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, + String partitaMag, + Date dataScad, boolean canOverflowOrderQuantity) { DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO() - .setMtbAart(mtbAart) + .setMtbAart(pickingObjectDTO.getMtbAart()) .setTotalQtaOrd(totalQtaOrd) .setTotalNumCnfOrd(totalNumCnfOrd) .setQtaCnfOrd(qtaCnfOrd) @@ -367,22 +472,41 @@ public class SpedizioneActivity extends AppCompatActivity implements SpedizioneV .setTotalQtaAvailable(totalQtaAvailable) .setTotalNumCnfAvailable(totalNumCnfAvailable) .setQtaCnfAvailable(qtaCnfAvailable) + .setPartitaMag(partitaMag) + .setDataScad(dataScad) .setCanOverflowOrderQuantity(canOverflowOrderQuantity); DialogInputQuantityV2 - .newInstance(dialogInputQuantityV2DTO) + .newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> this.onDialogInputQuantityResult(pickingObjectDTO, resultDTO, shouldCloseLU)) .show(getSupportFragmentManager(), "tag"); } - @Override - public boolean onBarcodeResult(@NotNull Result result) { - String a = ""; + private void onDialogInputQuantityResult(PickingObjectDTO pickingObjectDTO, DialogInputQuantityV2ResultDTO resultDTO, boolean shouldCloseLU) { + mCurrentProgress = UtilityProgress.createDefaultProgressDialog(this); - return true; + this.mViewmodel.saveRow( + pickingObjectDTO, + resultDTO.getNumCnf(), + resultDTO.getQtaCnf(), + resultDTO.getQtaTot(), + resultDTO.getPartitaMag(), + resultDTO.getDataScad(), + shouldCloseLU + ); } @Override - public void onBarcodeScanCancelled() { + public void onRowSaved() { + if (mCurrentProgress != null) { + mCurrentProgress.dismiss(); + mCurrentProgress = null; + } + FBToast.successToast(this, getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT); + } + + @Override + public void onBottomSheetLUClose() { + this.mViewmodel.closeLU(true); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java index 11f158e4..b36587c1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/SpedizioneModule.java @@ -6,15 +6,24 @@ import dagger.Module; import dagger.Provides; import it.integry.integrywmsnative.MainApplicationModule; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; +import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; +import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentViewModel; @Module(includes = {MainApplicationModule.class}) public class SpedizioneModule { @Provides @Singleton - SpedizioneViewModel providesSpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer) { - return new SpedizioneViewModel(colliDataRecoverService, ordiniRESTConsumer); + BottomSheetFragmentLUContentViewModel providesBottomSheetFragmentLUContentViewModel() { + return new BottomSheetFragmentLUContentViewModel(); + } + + @Provides + @Singleton + SpedizioneViewModel providesSpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer) { + return new SpedizioneViewModel(colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); } } 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 561a66d6..d07abd57 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,16 +1,17 @@ package it.integry.integrywmsnative.gest.spedizione_new; -import android.os.Handler; - import androidx.databinding.ObservableArrayList; import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; +import org.jetbrains.annotations.NotNull; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; +import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -18,9 +19,12 @@ import javax.inject.Inject; import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.CommonConst; +import it.integry.integrywmsnative.core.class_router.ClassRouter; +import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; import it.integry.integrywmsnative.core.model.MtbAart; @@ -29,18 +33,22 @@ 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.report.ReportManager; 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.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; +import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel; import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; 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.NoPrintersFoundException; import it.integry.integrywmsnative.gest.spedizione_new.exceptions.OrdersLoadException; import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoArtsFoundException; import it.integry.integrywmsnative.gest.spedizione_new.exceptions.NoLUFoundException; @@ -56,8 +64,9 @@ public class SpedizioneViewModel { private List mTestateOrdini; private MutableLiveData> mPickingList = new MutableLiveData<>(); + private List mColliRegistrati = new ArrayList<>(); - private List mListeners = new ArrayList<>(); + private Listeners mListeners; private GestioneEnum mDefaultGestioneOfUL = null; private String mDefaultCodMdep = null; @@ -72,26 +81,43 @@ public class SpedizioneViewModel { private boolean mEnableGiacenza; private boolean mEnableCheckPartitaMag; private boolean mCanOverflowOrderQuantity; + private boolean mShouldAskPesoLU; private MtbColt mCurrentMtbColt = null; private Integer mMtbColtSessionID; private final ColliDataRecoverService mColliDataRecoverService; private final OrdiniRESTConsumer mOrdiniRestConsumerService; + private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; + private final PrinterRESTConsumer mPrinterRESTConsumer; @Inject - public SpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer) { + public SpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, + OrdiniRESTConsumer ordiniRESTConsumer, + ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, + PrinterRESTConsumer printerRESTConsumer) { this.mColliDataRecoverService = colliDataRecoverService; this.mOrdiniRestConsumerService = ordiniRESTConsumer; + this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.mPrinterRESTConsumer = printerRESTConsumer; } - public void init(String codMdep, boolean enableGiacenza, boolean enableCheckPartitaMag, List pickingList, List testateOrdini, boolean canOverflowOrderQuantity) { + public void init(String codMdep, + boolean enableGiacenza, + boolean enableCheckPartitaMag, + boolean shouldAskPesoLU, + boolean canOverflowOrderQuantity, + List pickingList, + List testateOrdini, + List colliRegistrati) { this.mDefaultCodMdep = codMdep; this.mTestateOrdini = testateOrdini; + this.mColliRegistrati = colliRegistrati; this.mEnableGiacenza = enableGiacenza; this.mEnableCheckPartitaMag = enableCheckPartitaMag; this.mCanOverflowOrderQuantity = canOverflowOrderQuantity; + this.mShouldAskPesoLU = shouldAskPesoLU; if (enableGiacenza) { mOrdiniRestConsumerService.getSuggestedPickingList(this.mDefaultCodMdep, pickingList, pickingObjectList -> { @@ -132,11 +158,7 @@ public class SpedizioneViewModel { }) .toList(); - new Handler() - .postDelayed(() -> { - onComplete.run(pickingList); - }, 1); -// onComplete.run(pickingList); + onComplete.run(pickingList); }, this::sendError); } @@ -244,30 +266,46 @@ public class SpedizioneViewModel { private void sendDatasetLoaded() { - for (Listeners listener : mListeners) listener.onDatasetLoaded(); + if(this.mListeners != null) mListeners.onDatasetLoaded(); } private void sendError(Exception ex) { - for (Listeners listener : mListeners) listener.onError(ex); + if(this.mListeners != null) mListeners.onError(ex); } private void sendLUCreated(MtbColt mtbColt) { - for (Listeners listener : mListeners) listener.onLUCreated(mtbColt); + if(this.mListeners != null) mListeners.onLUCreated(mtbColt); + } + + private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete) { + if(this.mListeners != null) mListeners.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); + } + + private void sendLUPrintRequest(RunnableArgs onComplete) { + if(this.mListeners != null) mListeners.onLUPrintRequest(onComplete); + } + + private void sendLUPrintError(Exception ex, Runnable onComplete) { + if(this.mListeners != null) mListeners.onLUPrintError(ex, onComplete); + } + + private void sendLUClosing() { + if(this.mListeners != null) mListeners.onLUClosing(); } private void sendLUClosed() { - for (Listeners listener : mListeners) listener.onLUClosed(); + if(this.mListeners != null) mListeners.onLUClosed(); } private void sendFilterApplied(String newValue) { - for (Listeners listener : mListeners) listener.onFilterApplied(newValue); + if(this.mListeners != null) mListeners.onFilterApplied(newValue); } private void sendFilterRemoved() { - for (Listeners listener : mListeners) listener.onFilterRemoved(); + if(this.mListeners != null) mListeners.onFilterRemoved(); } - private void sendOnItemDispatched(MtbAart mtbAart, + private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, @@ -277,9 +315,26 @@ public class SpedizioneViewModel { BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, + String partitaMag, + Date dataScad, boolean canOverflowOrderQuantity) { - for (Listeners listener : mListeners) - listener.onItemDispatched(mtbAart, totalQtaOrd, totalNumCnfOrd, qtaCnfOrd, totalQtaToBeTaken, totalNumCnfToBeTaken, qtaCnfToBeTaken, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, canOverflowOrderQuantity); + if(this.mListeners != null) mListeners.onItemDispatched(pickingObjectDTO, + totalQtaOrd, + totalNumCnfOrd, + qtaCnfOrd, + totalQtaToBeTaken, + totalNumCnfToBeTaken, + qtaCnfToBeTaken, + totalQtaAvailable, + totalNumCnfAvailable, + qtaCnfAvailable, + partitaMag, + dataScad, + canOverflowOrderQuantity); + } + + private void sendOnRowSaved() { + if(this.mListeners != null) mListeners.onRowSaved(); } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -339,7 +394,7 @@ public class SpedizioneViewModel { private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { - ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { + mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> { if (mtbColt == null) { @@ -376,7 +431,7 @@ public class SpedizioneViewModel { this.sendError(new NoLUFoundException()); } else { - ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { searchArtFromUL(mtbColt, onComplete); } else { @@ -401,7 +456,7 @@ public class SpedizioneViewModel { } private void executeEtichettaLU(String SSCC, Runnable onComplete) { - ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + mColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { searchArtFromUL(mtbColt, onComplete); @@ -604,6 +659,9 @@ public class SpedizioneViewModel { BigDecimal totalNumCnfAvailable = null; BigDecimal qtaCnfAvailable = null; + String partitaMag = null; + Date dataScad = null; + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta MtbColr mtbColrToDispatch = pickingObjectDTO.getTempPickData() != null && @@ -636,6 +694,9 @@ public class SpedizioneViewModel { if (UtilityBigDecimal.lowerThan(qtaColDaPrelevare, BigDecimal.ZERO)) qtaColDaPrelevare = BigDecimal.ZERO; + partitaMag = mtbColrToDispatch.getPartitaMag(); + dataScad = mtbColrToDispatch.getDataScadPartitaD(); + } else if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) { //Oppure le info del barcode scansionato PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO(); @@ -659,19 +720,25 @@ public class SpedizioneViewModel { qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare); } + if (manualPickDTO.getMtbPartitaMag() != null) { + partitaMag = manualPickDTO.getMtbPartitaMag().getPartitaMag(); + dataScad = manualPickDTO.getMtbPartitaMag().getDataScadD(); + } } this.sendOnItemDispatched( - pickingObjectDTO.getMtbAart(), - totalQtaOrd, - totalNumCnfOrd, - qtaCnfOrd, + pickingObjectDTO, + qtaDaEvadere, + numCnfDaEvadere, + qtaCnfDaEvadere, qtaColDaPrelevare, numCnfDaPrelevare, qtaCnfDaPrelevare, totalQtaAvailable, totalNumCnfAvailable, qtaCnfAvailable, + partitaMag, + dataScad, mCanOverflowOrderQuantity); } @@ -696,7 +763,7 @@ public class SpedizioneViewModel { mtbColt.generaFiltroOrdineFromDTO(mDefaultFiltroOrdine); - ColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { + mColliMagazzinoRESTConsumer.saveCollo(mtbColt, value -> { mtbColt .setNumCollo(value.getNumCollo()) .setDataCollo(value.getDataColloS()) @@ -712,6 +779,241 @@ public class SpedizioneViewModel { } + public void saveRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { + final MtbColr mtbColr = new MtbColr() + .setCodMart(pickingObjectDTO.getSitArtOrdDTO().getCodMart()) + .setPartitaMag(partitaMag) + .setQtaCol(qtaTot) + .setQtaCnf(qtaCnf) + .setNumCnf(numCnf) + .setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa()) + .setDatetimeRow(UtilityDate.getDateInstance()); + + //TODO: Al posto di prelevare la prima riga bisognerebbe controllare se c'è ne una che corrisponde con la partita richiesta + MtbColr mtbColrToDispatch = 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 (mtbColrToDispatch != null) { + mtbColr + .setCodJcom(UtilityString.empty2null(mtbColrToDispatch.getCodJcom())) + .setSerColloRif(UtilityString.empty2null(mtbColrToDispatch.getSerCollo())) + .setNumColloRif(mtbColrToDispatch.getNumCollo()) + .setGestioneRif(UtilityString.empty2null(mtbColrToDispatch.getGestione())) + .setDataColloRif(UtilityString.empty2null(mtbColrToDispatch.getDataColloS())); + + if (mCurrentMtbColt.getCodTcol() == null && + mCurrentMtbColt.getPesoKg() == null && + mCurrentMtbColt.getPesoNettoKg() == null) { + + MtbColt sourceMtbColt = pickingObjectDTO.getTempPickData().getSourceMtbColt(); + + mCurrentMtbColt.setCodTcol(sourceMtbColt.getCodTcol()); + mCurrentMtbColt.setPesoKg(sourceMtbColt.getPesoKg()); + mCurrentMtbColt.setPesoNettoKg(sourceMtbColt.getPesoNettoKg()); + } + } else if (mEnableGiacenza && pickingObjectDTO.getMtbColts() != null && pickingObjectDTO.getMtbColts().size() > 0) { + // Vecchia logica di aggancio UL +// mtbColr +// .setCodJcom(UtilityString.empty2null(item.getCodJcom())) +// .setSerColloRif(UtilityString.empty2null(item.getSerCollo())) +// .setNumColloRif(item.getNumCollo()) +// .setGestioneRif(UtilityString.empty2null(item.getGestione())) +// .setDataColloRif(UtilityString.empty2null(item.getDataColloS())); + } + + mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); + + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); + + cloneMtbColt.setMtbColr(new ObservableArrayList()); + cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); + + boolean shouldPrint = true; + + //Se è l'unico articolo del collo (controllo se è uguale a 0 perché ancora non è stato aggiunto nella lista delle righe) + if (shouldCloseLU && mCurrentMtbColt.getMtbColr().size() == 0) { + shouldPrint = false; +// if(UtilityString.isNullOrEmpty(cloneMtbColt.getCodTcol())) { +// cloneMtbColt.setCodTcol(pickingObjectDTO.getSitArtOrdDTO().getCodTcol()); +// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); +// } + } + + boolean finalShouldPrint = shouldPrint; + mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> { + + mtbColr + .setDataCollo(value.getDataColloS()) + .setNumCollo(value.getNumCollo()) + .setGestione(value.getGestione()) + .setSerCollo(value.getSerCollo()) + .setRiga(value.getMtbColr().get(0).getRiga()) + .setUntMis(pickingObjectDTO.getMtbAart().getUntMis()) + .setMtbAart(pickingObjectDTO.getMtbAart()); + + pickingObjectDTO.getWithdrawMtbColr().add(mtbColr); + mCurrentMtbColt.getMtbColr().add(mtbColr); + + //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei + resetMatchedRows(); + + this.sendOnRowSaved(); + + if (shouldCloseLU) closeLU(finalShouldPrint); + }, this::sendError); + + } + + public void closeLU(boolean shouldPrint) { + if (mCurrentMtbColt == null) return; + + this.sendLUClosing(); + + mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> { + + if (canBeDeleted) { + deleteLU(this::sendLUClosed); + } else { + + Runnable saveAction = () -> { + mColliMagazzinoRESTConsumer.updateDataFine( + mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> { + if (shouldPrint) + printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts)); + else { + postCloseOperations(generatedMtbColts); + } + }), this::sendError); + }; + + if (mShouldAskPesoLU) { + this.sendLUPesoRequired(mCurrentMtbColt.getCodTcol(), + mCurrentMtbColt.getPesoNettoKg(), + mCurrentMtbColt.getPesoKg(), + (newCodTcol, newNetWeight, newGrossWeight) -> { + + mCurrentMtbColt.setCodTcol(newCodTcol); + mCurrentMtbColt.setPesoNettoKg(newNetWeight); + mCurrentMtbColt.setPesoKg(newGrossWeight); + + saveAction.run(); + }); + } else { + saveAction.run(); + } + + } + + }, this::sendError); + } + + private void distribuisciLU(RunnableArgs> onComplete) { + + MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); + + IOrdiniVendita ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA); + + ordiniVendita.distribuisciCollo(cloneMtbColt, mTestateOrdini, mtbColts -> { + + mColliMagazzinoRESTConsumer.getMultipleByTestate(mtbColts, true, onComplete, this::sendError); + + }, this::sendError); + } + + private void printCollo(List mtbColtsToPrint, Runnable onComplete) { + this.sendLUPrintRequest(shouldPrint -> { + + if (!shouldPrint) { + onComplete.run(); + } else { + + mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { + + if (printerList == null || printerList.size() == 0) { + this.sendError(new NoPrintersFoundException()); + onComplete.run(); + return; + } + + cyclicPrint(mtbColtsToPrint.iterator(), printerList.get(0), onComplete, ex -> this.sendLUPrintError(ex, onComplete)); + + }, this::sendError); + + } + + }); + } + + private void cyclicPrint(@NotNull Iterator sourceMtbColts, String printerName, Runnable onComplete, RunnableArgs onAbort) { + if (sourceMtbColts.hasNext()) { + singlePrint(sourceMtbColts.next(), printerName, () -> { + cyclicPrint(sourceMtbColts, printerName, onComplete, onAbort); + }, onAbort); + } else { + onComplete.run(); + } + } + + private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs onFailed) { + ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { + + PrinterRESTConsumer.printCollo( + printerName, + mtbColtToPrint, + 1, + reportName, onComplete, onFailed); + + }, onFailed); + } + + private void postCloseOperations(List mtbColtList) { + this.mColliRegistrati.addAll(mtbColtList); + + mColliDataRecoverService.closeSession(mMtbColtSessionID); + this.mCurrentMtbColt = null; + + + for(PickingObjectDTO pickingObjectDTO : mPickingList.getValue()) { + + List withdrawMtbColrList = pickingObjectDTO.getWithdrawMtbColr(); + + for(MtbColr withdrawMtbColr : withdrawMtbColrList) { + pickingObjectDTO.getSitArtOrdDTO().setNumCnfOrd(pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd().subtract(withdrawMtbColr.getNumCnf())); + pickingObjectDTO.getSitArtOrdDTO().setQtaOrd(pickingObjectDTO.getSitArtOrdDTO().getQtaOrd().subtract(withdrawMtbColr.getQtaCol())); + + Stream.of(pickingObjectDTO.getMtbColts()) + .filter(x -> Objects.equals(x.getNumCollo(), withdrawMtbColr.getNumColloRif()) && + x.getDataColloS().equals(withdrawMtbColr.getDataColloRifS()) && + x.getSerCollo().equalsIgnoreCase(withdrawMtbColr.getSerColloRif()) && + x.getGestione().equalsIgnoreCase(withdrawMtbColr.getGestioneRif())) + .forEach(x -> { + List mtbColrList = x.getMtbColr(); + +// Stream.of(mtbColrList) +// .filter(y -> y.getCodMart().equalsIgnoreCase(withdrawMtbColr.getCodMart()) && +// UtilityString.equalsIgnoreCase(y.getPartitaMag(), withdrawMtbColr.getPartitaMag()) && +// UtilityString.equalsIgnoreCase(y.getCodCol(), withdrawMtbColr.getCodCol()) && +// UtilityString.equalsIgnoreCase(y.getCodTagl(), withdrawMtbColr.getCodTagl())) +// .for + + + }); + } + + } + } + + private void deleteLU(Runnable onComplete) { + mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> { + mCurrentMtbColt = null; + if (onComplete != null) onComplete.run(); + }, this::sendError); + } + public void resetMatchedRows() { for (PickingObjectDTO pickingObjectDTO : this.mPickingList.getValue()) { pickingObjectDTO @@ -727,8 +1029,8 @@ public class SpedizioneViewModel { return mPickingList; } - public SpedizioneViewModel addListeners(Listeners mListeners) { - this.mListeners.add(mListeners); + public SpedizioneViewModel setListeners(Listeners listeners) { + this.mListeners = listeners; return this; } @@ -737,15 +1039,25 @@ public class SpedizioneViewModel { void onLUCreated(MtbColt mtbColt); + void onLUClosing(); + void onLUClosed(); + void onLUPositionRequired(RunnableArgs onComplete); + + void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss onComplete); + + void onLUPrintRequest(RunnableArgs onComplete); + + void onLUPrintError(Exception ex, Runnable onComplete); + void onFilterApplied(String newValue); void onFilterRemoved(); void onError(Exception ex); - void onItemDispatched(MtbAart mtbAart, + void onItemDispatched(PickingObjectDTO pickingObjectDTO, BigDecimal totalQtaOrd, BigDecimal totalNumCnfOrd, BigDecimal qtaCnfOrd, @@ -755,7 +1067,11 @@ public class SpedizioneViewModel { BigDecimal totalQtaAvailable, BigDecimal totalNumCnfAvailable, BigDecimal qtaCnfAvailable, + String partitaMag, + Date dataScad, boolean canOverflowOrderQuantity); + + void onRowSaved(); } } 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 cf77e24c..7e8e25b3 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 @@ -94,6 +94,7 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter= 0) { + holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha)); + } else if (pickingObjectDTO.getQtaEvasa().floatValue() > 0) { + holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha)); + } else if (position % 2 == 1) { + holder.mBinding.getRoot().setBackgroundColor(Color.WHITE); + } else { + holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); + } + 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)); @@ -128,7 +139,8 @@ public class SpedizioneListAdapter extends SectionedRecyclerViewAdapter { - if(this.mOnItemClicked != null) this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); + if (this.mOnItemClicked != null) + this.mOnItemClicked.run(pickingObjectDTO.getOriginalModel()); }); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoPrintersFoundException.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoPrintersFoundException.java new file mode 100644 index 00000000..16dbc82a --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione_new/exceptions/NoPrintersFoundException.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.gest.spedizione_new.exceptions; + +public class NoPrintersFoundException extends Exception { + public NoPrintersFoundException() { + super("Nessuna stampante configurata"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java index 613ff3e8..6b39c54d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/viewmodel/VenditaViewModel.java @@ -2,7 +2,6 @@ package it.integry.integrywmsnative.gest.vendita.viewmodel; import android.app.Activity; import android.app.Dialog; -import android.app.ProgressDialog; import android.text.Html; import android.text.SpannableString; @@ -149,7 +148,7 @@ public class VenditaViewModel { } private void executeEtichettaLU(String SSCC, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(SSCC, true, false, mtbColt -> { if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java index 56f08ae9..3ae8274a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java @@ -128,7 +128,7 @@ public class VersamentoMerceViewModel { BarcodeManager.enable(); DialogCommon.showNoULFound(mContext, null); } else if (mtbColtList.size() == 1) { - ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtList.get(0), true, false, mtbColt -> { //TAKE HERE pickMerceULtoUL(mtbColt, progressDialog); @@ -184,7 +184,7 @@ public class VersamentoMerceViewModel { private void executeEtichettaLU(String sscc, boolean isAnonima, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(sscc, true, false, mtbColt -> { if(mtbColt == null && !isAnonima) { DialogCommon.showNoULFound(mContext, null); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java new file mode 100644 index 00000000..10322dd1 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java @@ -0,0 +1,101 @@ +package it.integry.integrywmsnative.view.bottom_sheet__lu_content; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.Observable; +import androidx.databinding.ObservableField; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.WeakReferenceOnListChangedCallback; +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.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentListItemBinding; + +public class BottomSheetFragmentLUContentListAdapter extends BaseAdapter { + + private final WeakReferenceOnListChangedCallback onListChangedCallback; + private Context mContext; + private ObservableField mtbColt; + + public BottomSheetFragmentLUContentListAdapter(Context context, ObservableField mtbColt) { + super(); + this.mContext = context; + this.mtbColt = mtbColt; + this.onListChangedCallback = new WeakReferenceOnListChangedCallback(this); + + this.mtbColt.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + onLUChangedCallback(); + } + }); + } + + + private void onLUChangedCallback() { + if(this.mtbColt.get() != null) { + this.mtbColt.get().getMtbColr().addOnListChangedCallback(onListChangedCallback); + } + } + + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + + BottomSheetFragmentLuContentListItemBinding binding = DataBindingUtil.inflate(inflater, R.layout.bottom_sheet_fragment__lu_content__list_item, parent, false); + + final MtbColr mtbColr = mtbColt.get().getMtbColr().get(position); + binding.setMtbColr(mtbColr); + + //Setting qty with unt_mis + if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissaBoolean())){ + String text = UtilityNumber.decimalToString(mtbColr.getQtaCol()); + + + if(mtbColr.getMtbAart() != null) { + text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : ""; + } + + binding.qtaTextview.setText(text); + } else { + binding.qtaTextview.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + "\n" + UtilityResources.getString(R.string.unt_mis_col)); + } + + + binding.executePendingBindings(); + + if(position % 2 == 1) binding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); + + return binding.getRoot(); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public Object getItem(int position) { + return position; + } + + @Override + public int getCount() { + if(mtbColt.get() != null && mtbColt.get().getMtbColr() != null) { + + return mtbColt.get().getMtbColr().size(); + } else return 0; + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java new file mode 100644 index 00000000..c98695ac --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentView.java @@ -0,0 +1,195 @@ +package it.integry.integrywmsnative.view.bottom_sheet__lu_content; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.Observable; +import androidx.databinding.ObservableList; + +import com.google.android.material.bottomsheet.BottomSheetBehavior; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.BindableString; +import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.utility.UtilityLogger; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.BottomSheetFragmentLuContentBinding; +import it.integry.integrywmsnative.view.bottom_sheet__lu_content.exceptions.BottomSheetFragmentViewNotInitializedException; + +public class BottomSheetFragmentLUContentView extends ConstraintLayout { + + private final Context mContext; + private BottomSheetBehavior mBottomSheetBehavior; + + private BottomSheetFragmentLuContentBinding mBinding; + private BottomSheetFragmentLUContentViewModel mViewModel; + + private BottomSheetFragmentLUContentListAdapter mAdapter; + + + public BottomSheetFragmentLUContentView(Context context) { + this(context, null); + } + + public BottomSheetFragmentLUContentView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + this.mContext = context; + + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mBinding = DataBindingUtil.inflate(inflater, R.layout.bottom_sheet_fragment__lu_content, this, true); + + + mViewModel = new BottomSheetFragmentLUContentViewModel(); + mBinding.setViewModel(mViewModel); + + this.initAdapter(); + this.initCallbacks(); + } + + public BottomSheetFragmentLUContentView(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs); + } + + public BottomSheetFragmentLUContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + this(context, attrs); + } + + public BottomSheetFragmentLUContentViewModel getViewModelInstance() { + return mViewModel; + } + + public void init(View view) { + this.mBottomSheetBehavior = BottomSheetBehavior.from(view); + + this.mBottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + onStateChangedCallback(mapState(newState)); + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + onSlideCallback(1 - slideOffset); + } + }); + } + + private void initAdapter() { + this.mAdapter = new BottomSheetFragmentLUContentListAdapter(this.mContext, this.mViewModel.getObservableMtbColt()); + this.mBinding.linearListview.setAdapter(this.mAdapter); + } + + private void initCallbacks() { + this.mViewModel.getObservableMtbColt().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + if(mViewModel.getObservableMtbColt().get() != null) { + onMtbColrItemChanged(); + + mViewModel.getObservableMtbColt().get().getMtbColr().addOnListChangedCallback(new OnListGeneralChangedCallback() { + @Override + public void onChanged(ObservableList sender) { + onMtbColrItemChanged(); + } + }); + } + } + }); + } + + private void onMtbColrItemChanged() { + List mtbColrs = mViewModel.getObservableMtbColt().get().getMtbColr(); + mBinding.textviewArtCounter.setText(String.valueOf(mtbColrs.size())); + mBinding.textviewArtDescription.setText(mContext.getResources().getQuantityString(R.plurals.articles, mtbColrs.size())); + } + + private State mapState(int stateInt) { + if(stateInt == BottomSheetBehavior.STATE_DRAGGING) return State.DRAGGING; + if(stateInt == BottomSheetBehavior.STATE_SETTLING) return State.SETTLING; + if(stateInt == BottomSheetBehavior.STATE_EXPANDED) return State.EXPANDED; + if(stateInt == BottomSheetBehavior.STATE_COLLAPSED) return State.COLLAPSED; + if(stateInt == BottomSheetBehavior.STATE_HIDDEN) return State.HIDDEN; + if(stateInt == BottomSheetBehavior.STATE_HALF_EXPANDED) return State.HALF_EXPANDED; + + return null; + } + + public State getState() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return null; + } + + return mapState(this.mBottomSheetBehavior.getState()); + } + + public boolean isExpanded() { + return this.getState() == State.EXPANDED; + } + + public boolean isCollapsed() { + return this.getState() == State.COLLAPSED; + } + + public void expand() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return; + } + + this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } + + public void collapse() { + if(this.mBottomSheetBehavior == null) { + UtilityLogger.errorMe(new BottomSheetFragmentViewNotInitializedException()); + return; + } + + this.mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } + + private void onStateChangedCallback(State newState) { + switch (newState) { + case EXPANDED: + this.mBinding.btnCloseLu.setClickable(false); + this.mBinding.btnCloseLu.setFocusable(false); + break; + + case COLLAPSED: + this.mBinding.btnCloseLu.setClickable(true); + this.mBinding.btnCloseLu.setFocusable(true); + break; + } + } + + private void onSlideCallback(float slideOffset) { + this.mBinding.btnCloseLu.setAlpha(slideOffset); +// mBinding.tapActionLayout.setAlpha(1-slideOffset); + } + + + public void toggle() { + if(isExpanded()) collapse(); + else expand(); + } + + public enum State { + DRAGGING, + SETTLING, + EXPANDED, + COLLAPSED, + HIDDEN, + HALF_EXPANDED + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java new file mode 100644 index 00000000..0dced7d8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentViewModel.java @@ -0,0 +1,33 @@ +package it.integry.integrywmsnative.view.bottom_sheet__lu_content; + +import androidx.databinding.ObservableField; + +import it.integry.integrywmsnative.core.model.MtbColt; + +public class BottomSheetFragmentLUContentViewModel { + + public ObservableField mtbColt = new ObservableField<>(); + private Listener mListener; + + public void closeCurrentLU() { + if(this.mListener != null) this.mListener.onBottomSheetLUClose(); + } + + public BottomSheetFragmentLUContentViewModel setMtbColt(MtbColt mtbColt) { + this.mtbColt.set(mtbColt); + return this; + } + + public ObservableField getObservableMtbColt() { + return this.mtbColt; + } + + public BottomSheetFragmentLUContentViewModel setListener(Listener listener) { + this.mListener = listener; + return this; + } + + public interface Listener { + void onBottomSheetLUClose(); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java new file mode 100644 index 00000000..a14c39c8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/exceptions/BottomSheetFragmentViewNotInitializedException.java @@ -0,0 +1,7 @@ +package it.integry.integrywmsnative.view.bottom_sheet__lu_content.exceptions; + +public class BottomSheetFragmentViewNotInitializedException extends Exception { + public BottomSheetFragmentViewNotInitializedException() { + super("Please call init() method before accessing to View state"); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java index 72a1abe0..60a6e535 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/view/ArticoliInColloBottomSheetMtbColrAdapter.java @@ -13,6 +13,7 @@ import androidx.databinding.ObservableList; import java.lang.ref.WeakReference; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.WeakReferenceOnListChangedCallback; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -89,52 +90,5 @@ public class ArticoliInColloBottomSheetMtbColrAdapter extends BaseAdapter { } - public class WeakReferenceOnListChangedCallback extends ObservableList.OnListChangedCallback { - private final WeakReference adapterReference; - - public WeakReferenceOnListChangedCallback(BaseAdapter baseAdapter) { - this.adapterReference = new WeakReference<>(baseAdapter); - } - - @Override - public void onChanged(ObservableList sender) { - BaseAdapter adapter = adapterReference.get(); - if (adapter != null) { - adapter.notifyDataSetChanged(); - } - } - - @Override - public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { - BaseAdapter adapter = adapterReference.get(); - if (adapter != null) { - adapter.notifyDataSetChanged(); - } - } - - @Override - public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { - BaseAdapter adapter = adapterReference.get(); - if (adapter != null) { - adapter.notifyDataSetChanged(); - } - } - - @Override - public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { - BaseAdapter adapter = adapterReference.get(); - if (adapter != null) { - adapter.notifyDataSetChanged(); - } - } - - @Override - public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { - BaseAdapter adapter = adapterReference.get(); - if (adapter != null) { - adapter.notifyDataSetChanged(); - } - } - } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java index 37d9bbff..f2f7af1a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/bottomsheet/viewmodel/ArticoliInColloBottomSheetViewModel.java @@ -225,7 +225,7 @@ public class ArticoliInColloBottomSheetViewModel { mtbColtClone.getMtbColr().add(itemToDelete); - ColliMagazzinoRESTConsumer.saveCollo(mtbColtClone, (newMtbColt) -> { + ColliMagazzinoRESTConsumer.saveColloStatic(mtbColtClone, (newMtbColt) -> { mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); MtbColr deletedItem = mtbColt.get().getMtbColr().get(position); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index cfb83a75..f4012194 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -372,7 +372,7 @@ public class DialogInputQuantity { quantityDTO.canDataScadBeChanged.set(dto.isCanDataScadBeChanged()); } - quantityDTO.shouldAskDataScad.set(dto.mtbAart.isFlagTracciabilita() && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0); + quantityDTO.shouldAskDataScad.set(dto.mtbAart.isFlagTracciabilitaBoolean() && dto.mtbAart.getGgScadPartita() != null && dto.mtbAart.getGgScadPartita() > 0); if(dto.getShouldAskDataScad() != null) { quantityDTO.shouldAskDataScad.set(dto.getShouldAskDataScad()); @@ -688,7 +688,7 @@ public class DialogInputQuantity { private void onConfirm(Context context, QuantityDTO quantityDTO, RunnableArgss dialogCallback, boolean closeUL){ - if(currentDTO.mtbAart.isFlagTracciabilita() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){ + if(currentDTO.mtbAart.isFlagTracciabilitaBoolean() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){ showBatchLotErrorPrompt(context); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java index 4feccfb3..c1a0eef5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2.java @@ -1,5 +1,6 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; +import android.content.Context; import android.os.Bundle; import android.text.InputType; import android.view.LayoutInflater; @@ -15,8 +16,11 @@ import androidx.fragment.app.DialogFragment; import org.jetbrains.annotations.NotNull; import java.math.BigDecimal; +import java.util.Date; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; @@ -25,21 +29,26 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput private DialogInputQuantityV2ViewModel mViewModel; private DialogInputQuantityV2DTO mDialogInputQuantityV2DTO; + private RunnableArgss mOnComplete; - + public ObservableField currentPartitaMag = new ObservableField<>(); + public ObservableField currentDataScad = new ObservableField<>(); public ObservableField currentNumCnf = new ObservableField<>(); public ObservableField currentQtaCnf = new ObservableField<>(); public ObservableField currentQtaTot = new ObservableField<>(); + public Context context; + private boolean mEnableDataCallback = true; - public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) { - return new DialogInputQuantityV2(dialogInputQuantityV2DTO); + public static DialogInputQuantityV2 newInstance(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, RunnableArgss onComplete) { + return new DialogInputQuantityV2(dialogInputQuantityV2DTO, onComplete); } - private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO) { + private DialogInputQuantityV2(@NotNull DialogInputQuantityV2DTO dialogInputQuantityV2DTO, RunnableArgss onComplete) { this.mDialogInputQuantityV2DTO = dialogInputQuantityV2DTO; + this.mOnComplete = onComplete; } @Override @@ -51,6 +60,8 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + this.context = getActivity(); + DialogInputQuantityV2Binding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_v2, container, false); bindings.toolbar.setTitle("Inserimento articolo"); @@ -66,19 +77,36 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput .setTotalNumCnfAvailable(mDialogInputQuantityV2DTO.getTotalNumCnfAvailable()) .setTotalQtaAvailable(mDialogInputQuantityV2DTO.getTotalQtaAvailable()) .setCanOverflowOrderQuantity(mDialogInputQuantityV2DTO.isCanOverflowOrderQuantity()) - .setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable()); + .setQtaCnfAvailable(mDialogInputQuantityV2DTO.getQtaCnfAvailable()) + .setPartitaMag(mDialogInputQuantityV2DTO.getPartitaMag()) + .setDataScad(mDialogInputQuantityV2DTO.getDataScad()); bindings.setView(this); bindings.setViewmodel(this.mViewModel); MtbUntMis mtbUntMis = mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis() != null && mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().size() > 0 ? mDialogInputQuantityV2DTO.getMtbAart().getMtbUntMis().get(0) : null; - if(!(mtbUntMis != null && mtbUntMis.isFlagDig())) { - bindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL); + if (!(mtbUntMis != null && mtbUntMis.isFlagDig())) { + bindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); } return bindings.getRoot(); } + public void dismiss() { + super.dismiss(); + } + + public void save() { + this.mOnComplete.run(this.mViewModel.getResult(), false); + dismiss(); + } + + public void saveAndCloseLU() { + this.mOnComplete.run(this.mViewModel.getResult(), true); + dismiss(); + } + + @Override public void onStart() { super.onStart(); @@ -90,19 +118,19 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput private void init() { UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { - if(this.mEnableDataCallback) { + if (this.mEnableDataCallback) { this.mViewModel.setNumCnf(value); } }); UtilityObservable.addPropertyChanged(this.currentQtaCnf, (value) -> { - if(this.mEnableDataCallback) { + if (this.mEnableDataCallback) { this.mViewModel.setQtaCnf(value); } }); UtilityObservable.addPropertyChanged(this.currentQtaTot, (value) -> { - if(this.mEnableDataCallback) { + if (this.mEnableDataCallback) { this.mViewModel.setQtaTot(value); } }); @@ -112,6 +140,9 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput public void onDataChanged() { this.mEnableDataCallback = false; + this.currentPartitaMag.set(this.mViewModel.getPartitaMag()); + this.currentDataScad.set(this.mViewModel.getDataScad()); + this.currentNumCnf.set(this.mViewModel.getNumCnf()); this.currentQtaCnf.set(this.mViewModel.getQtaCnf()); this.currentQtaTot.set(this.mViewModel.getQtaTot()); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java index 01da3a3e..e03d3d0f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2DTO.java @@ -1,6 +1,7 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import java.math.BigDecimal; +import java.util.Date; import it.integry.integrywmsnative.core.model.MtbAart; @@ -20,6 +21,9 @@ public class DialogInputQuantityV2DTO { private BigDecimal totalNumCnfAvailable; private BigDecimal qtaCnfAvailable; + private String partitaMag; + private Date dataScad; + private boolean canOverflowOrderQuantity; public MtbAart getMtbAart() { @@ -112,6 +116,24 @@ public class DialogInputQuantityV2DTO { return this; } + public String getPartitaMag() { + return partitaMag; + } + + public DialogInputQuantityV2DTO setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public Date getDataScad() { + return dataScad; + } + + public DialogInputQuantityV2DTO setDataScad(Date dataScad) { + this.dataScad = dataScad; + return this; + } + public boolean isCanOverflowOrderQuantity() { return canOverflowOrderQuantity; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ResultDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ResultDTO.java new file mode 100644 index 00000000..bc36c5db --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ResultDTO.java @@ -0,0 +1,59 @@ +package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; + +import java.math.BigDecimal; +import java.util.Date; + +public class DialogInputQuantityV2ResultDTO { + + private String partitaMag; + private Date dataScad; + + private BigDecimal numCnf; + private BigDecimal qtaCnf; + private BigDecimal qtaTot; + + public String getPartitaMag() { + return partitaMag; + } + + public DialogInputQuantityV2ResultDTO setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + return this; + } + + public Date getDataScad() { + return dataScad; + } + + public DialogInputQuantityV2ResultDTO setDataScad(Date dataScad) { + this.dataScad = dataScad; + return this; + } + + public BigDecimal getNumCnf() { + return numCnf; + } + + public DialogInputQuantityV2ResultDTO setNumCnf(BigDecimal numCnf) { + this.numCnf = numCnf; + return this; + } + + public BigDecimal getQtaCnf() { + return qtaCnf; + } + + public DialogInputQuantityV2ResultDTO setQtaCnf(BigDecimal qtaCnf) { + this.qtaCnf = qtaCnf; + return this; + } + + public BigDecimal getQtaTot() { + return qtaTot; + } + + public DialogInputQuantityV2ResultDTO setQtaTot(BigDecimal qtaTot) { + this.qtaTot = qtaTot; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java index 9d229305..e98ceb0e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2ViewModel.java @@ -3,6 +3,7 @@ package it.integry.integrywmsnative.view.dialogs.input_quantity_v2; import androidx.databinding.ObservableField; import java.math.BigDecimal; +import java.util.Date; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; @@ -28,6 +29,9 @@ public class DialogInputQuantityV2ViewModel { private BigDecimal internalQtaCnf; private BigDecimal internalQtaTot; + private String internalPartitaMag; + private Date internalDataScad; + private boolean canOverflowOrderQuantity; private Listener mListener; @@ -52,6 +56,13 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onDataChanged(); } + public String getPartitaMag() { + return internalPartitaMag; + } + + public Date getDataScad() { + return internalDataScad; + } public BigDecimal getNumCnf() { return this.internalNumCnf; @@ -120,6 +131,15 @@ public class DialogInputQuantityV2ViewModel { return this; } + public DialogInputQuantityV2ViewModel setPartitaMag(String internalPartitaMag) { + this.internalPartitaMag = internalPartitaMag; + return this; + } + + public DialogInputQuantityV2ViewModel setDataScad(Date internalDataScad) { + this.internalDataScad = internalDataScad; + return this; + } public void setNumCnf(BigDecimal newValue) { this.internalNumCnf = newValue; @@ -169,6 +189,16 @@ public class DialogInputQuantityV2ViewModel { this.mListener.onDataChanged(); } + public DialogInputQuantityV2ResultDTO getResult() { + return new DialogInputQuantityV2ResultDTO() + .setPartitaMag(this.internalPartitaMag) + .setDataScad(this.internalDataScad) + .setNumCnf(this.internalNumCnf) + .setQtaCnf(this.internalQtaCnf) + .setQtaTot(this.internalQtaTot); + + } + public void setListener(Listener listener) { this.mListener = listener; } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java index e7e0f8c5..7bdd97f6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLU.java @@ -4,7 +4,6 @@ import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; -import android.os.Build; import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; @@ -13,10 +12,7 @@ import androidx.databinding.DataBindingUtil; import com.annimon.stream.Stream; -import java.util.Date; - import it.integry.barcode_base_android_library.model.BarcodeScanDTO; -import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; @@ -161,7 +157,7 @@ public class DialogScanOrCreateLU { BarcodeManager.enable(); DialogCommon.showNoULFound(mContext, null); } else if (mtbColtList.size() == 1) { - ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), mShouldCheckResiduo, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getByTestataStatic(mtbColtList.get(0), mShouldCheckResiduo, false, mtbColt -> { sendMtbColt(mtbColt, progressDialog); }, ex -> { UtilityExceptions.defaultException(mContext, ex, progressDialog); @@ -185,7 +181,7 @@ public class DialogScanOrCreateLU { private void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, Dialog progressDialog) { - ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), mShouldCheckResiduo, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(barcodeScanDTO.getStringValue(), mShouldCheckResiduo, false, mtbColt -> { if(mtbColt == null) { @@ -229,7 +225,7 @@ public class DialogScanOrCreateLU { if(ean128Model != null && !UtilityString.isNullOrEmpty(ean128Model.Sscc)) { - ColliMagazzinoRESTConsumer.getBySSCC(ean128Model.Sscc, mShouldCheckResiduo, false, mtbColt -> { + ColliMagazzinoRESTConsumer.getBySSCCStatic(ean128Model.Sscc, mShouldCheckResiduo, false, mtbColt -> { if(mtbColt != null) { diff --git a/app/src/main/res/layout/activity_spedizione.xml b/app/src/main/res/layout/activity_spedizione.xml index 9a50d023..90548109 100644 --- a/app/src/main/res/layout/activity_spedizione.xml +++ b/app/src/main/res/layout/activity_spedizione.xml @@ -3,9 +3,11 @@ + + - - - + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - + - + android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - + android:background="@color/full_white" + android:minHeight="?attr/actionBarSize"> - + android:layout_height="?attr/actionBarSize" + app:layout_collapseMode="pin"> - - - - - - - + android:layout_height="50dp" + android:layout_gravity="end" + android:adjustViewBounds="true" + android:background="@drawable/ripple_effect" + android:src="@drawable/ic_add_24dp" + android:tint="@color/colorPrimaryGray" + app:visibility="@{spedizioneView.addExtraItemsEnabled}" /> - - - - + android:layout_height="50dp" + android:layout_gravity="end" + android:adjustViewBounds="true" + android:background="@drawable/ripple_effect" + android:onClick="@{() -> spedizioneView.startManualSearch()}" + android:src="@drawable/ic_black_barcode" + android:tint="@color/colorPrimaryGray" + android:visibility="@{BuildConfig.DEBUG ? View.VISIBLE : View.GONE}" /> - + - + - - - - - - - - - - - - - + + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + app:el_duration="400" + app:el_expanded="false"> + + + + + + + + + + + + + + + + + + + + + - - - + - + - + - + - + + + + + + + + + + + + + + + + + + - - + - + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml new file mode 100644 index 00000000..bb4934ed --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content.xml @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml b/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml new file mode 100644 index 00000000..5db8f34f --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_quantity_v2.xml b/app/src/main/res/layout/dialog_input_quantity_v2.xml index 875e3bf6..46717e61 100644 --- a/app/src/main/res/layout/dialog_input_quantity_v2.xml +++ b/app/src/main/res/layout/dialog_input_quantity_v2.xml @@ -16,6 +16,7 @@ + @@ -366,6 +367,57 @@ android:layout_marginBottom="8dp" android:background="@color/gray_400" /> + + + + + + + + + + + + + + + + + + + android:inputType="number" + app:binding="@{view.currentNumCnf}" /> @@ -424,11 +476,11 @@ + android:inputType="numberDecimal" + app:binding="@{view.currentQtaTot}" /> @@ -450,6 +502,7 @@ android:layout_marginStart="0dp" android:layout_marginEnd="4dp" android:layout_weight="0.4" + android:onClick="@{() -> view.saveAndCloseLU()}" android:text="@string/action_close_ul" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -464,6 +517,7 @@ android:layout_marginStart="4dp" android:layout_marginEnd="4dp" android:layout_weight="0.3" + android:onClick="@{() -> view.dismiss()}" android:paddingEnd="3dp" app:icon="@drawable/ic_close_24dp" app:iconGravity="textStart" @@ -478,6 +532,7 @@ android:layout_marginStart="4dp" android:layout_marginEnd="0dp" android:layout_weight="0.3" + android:onClick="@{() -> view.save()}" android:paddingEnd="3dp" app:icon="@drawable/ic_save_24" app:iconGravity="textStart" diff --git a/app/src/main/res/layout/fragment_contenuto_bancale.xml b/app/src/main/res/layout/fragment_contenuto_bancale.xml deleted file mode 100644 index 29e26859..00000000 --- a/app/src/main/res/layout/fragment_contenuto_bancale.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/barcode_kaiteki/build.gradle b/barcode_kaiteki/build.gradle index 57d6d637..7ecaf43f 100644 --- a/barcode_kaiteki/build.gradle +++ b/barcode_kaiteki/build.gradle @@ -30,7 +30,7 @@ dependencies { implementation 'androidx.core:core-ktx:1.1.0' implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4' implementation 'com.google.android.material:material:1.1.0-alpha10' api 'androidx.camera:camera-core:1.0.0-alpha03' diff --git a/build.gradle b/build.gradle index 35693719..4ffe709e 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.1' + classpath 'com.android.tools.build:gradle:3.6.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.3' classpath 'com.google.firebase:perf-plugin:1.3.1' diff --git a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 5664ef81..9ecb96df 100644 --- a/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic__base/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -17,7 +17,7 @@ public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 8c7526b9..6bcf1234 100644 --- a/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_frudis/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -17,7 +17,7 @@ public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in Frudis"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index d2ed2a1e..a7025db9 100644 --- a/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_ime/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -17,7 +17,7 @@ public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index 656986ff..f238abcb 100644 --- a/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_saporiveri/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -16,7 +16,7 @@ public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { // UtilityToast.showToast("Avviato metodo in BaseFeature"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index fa517094..7ad00a70 100644 --- a/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_saporiveri_pv/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -16,7 +16,7 @@ public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { //UtilityToast.showToast("Avviato metodo in SaporiVeriPv"); ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(), diff --git a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java index e3daa375..51651754 100644 --- a/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java +++ b/dynamic_vgalimenti/src/main/java/it/integry/wms/dynamic_customization/extensions/OrdiniVendita.java @@ -17,7 +17,7 @@ import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; public class OrdiniVendita implements IOrdiniVendita { @Override - public void distribuisciCollo(Dialog progress, MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { + public void distribuisciCollo(MtbColt mtbColt, List testateOrdini, RunnableArgs> onComplete, RunnableArgs onFailed) { String codMdepOrder = testateOrdini.get(0).getCodMdep();