diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9c827172..73effea7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
-
+
{
if (mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0) {
- List codMarts = Stream.of(mtbColt.getMtbColr())
- .map(MtbColr::getCodMart)
- .withoutNulls()
- .distinct()
- .toList();
-
- ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
-
- if (arts != null && arts.size() > 0) {
- for (MtbColr mtbColr : mtbColt.getMtbColr()) {
-
- MtbAart foundMtbAart = null;
-
- List mtbAartStream = Stream.of(arts)
- .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
-
- if (mtbAartStream != null && mtbAartStream.size() > 0) {
- foundMtbAart = mtbAartStream.get(0);
- }
-
- mtbColr.setMtbAart(foundMtbAart);
- mtbColr.setGestione(mtbColt.getGestione());
- mtbColr.setSerCollo(mtbColt.getSerCollo());
- mtbColr.setNumCollo(mtbColt.getNumCollo());
- mtbColr.setDataCollo(mtbColt.getDataColloS());
- }
-
-
- onComplete.run(mtbColt);
- }
-
- }, onFailed);
-
+ List mtbColtList = new ArrayList<>();
+ mtbColtList.add(mtbColt);
+ fillMtbAartsOfMtbColts(mtbColtList, mtbColts -> onComplete.run(mtbColts.get(0)), onFailed);
} else {
onComplete.run(mtbColt);
}
@@ -470,6 +425,47 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
+
+ public static void fillMtbAartsOfMtbColts(List mtbColts, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ List codMarts = new ArrayList<>();
+
+ for (MtbColt mtbColt : mtbColts) {
+ codMarts.addAll(Stream.of(mtbColt.getMtbColr())
+ .map(MtbColr::getCodMart)
+ .withoutNulls()
+ .distinct()
+ .toList());
+ }
+
+
+ ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
+
+ if (arts != null && arts.size() > 0) {
+ for (MtbColt mtbColt : mtbColts) {
+ for (MtbColr mtbColr : mtbColt.getMtbColr()) {
+
+ MtbAart foundMtbAart = null;
+
+ List mtbAartStream = Stream.of(arts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
+
+ if (mtbAartStream != null && mtbAartStream.size() > 0) {
+ foundMtbAart = mtbAartStream.get(0);
+ }
+
+ mtbColr.setMtbAart(foundMtbAart);
+ mtbColr.setGestione(mtbColt.getGestione());
+ mtbColr.setSerCollo(mtbColt.getSerCollo());
+ mtbColr.setNumCollo(mtbColt.getNumCollo());
+ mtbColr.setDataCollo(mtbColt.getDataColloS());
+ }
+ }
+ }
+
+ onComplete.run(mtbColts);
+ }, onFailed);
+ }
+
public static void getMultipleByTestate(List testate, boolean onlyResiduo, RunnableArgs> onComplete, RunnableArgs onFailed) {
ArrayList resultMtbColt = new ArrayList<>();
cyclicGetMultipleByTestate(testate.iterator(), onlyResiduo, resultMtbColt, () -> {
@@ -631,4 +627,23 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}
+
+
+ public static void retrieveBasketColli(RunnableArgs> onComplete, RunnableArgs onFailed) {
+ ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
+ colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback>>() {
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ analyzeAnswer(response, "GetBySSCC", mtbColts -> {
+ fillMtbAartsOfMtbColts(mtbColts, onComplete, onFailed);
+ }, onFailed);
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ if(onFailed != null) onFailed.run(new Exception(t));
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
index e5471436..025b83d1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
@@ -2,11 +2,14 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
+import java.util.List;
+
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.MtbColt;
import retrofit2.Call;
import retrofit2.http.Body;
+import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
@@ -18,4 +21,7 @@ public interface ColliMagazzinoRESTConsumerService {
@POST("getColloByBarcode")
Call> getColloByBarcode(@Query("codBarreCollo") String sscc, @Query("onlyResiduo") boolean onlyResiduo, @Query("throwExcIfNull") boolean throwExcIfNull);
+ @GET("getColliInBasket")
+ Call>> getColliInBasket(@Query("codMdep") String codMdep);
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
index 27d2b48b..03c8554c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java
@@ -22,20 +22,125 @@ public class SettingsModel {
public String codAzienda;
public String host;
public int port;
+
+ public String getCodAzienda() {
+ return codAzienda;
+ }
+
+ public Server setCodAzienda(String codAzienda) {
+ this.codAzienda = codAzienda;
+ return this;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public Server setHost(String host) {
+ this.host = host;
+ return this;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public Server setPort(int port) {
+ this.port = port;
+ return this;
+ }
}
public static class User {
public String username;
public String password;
public String fullname;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public User setUsername(String username) {
+ this.username = username;
+ return this;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public User setPassword(String password) {
+ this.password = password;
+ return this;
+ }
+
+ public String getFullname() {
+ return fullname;
+ }
+
+ public User setFullname(String fullname) {
+ this.fullname = fullname;
+ return this;
+ }
}
public static class UserSession {
public String profileDB;
public AvailableCodMdepsDTO depo;
public Integer defaultOrdinamentoPickingAccettazione = 0;
-// public String codMdep;
+
+ public String getProfileDB() {
+ return profileDB;
+ }
+
+ public UserSession setProfileDB(String profileDB) {
+ this.profileDB = profileDB;
+ return this;
+ }
+
+ public AvailableCodMdepsDTO getDepo() {
+ return depo;
+ }
+
+ public UserSession setDepo(AvailableCodMdepsDTO depo) {
+ this.depo = depo;
+ return this;
+ }
+
+ public Integer getDefaultOrdinamentoPickingAccettazione() {
+ return defaultOrdinamentoPickingAccettazione;
+ }
+
+ public UserSession setDefaultOrdinamentoPickingAccettazione(Integer defaultOrdinamentoPickingAccettazione) {
+ this.defaultOrdinamentoPickingAccettazione = defaultOrdinamentoPickingAccettazione;
+ return this;
+ }
}
+ public Server getServer() {
+ return server;
+ }
+ public SettingsModel setServer(Server server) {
+ this.server = server;
+ return this;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public SettingsModel setUser(User user) {
+ this.user = user;
+ return this;
+ }
+
+ public UserSession getUserSession() {
+ return userSession;
+ }
+
+ public SettingsModel setUserSession(UserSession userSession) {
+ this.userSession = userSession;
+ return this;
+ }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
index fe963a00..571f2c1f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/contenuto_bancale/core/ContenutoBancaleListAdapter.java
@@ -74,12 +74,25 @@ public class ContenutoBancaleListAdapter extends RecyclerView.Adapter {
if(mOnItemClickListener != null) {
- mOnItemClickListener.onItemClick(item, position);
+ mOnItemClickListener.onItemClick(mtbColr, position);
}
});
}
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 15f12385..e0d97260 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
@@ -288,7 +288,7 @@ public class ProdRecuperoMaterialeViewModel {
};
if(sourceMtbColt != null) saveRunnable.run(sourceMtbColt);
- else DialogScanOrCreateLU.make(mContext, false, false, saveRunnable).show();
+ else DialogScanOrCreateLU.make(mContext, true, false, saveRunnable).show();
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
index 99a30c7c..43d4dca2 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/viewmodel/ProdVersamentoMaterialViewModel.java
@@ -86,7 +86,7 @@ public class ProdVersamentoMaterialViewModel {
public void openLU() {
- DialogScanOrCreateLU.make(mContext, true, true, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, false, false, true, false, mtbColt -> {
if (mtbColt == null) {
((IPoppableActivity) mContext).pop();
} else if ((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)) {
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
index 760af892..6d574a10 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/core/adapter/RettificaGiacenzeMainListAdapter.java
@@ -67,10 +67,8 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter
}
public void openLU() {
- DialogScanOrCreateLU.make(mContext, false, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, true, false, mtbColt -> {
if(mtbColt == null) {
((IPoppableActivity)mContext).pop();
} else {
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 cceb9441..56f08ae9 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
@@ -68,7 +68,7 @@ public class VersamentoMerceViewModel {
}
public void openLU() {
- DialogScanOrCreateLU.make(mContext, true, false, mtbColt -> {
+ DialogScanOrCreateLU.make(mContext, true, false, true, false, mtbColt -> {
if(mtbColt == null) {
((IPoppableActivity)mContext).pop();
} else if((mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColt.getSegno().equals(+1)){
diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java b/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
index 3298829d..200d73aa 100644
--- a/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
+++ b/app/src/main/java/it/integry/integrywmsnative/ui/DeactivatableViewPager.java
@@ -1,21 +1,37 @@
package it.integry.integrywmsnative.ui;
+import android.animation.LayoutTransition;
import android.content.Context;
import androidx.viewpager.widget.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.Interpolator;
+import android.view.animation.Transformation;
-public class DeactivatableViewPager extends ViewPager {
+public class DeactivatableViewPager extends ViewPager implements Animation.AnimationListener {
private View mCurrentView;
+ private PagerAnimation mAnimation = new PagerAnimation();
+ private boolean mAnimStarted = false;
+ private long mAnimDuration = 100;
+
public DeactivatableViewPager(Context context) {
super(context);
+ mAnimation.setAnimationListener(this);
+
+ setLayerType(View.LAYER_TYPE_HARDWARE, null);
+// getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
public DeactivatableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
+ mAnimation.setAnimationListener(this);
+
+ setLayerType(View.LAYER_TYPE_HARDWARE, null);
+// getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
@Override
@@ -31,30 +47,113 @@ public class DeactivatableViewPager extends ViewPager {
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- if (mCurrentView == null) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- return;
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+ if (!mAnimStarted && mCurrentView != null) {
+ mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+ int height = mCurrentView.getMeasuredHeight();
+
+ if (height < getMinimumHeight()) {
+ height = getMinimumHeight();
+ }
+
+ int newHeight = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
+ if (/*getLayoutParams().height != 0 && */heightMeasureSpec != height && height > 0 && height < 100000) {
+// animate()
+// .y(height)
+// .withLayer()
+// .start();
+// mAnimation.setDimensions(height, getLayoutParams().height);
+// mAnimation.setDuration(mAnimDuration);
+// startAnimation(mAnimation);
+// mAnimStarted = true;
+ } else {
+ }
+ heightMeasureSpec = newHeight;
}
- int height = 0;
- mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
- int h = mCurrentView.getMeasuredHeight();
- if (h > height) height = h;
- heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
- public void measureCurrentView(View currentView) {
+ /**
+ * This method should be called when the ViewPager changes to another page. For best results
+ * call this method in the adapter's setPrimary
+ *
+ * @param currentView PagerAdapter item view
+ */
+ public void onPageChanged(View currentView) {
mCurrentView = currentView;
requestLayout();
}
- public int measureFragment(View view) {
- if (view == null)
- return 0;
- view.measure(0, 0);
- return view.getMeasuredHeight();
+ /**
+ * Custom animation to animate the change of height in the
+ */
+ private class PagerAnimation extends Animation {
+ private int targetHeight;
+ private int currentHeight;
+ private int heightChange;
+
+ /**
+ * Set the dimensions for the animation.
+ *
+ * @param targetHeight View's target height
+ * @param currentHeight View's current height
+ */
+ void setDimensions(int targetHeight, int currentHeight) {
+ this.targetHeight = targetHeight;
+ this.currentHeight = currentHeight;
+ this.heightChange = targetHeight - currentHeight;
+ }
+
+ @Override
+ protected void applyTransformation(float interpolatedTime, Transformation t) {
+ if (interpolatedTime >= 1) {
+ getLayoutParams().height = targetHeight;
+ } else {
+ int stepHeight = (int) (heightChange * interpolatedTime);
+ getLayoutParams().height = currentHeight + stepHeight;
+ }
+ requestLayout();
+ }
+
+ @Override
+ public boolean willChangeBounds() {
+ return true;
+ }
+ }
+
+ /**
+ * Sets the duration of the animation.
+ *
+ * @param duration Duration in ms
+ */
+ public void setAnimationDuration(long duration) {
+ mAnimDuration = duration;
+ }
+
+ /**
+ * Sets the interpolator used by the animation.
+ *
+ * @param interpolator {@link Interpolator}
+ */
+ public void setAnimationInterpolator(Interpolator interpolator) {
+ mAnimation.setInterpolator(interpolator);
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ mAnimStarted = true;
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ mAnimStarted = false;
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
index 184f454b..bc7c418d 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_cliente/DialogAskClienteAdapter.java
@@ -102,7 +102,7 @@ public class DialogAskClienteAdapter extends PagerAdapter implements ViewPager.O
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position != lastPage) {
- viewPager.measureCurrentView(mDatasetViews.get(position).getKey().getRoot());
+ viewPager.onPageChanged(mDatasetViews.get(position).getKey().getRoot());
mDatasetViews.get(position).getValue().onShow();
lastPage = position;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
index 9698bf7d..d41ff95b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLU.java
@@ -27,6 +27,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
@@ -84,6 +85,8 @@ public class DialogAskPositionOfLU {
// mDialog.setCancelable(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ UtilityDialog.setTo90PercentSize(mContext, mDialog);
+
mDialog.setOnShowListener(dialog -> {
((AppCompatTextView) adapter.getPage(0).findViewById(R.id.description_text)).setText(mCheckForLineaProd ? R.string.ask_production_line_of_lu_message : R.string.ask_position_of_lu_message);
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
index 0bcb48d4..939ad643 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUAdapter.java
@@ -37,7 +37,7 @@ public class DialogAskPositionOfLUAdapter extends PagerAdapter {
this.mDatasetViews.add(view);
DeactivatableViewPager pager = (DeactivatableViewPager) container;
- pager.measureCurrentView(view);
+ pager.onPageChanged(view);
return view;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java
new file mode 100644
index 00000000..dbf5b69c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java
@@ -0,0 +1,88 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.model.MtbColt;
+import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityDialog;
+import it.integry.integrywmsnative.databinding.DialogBasketLuBinding;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page1ViewModel;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.DialogAskCliente_Page2ViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ListAdapter;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1.DialogBasketLU_Page1_ViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2.DialogBasketLU_Page2_ViewModel;
+
+public class DialogBasketLU {
+
+ private Context mContext;
+ private Dialog mDialog;
+ private DialogBasketLuBinding mBinding;
+
+ private RunnableArgs mOnComplete;
+
+ public static Dialog make(final Context context, RunnableArgs onComplete) {
+ return new DialogBasketLU(context, onComplete).mDialog;
+ }
+
+
+ private DialogBasketLU(Context context, RunnableArgs onComplete) {
+ mContext = context;
+ mOnComplete = onComplete;
+
+ LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_basket_lu, null, false);
+
+ mDialog = new Dialog(context);
+
+ mDialog.setContentView(mBinding.getRoot());
+
+ mDialog.setCanceledOnTouchOutside(false);
+ mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+
+ UtilityDialog.setTo90PercentSize(context, mDialog);
+
+ this.initViewPager();
+ }
+
+ private void initViewPager() {
+ List> views = new ArrayList<>();
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page1, DialogBasketLU_Page1_ViewModel.class));
+ views.add(new AbstractMap.SimpleEntry<>(R.layout.dialog_basket_lu__page2, DialogBasketLU_Page2_ViewModel.class));
+
+ DialogBasketLU_ViewPagerAdapter viewPagerAdapter = new DialogBasketLU_ViewPagerAdapter(mContext, views);
+ mBinding.viewpager.setAdapter(viewPagerAdapter);
+ mBinding.viewpager.beginFakeDrag();
+ mBinding.viewpager.addOnPageChangeListener(viewPagerAdapter);
+ mBinding.viewpager.setEnabled(false);
+
+
+ mDialog.setOnShowListener(v -> {
+ viewPagerAdapter.getViewModel(R.layout.dialog_basket_lu__page2).setOnConfirmClickListener(data -> {
+ MtbColt mtbColt = (MtbColt) data;
+
+ mOnComplete.run(mtbColt);
+ mDialog.dismiss();
+ });
+
+ });
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java
new file mode 100644
index 00000000..bf4e2edc
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java
@@ -0,0 +1,131 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.databinding.ViewDataBinding;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import it.integry.integrywmsnative.BR;
+import it.integry.integrywmsnative.ui.DeactivatableViewPager;
+import it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel;
+import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel;
+
+public class DialogBasketLU_ViewPagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
+
+ private Context mContext;
+
+ private List> mDatasetLayout;
+ private List> mDatasetViews;
+
+ private DeactivatableViewPager viewPager;
+
+ public DialogBasketLU_ViewPagerAdapter(Context context, List> datasetLayouts) {
+ this.mContext = context;
+ this.mDatasetLayout = datasetLayouts;
+ this.mDatasetViews = new ArrayList<>();
+ }
+
+ @Override
+ public View instantiateItem(ViewGroup container, int position) {
+ viewPager = (DeactivatableViewPager) container;
+
+ Integer viewId = mDatasetLayout.get(position).getKey();
+
+
+ LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
+ ViewDataBinding mBinding = DataBindingUtil.inflate(inflater, viewId, null, false);
+
+ Class viewModelClass = mDatasetLayout.get(position).getValue();
+ IDialogBasketLUViewModel viewModel = null;
+
+ try {
+ viewModel = (IDialogBasketLUViewModel) viewModelClass.newInstance();
+ viewModel.setBinding(mBinding);
+ viewModel.setContext(mContext);
+ viewModel.setOnDone(data -> {
+ int newIndex = viewPager.getCurrentItem() + 1;
+
+ if(newIndex <= getCount()) {
+ this.mDatasetViews.get(newIndex).getValue().setInputData(data);
+ this.mDatasetViews.get(newIndex).getValue().onPreShow();
+ viewPager.setCurrentItem(newIndex, true);
+ }
+ });
+ viewModel.setOnPrev(() -> {
+ int newIndex = viewPager.getCurrentItem() - 1;
+
+ if(newIndex >= 0) {
+ viewPager.setCurrentItem(newIndex, true);
+ }
+ });
+ } catch (IllegalAccessException | InstantiationException e) {
+ e.printStackTrace();
+ }
+
+ mBinding.setVariable(it.integry.integrywmsnative.BR.viewmodel, viewModel);
+
+ container.addView(mBinding.getRoot());
+ this.mDatasetViews.add(new AbstractMap.SimpleEntry<>(mBinding, viewModel));
+
+ return mBinding.getRoot();
+ }
+
+ @Override
+ public void destroyItem(ViewGroup container, int position, Object object) {
+ container.removeView((LinearLayout)object);
+ }
+
+ @Override
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
+ return view == o;
+ }
+
+
+ @Override
+ public int getCount() {
+ return mDatasetLayout.size();
+ }
+
+ public IDialogBasketLUViewModel getViewModel(@NonNull int layoutID) {
+ for(int i = 0; i < mDatasetLayout.size(); i++) {
+ if(mDatasetLayout.get(i).getKey() == layoutID) {
+ return this.mDatasetViews.get(i).getValue();
+ }
+ }
+ return null;
+ }
+
+ private int lastPage = -1;
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ if(position != lastPage) {
+ mDatasetViews.get(position).getValue().onShow();
+ viewPager.onPageChanged(mDatasetViews.get(position).getKey().getRoot());
+ lastPage = position;
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ // mDatasetViews.get(position).getValue().onShow();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java
new file mode 100644
index 00000000..da560f4e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java
@@ -0,0 +1,30 @@
+package it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces;
+
+
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+
+public abstract class DialogBasketLU_BaseViewModel implements IDialogBasketLUViewModel {
+
+ private Runnable mOnPrev;
+ private RunnableArgs