From ee30b914ad805934e2fee839f7a66c5e7eb0c787 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 8 Jan 2020 17:47:54 +0100 Subject: [PATCH] Completata implementazione Basket colli --- app/src/main/AndroidManifest.xml | 2 +- .../consumers/ColliMagazzinoRESTConsumer.java | 113 ++++---- .../ColliMagazzinoRESTConsumerService.java | 6 + .../core/settings/SettingsModel.java | 107 ++++++- .../core/ContenutoBancaleListAdapter.java | 19 +- .../ProdRecuperoMaterialeViewModel.java | 2 +- .../ProdVersamentoMaterialViewModel.java | 2 +- .../RettificaGiacenzeMainListAdapter.java | 2 - .../viewmodel/RettificaGiacenzeViewModel.java | 2 +- .../viewmodel/VersamentoMerceViewModel.java | 2 +- .../ui/DeactivatableViewPager.java | 129 ++++++++- .../ask_cliente/DialogAskClienteAdapter.java | 2 +- .../DialogAskPositionOfLU.java | 3 + .../DialogAskPositionOfLUAdapter.java | 2 +- .../dialogs/basket_lu/DialogBasketLU.java | 88 ++++++ .../DialogBasketLU_ViewPagerAdapter.java | 131 +++++++++ .../DialogBasketLU_BaseViewModel.java | 30 ++ .../interfaces/IDialogBasketLUViewModel.java | 28 ++ .../DialogBasketLU_Page1_ListAdapter.java | 76 +++++ .../page1/DialogBasketLU_Page1_ViewModel.java | 90 ++++++ .../DialogBasketLU_Page2_ListAdapter.java | 83 ++++++ .../page2/DialogBasketLU_Page2_ViewModel.java | 90 ++++++ .../DialogScanOrCreateLU.java | 24 +- app/src/main/res/drawable/ic_black_back.png | Bin 0 -> 490 bytes .../res/drawable/ic_black_shopping_cart.png | Bin 0 -> 1242 bytes app/src/main/res/drawable/ic_black_tick.png | Bin 0 -> 484 bytes .../res/layout/dialog_ask_should_print.xml | 269 +++++++++--------- app/src/main/res/layout/dialog_basket_lu.xml | 52 ++++ .../dialog_basket_lu__mtb_colr_model.xml | 139 +++++++++ .../dialog_basket_lu__mtb_colt_model.xml | 104 +++++++ .../res/layout/dialog_basket_lu__page1.xml | 72 +++++ .../res/layout/dialog_basket_lu__page2.xml | 121 ++++++++ .../res/layout/dialog_scan_or_create_lu.xml | 106 +++++-- .../res/layout/lista_bancali_list_model.xml | 4 +- .../lista_contenuto_bancale_list_model.xml | 67 +++-- app/src/main/res/values-it/strings.xml | 4 + app/src/main/res/values/strings.xml | 7 +- 37 files changed, 1704 insertions(+), 274 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/DialogBasketLU_ViewPagerAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/DialogBasketLU_BaseViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/IDialogBasketLUViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ListAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java create mode 100644 app/src/main/res/drawable/ic_black_back.png create mode 100644 app/src/main/res/drawable/ic_black_shopping_cart.png create mode 100644 app/src/main/res/drawable/ic_black_tick.png create mode 100644 app/src/main/res/layout/dialog_basket_lu.xml create mode 100644 app/src/main/res/layout/dialog_basket_lu__mtb_colr_model.xml create mode 100644 app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml create mode 100644 app/src/main/res/layout/dialog_basket_lu__page1.xml create mode 100644 app/src/main/res/layout/dialog_basket_lu__page2.xml 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 mOnDone; + + @Override + public void setOnPrev(Runnable onPrev) { + this.mOnPrev = onPrev; + } + + @Override + public void setOnDone(RunnableArgs onDone) { + this.mOnDone = onDone; + } + + + protected void done(Object data) { + if(this.mOnDone != null) mOnDone.run(data); + } + + protected void previous() { + mOnPrev.run(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/IDialogBasketLUViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/IDialogBasketLUViewModel.java new file mode 100644 index 00000000..4e507fca --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/interfaces/IDialogBasketLUViewModel.java @@ -0,0 +1,28 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces; + +import android.content.Context; +import androidx.databinding.ViewDataBinding; + +import it.integry.integrywmsnative.core.expansion.RunnableArgs; + +public interface IDialogBasketLUViewModel { + + void setContext(Context context); + + void setBinding(ViewDataBinding binding); + + void setInputData(Object data); + + void onShow(); + + void onPreShow(); + + void setOnConfirmClickListener(RunnableArgs onConfirm); + + void setOnAbortClickListener(Runnable onAbort); + + void setOnPrev(Runnable onPrev); + + void setOnDone(RunnableArgs onDone); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ListAdapter.java new file mode 100644 index 00000000..5e044ac5 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ListAdapter.java @@ -0,0 +1,76 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.DialogBasketLuMtbColtModelBinding; + +public class DialogBasketLU_Page1_ListAdapter extends RecyclerView.Adapter { + + protected Context mContext; + + private List mDataset; + private IRecyclerItemClicked mOnItemClickListener; + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected DialogBasketLuMtbColtModelBinding mViewDataBinding; + + + public ViewHolder(DialogBasketLuMtbColtModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbColt mtbColt) { + mViewDataBinding.setMtbColt(mtbColt); + mViewDataBinding.executePendingBindings(); + } + } + + public DialogBasketLU_Page1_ListAdapter(Context context, List myDataset, IRecyclerItemClicked onItemClickListener) { + mContext = context; + mDataset = myDataset; + mOnItemClickListener = onItemClickListener; + } + + @Override + public DialogBasketLU_Page1_ListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + DialogBasketLuMtbColtModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_basket_lu__mtb_colt_model, parent, false); + + return new ViewHolder(viewDataBinding); + } + + @Override + public void onBindViewHolder(DialogBasketLU_Page1_ListAdapter.ViewHolder holder, int position) { + MtbColt item = mDataset.get(position); + holder.bind(item); + + holder.mViewDataBinding.getRoot().setOnClickListener(x -> { + if(mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(item, position); + } + }); + } + + @Override + public void onViewRecycled(DialogBasketLU_Page1_ListAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java new file mode 100644 index 00000000..9cc6d8ed --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page1/DialogBasketLU_Page1_ViewModel.java @@ -0,0 +1,90 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page1; + +import android.content.Context; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.databinding.ViewDataBinding; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; + +import java.util.List; + +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.databinding.DialogBasketLuBinding; +import it.integry.integrywmsnative.databinding.DialogBasketLuPage1Binding; +import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel; +import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; + +public class DialogBasketLU_Page1_ViewModel extends DialogBasketLU_BaseViewModel implements IDialogBasketLUViewModel { + + private Context mContext; + private DialogBasketLuPage1Binding mBinding; + + private List availableMtbColts; + private DialogBasketLU_Page1_ListAdapter mAdapter; + + @Override + public void setContext(Context context) { + this.mContext = context; + } + + @Override + public void setBinding(ViewDataBinding binding) { + this.mBinding = (DialogBasketLuPage1Binding) binding; + } + + @Override + public void setInputData(Object data) { + + } + + @Override + public void onShow() { + ColliMagazzinoRESTConsumer.retrieveBasketColli(mtbColts -> { + availableMtbColts = mtbColts; + if(mtbColts != null && mtbColts.size() > 0) initRecyclerView(availableMtbColts); + + mBinding.emptyView.setVisibility(mtbColts != null && mtbColts.size() > 0 ? View.GONE : View.VISIBLE); + }, ex -> { + mBinding.emptyView.setVisibility(View.VISIBLE); + }); + } + + @Override + public void onPreShow() { + } + + @Override + public void setOnConfirmClickListener(RunnableArgs onConfirm) { + + } + + @Override + public void setOnAbortClickListener(Runnable onAbort) { + + } + + + + + + private void initRecyclerView(List dataset) { + mBinding.dialogBasketLuMainList.setNestedScrollingEnabled(false); + mBinding.dialogBasketLuMainList.setHasFixedSize(true); + mBinding.dialogBasketLuMainList.setLayoutManager(new LinearLayoutManager(mContext)); + + DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); + mBinding.dialogBasketLuMainList.addItemDecoration(itemDecorator); + + mAdapter = new DialogBasketLU_Page1_ListAdapter(mContext, dataset, (item, position) -> { + this.done(item); + }); + + mBinding.dialogBasketLuMainList.setAdapter(mAdapter); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java new file mode 100644 index 00000000..131eb1e4 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ListAdapter.java @@ -0,0 +1,83 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityNumber; +import it.integry.integrywmsnative.core.utility.UtilityResources; +import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.databinding.DialogBasketLuMtbColrModelBinding; + +public class DialogBasketLU_Page2_ListAdapter extends RecyclerView.Adapter{ + + protected Context mContext; + + private List mDataset; + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected DialogBasketLuMtbColrModelBinding mViewDataBinding; + + + public ViewHolder(DialogBasketLuMtbColrModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbColr mtbColt) { + mViewDataBinding.setMtbColr(mtbColt); + mViewDataBinding.executePendingBindings(); + } + } + + public DialogBasketLU_Page2_ListAdapter(Context context, List myDataset) { + mContext = context; + mDataset = myDataset; + } + + @Override + public DialogBasketLU_Page2_ListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + DialogBasketLuMtbColrModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_basket_lu__mtb_colr_model, parent, false); + + return new ViewHolder(viewDataBinding); + } + + @Override + public void onBindViewHolder(DialogBasketLU_Page2_ListAdapter.ViewHolder holder, int position) { + MtbColr mtbColr = mDataset.get(position); + holder.bind(mtbColr); + + //Setting qty with unt_mis + if(!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissa())){ + String text = UtilityNumber.decimalToString(mtbColr.getQtaCol()); + + if(mtbColr.getMtbAart() != null) { + text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : ""; + } + + holder.mViewDataBinding.qtaTextview.setText(text); + } else { + holder.mViewDataBinding.qtaTextview.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + "\n" + UtilityResources.getString(R.string.unt_mis_col)); + } + } + + @Override + public void onViewRecycled(DialogBasketLU_Page2_ListAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java new file mode 100644 index 00000000..ee388813 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/basket_lu/pages/page2/DialogBasketLU_Page2_ViewModel.java @@ -0,0 +1,90 @@ +package it.integry.integrywmsnative.view.dialogs.basket_lu.pages.page2; + +import android.content.Context; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.databinding.ViewDataBinding; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; + +import java.util.List; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.core.model.MtbColt; +import it.integry.integrywmsnative.databinding.DialogBasketLuPage2Binding; +import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.DialogBasketLU_BaseViewModel; +import it.integry.integrywmsnative.view.dialogs.basket_lu.interfaces.IDialogBasketLUViewModel; + +public class DialogBasketLU_Page2_ViewModel extends DialogBasketLU_BaseViewModel implements IDialogBasketLUViewModel { + + private Context mContext; + private DialogBasketLuPage2Binding mBinding; + + private MtbColt mMtbColt; + private DialogBasketLU_Page2_ListAdapter mAdapter; + + private RunnableArgs mOnConfirm; + + @Override + public void setContext(Context context) { + this.mContext = context; + } + + @Override + public void setBinding(ViewDataBinding binding) { + this.mBinding = (DialogBasketLuPage2Binding) binding; + } + + @Override + public void setInputData(Object data) { + mMtbColt = (MtbColt) data; + + } + + @Override + public void onPreShow() { + if(mMtbColt != null && mMtbColt.getMtbColr() != null && mMtbColt.getMtbColr().size() > 0) initRecyclerView(mMtbColt.getMtbColr()); + mBinding.emptyView.setVisibility(mMtbColt != null && mMtbColt.getMtbColr() != null && mMtbColt.getMtbColr().size() > 0 ? View.GONE : View.VISIBLE); + + mBinding.buttonAbort.setOnClickListener(v -> { + previous(); + }); + + mBinding.buttonConfirm.setOnClickListener(v -> { + mOnConfirm.run(mMtbColt); + }); + } + + @Override + public void onShow() { + + } + + @Override + public void setOnConfirmClickListener(RunnableArgs onConfirm) { + mOnConfirm = onConfirm; + } + + @Override + public void setOnAbortClickListener(Runnable onAbort) { + + } + + + private void initRecyclerView(List dataset) { + mBinding.dialogBasketLuMtbColrList.setNestedScrollingEnabled(false); + mBinding.dialogBasketLuMtbColrList.setHasFixedSize(true); + mBinding.dialogBasketLuMtbColrList.setLayoutManager(new LinearLayoutManager(mContext)); + + DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); + mBinding.dialogBasketLuMtbColrList.addItemDecoration(itemDecorator); + + mAdapter = new DialogBasketLU_Page2_ListAdapter(mContext, dataset); + + mBinding.dialogBasketLuMtbColrList.setAdapter(mAdapter); + } +} 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 746d1f86..e7e0f8c5 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 @@ -35,6 +35,7 @@ import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding; import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; +import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLU; public class DialogScanOrCreateLU { @@ -54,18 +55,18 @@ public class DialogScanOrCreateLU { public static Dialog make(final Context context, RunnableArgs onDialogDismiss) { - return new DialogScanOrCreateLU(context, false, true, true, onDialogDismiss).mDialog; + return new DialogScanOrCreateLU(context, false, true, true, true, onDialogDismiss).mDialog; } - public static Dialog make(final Context context, boolean disableCreation, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { - return new DialogScanOrCreateLU(context, disableCreation, true, shouldCheckIfExistDoc, onDialogDismiss).mDialog; + public static Dialog make(final Context context, boolean enableCreation, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { + return new DialogScanOrCreateLU(context, false, enableCreation, true, shouldCheckIfExistDoc, onDialogDismiss).mDialog; } - public static Dialog make(final Context context, boolean disableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { - return new DialogScanOrCreateLU(context, disableCreation, checkResiduo, shouldCheckIfExistDoc, onDialogDismiss).mDialog; + public static Dialog make(final Context context, boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { + return new DialogScanOrCreateLU(context, enableBasket, enableCreation, checkResiduo, shouldCheckIfExistDoc, onDialogDismiss).mDialog; } - private DialogScanOrCreateLU(Context context, boolean disableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { + private DialogScanOrCreateLU(Context context, boolean enableBasket, boolean enableCreation, boolean checkResiduo, boolean shouldCheckIfExistDoc, RunnableArgs onDialogDismiss) { mOnDialogDismiss = null; currentMtbColt = null; mShouldCheckResiduo = checkResiduo; @@ -77,7 +78,8 @@ public class DialogScanOrCreateLU { mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_or_create_lu, null, false); - if(disableCreation) mBinding.dialogScanOrCreateLuCreationLayout.setVisibility(View.GONE); + mBinding.dialogScanOrCreateLuCreationLayout.setVisibility(enableCreation ? View.VISIBLE : View.GONE); + mBinding.dialogScanOrCreateLuBasketLayout.setVisibility(enableBasket ? View.VISIBLE : View.GONE); mDialog = new Dialog(context); mDialog.setContentView(mBinding.getRoot()); @@ -102,6 +104,12 @@ public class DialogScanOrCreateLU { UtilityExceptions.defaultException(mContext, ex, progressDialog); }); }); + + mBinding.viewBasket.setOnClickListener(v -> { + DialogBasketLU.make(mContext, mtbColt -> { + sendMtbColt(mtbColt, null); + }).show(); + }); } private void initBarcode(Context context) { @@ -275,7 +283,7 @@ public class DialogScanOrCreateLU { private void sendMtbColt(MtbColt mtbColtToSend, Dialog progressDialog) { currentMtbColt = mtbColtToSend; - progressDialog.dismiss(); + if(progressDialog != null) progressDialog.dismiss(); mDialog.dismiss(); mOnDialogDismiss.run(mtbColtToSend); } diff --git a/app/src/main/res/drawable/ic_black_back.png b/app/src/main/res/drawable/ic_black_back.png new file mode 100644 index 0000000000000000000000000000000000000000..1973bf62a70aeaa86ef03d6276e983c0ead5df80 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlHo=X<(1 zhE&XXduP8_Q=&xM$I}arI(J;lSZg_3%E{)Gl=7@eVzXC0ULjndQSdf9K-1u2_~qv> zzy3OC-BI_W;{K&e<95TYmEWe*VgT-DS3| zjqYiO=dXLct!J6j>Jzo_(&cj;J2+-;acYx4@qt;gPT??r%8y1K`w0)(js7^G2?o6U{&VX( z{s(*(ar){9AW#?@jM)>Op2 z?JADk+Av+TfA!sj=<+AsAKpkYxxa3SI<R4Iccl5raoPD_nnb+h;!%yD z|A0{tF^9zXM}!~-A~D9O!F5q>FMrzRoykOYUX|5 zF)-8B_3c;H)!*)}+6BWf48t%C!!V3=YyqAH-UogK)`0a)Vr{7DB=8I{n;k?) zKhe^-0NkG>6AC;8ETf;)(D)O0FhM@X$~NE<`pJxqCE%9cv$BaTDR&OM2JB8;M@qI1 zKR;Df5y>274n5Ua0p@$o%?2s2_Ro<}_!yZ3_G^m>Wd^v2e(&uo7Aee{K863Fo>x;h z$^ra(pHNd5!5I|C)d=QrwzEz12Wsj9SpaU(elUmC)HQRIcFhA|r<%F|-l5C`xfg%O zIijXch{SrHQd8&WG-VB)BfNzFV)nS2IzPMd>wi&Aod=2aTpVtfD>K0N6lzH&*7F55 zb#jWeq@`KUCW^GA66=}0gV=<`lHRALu7*;rXA=@j`nH<73KHv?-6<>JLkbyECDt>` zi@2CodX_vLrHaIo9_X{eoxlkuV_J!JECcW1u9+ehfU6k@ zpR~9lZG;mUh@I4Ux0>v_mm|xR?cHsC+0Fs7bz$H%W6l zzJyynS!Ek8F}atIi8pHM^YTa{F?(9-+*d&Pn0UCQ&PHwqRuhPsYpHX-fbyZS0^HP6 zXDg=?2=bA8`OrAoR+-P`m>um-rzZ;w*cs3@?h(}4%8xw@@{xP_kod`0ndC<66Tvn{ zJ!gCyNE*Pd1Mzsrf602SdEA|Gw3Q01(>F|LmzT1Jd!)16wvprvSOLE5L(!D+1)k)C z{9&67L*a<*r!_!2dd=A^a2d0q(zuMUb4$;F0dP*Zt>LWuK(b-T3l|%PZG9! z@ELGDuuPT5B7e)Jd>hw+&pYnJ%UQaOkr!!xDZW@h`L^&r{p^ERI*MG!%|6)2|IzF$)|=zZYu7F)}bBv%u@Xzvw4qT=5TZkPMQ)nY)2Q zxaBx0))i>S>hRd!0`BT5XNF-IhG7_nVHk#C7{(OwAAHSXD0@B^+W-In07*qoM6N<$ Ef|CJN1^@s6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_black_tick.png b/app/src/main/res/drawable/ic_black_tick.png new file mode 100644 index 0000000000000000000000000000000000000000..ca369c8ed3393b935d2eb38f87008528749fce6d GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lNlHoXL`Cg zhE&XXd*`gzVFwY1hsxhPS-97+u)a3dZt8B*tCcFh)zl#-UTDY_r0Y3rX3WVs{F}}_ zx%0;{!*P;|Cmda}FBaI_5H*)!`vIv6=68*kFNlVwFs^Ax%dS4CD6(B)?$_HN_ix|5 zW2tX^^q;m8>rXoa9H#%^{UEjVfaYtd{fv1{*DNAyAFXd#JR{ZbvgHS#?LV?FZJ5&e zky+Ay0+B?(*N^E35-;rgUE?r6<`4G+#vcr32ZUzy@A&`f@&3=h9m0Ex7la;fFL~xJ zTL4tL_FRMd zsW{GgKXtwM4*rmxD$(?@`jjQheeg%? z6RD<;>=ITikJC527wDNEcwbRsf5SRwgF44tXM=wnWq%njMaX}3{k5W)*QPEv{6OK0 fE~N03dLcaH+a;+r$6o_uje)__)z4*}Q$iB}G8@?s literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/dialog_ask_should_print.xml b/app/src/main/res/layout/dialog_ask_should_print.xml index 89f20f30..262086bf 100644 --- a/app/src/main/res/layout/dialog_ask_should_print.xml +++ b/app/src/main/res/layout/dialog_ask_should_print.xml @@ -3,9 +3,10 @@ @@ -14,92 +15,91 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - - - - - - - - + android:background="@color/light_blue_300" + android:gravity="center_horizontal"> - - - - - - + android:layout_margin="24dp" + android:src="@drawable/ic_error_white_24dp" /> + + - + + + android:gravity="center_horizontal" + android:text="@string/action_print" /> - - + android:layout_marginTop="16dp" + android:layout_marginBottom="16dp" + android:gravity="left" + android:text="@string/message_print_packing_list" /> - + - + + + + + + + + + + + + @@ -107,72 +107,71 @@ - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_basket_lu.xml b/app/src/main/res/layout/dialog_basket_lu.xml new file mode 100644 index 00000000..637234c8 --- /dev/null +++ b/app/src/main/res/layout/dialog_basket_lu.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_basket_lu__mtb_colr_model.xml b/app/src/main/res/layout/dialog_basket_lu__mtb_colr_model.xml new file mode 100644 index 00000000..68efafe6 --- /dev/null +++ b/app/src/main/res/layout/dialog_basket_lu__mtb_colr_model.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml b/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml new file mode 100644 index 00000000..8ce8e930 --- /dev/null +++ b/app/src/main/res/layout/dialog_basket_lu__mtb_colt_model.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_basket_lu__page1.xml b/app/src/main/res/layout/dialog_basket_lu__page1.xml new file mode 100644 index 00000000..f02bb45a --- /dev/null +++ b/app/src/main/res/layout/dialog_basket_lu__page1.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_basket_lu__page2.xml b/app/src/main/res/layout/dialog_basket_lu__page2.xml new file mode 100644 index 00000000..93d1e48f --- /dev/null +++ b/app/src/main/res/layout/dialog_basket_lu__page2.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_scan_or_create_lu.xml b/app/src/main/res/layout/dialog_scan_or_create_lu.xml index 5e09ce58..3d3d9e25 100644 --- a/app/src/main/res/layout/dialog_scan_or_create_lu.xml +++ b/app/src/main/res/layout/dialog_scan_or_create_lu.xml @@ -92,46 +92,90 @@ - + + + + + android:orientation="vertical" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - + android:gravity="center_horizontal" + android:layout_marginTop="12dp" + android:layout_marginBottom="12dp" + android:textSize="16sp" + android:textStyle="bold" + android:layout_gravity="center_horizontal" + style="@style/TextViewMaterial" + android:text="OPPURE" /> + + + + + - - - - + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/lista_bancali_list_model.xml b/app/src/main/res/layout/lista_bancali_list_model.xml index 17f9fabe..17babf85 100644 --- a/app/src/main/res/layout/lista_bancali_list_model.xml +++ b/app/src/main/res/layout/lista_bancali_list_model.xml @@ -64,8 +64,8 @@ android:layout_height="wrap_content"> + @@ -26,28 +27,54 @@ app:layout_constraintEnd_toStartOf="@+id/qta_box" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - - + android:orientation="horizontal"> + + + + - + + + + + style="@style/AppTheme.NewMaterial.Text" + tools:text="280.45\nCONF" /> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d964b564..7148499b 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -238,6 +238,7 @@ Posizionamento Vuoi procedere con la stampa di una %s Crea nuova UL + Visualizza basket Apri UL Resi su ultime consegne Ultime consegne @@ -302,4 +303,7 @@ Distribuisci quantità Articolo Personalizzazione SaporiVeri + Basket + Usa + Indietro \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 074a3a91..e6cc977f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -167,7 +167,8 @@ No items to pick No documents to show No orders to dispatch - .no compatible orders found + . + no compatible orders found No items No LU poured into production @@ -241,6 +242,7 @@ Placement Do you want print a %s? Create new LU + View basket Open LU Returns on latest deliveries @@ -307,4 +309,7 @@ SaporVeri Customization Distribute quantity Article + Basket + Use + Back