diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java index 456f3423..7dc16672 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoActivity.java @@ -35,10 +35,18 @@ public class PickingLiberoActivity extends AppCompatActivity { setSupportActionBar(this.mBindings.toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setDisplayShowTitleEnabled(false); barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessfull(mViewModel.onScanSuccessfull) .setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false))); + + + mBindings.waterfallToolbar.setNestedScrollView(mBindings.scrollView); + } + + public void setTitle(String title) { + mBindings.toolbarTitle.setText(title); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java new file mode 100644 index 00000000..a07d327c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/core/PickingLiberoListAdapter.java @@ -0,0 +1,108 @@ +package it.integry.integrywmsnative.gest.picking_libero.core; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.databinding.DataBindingUtil; +import androidx.databinding.ObservableArrayList; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.RecyclerView; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; +import it.integry.integrywmsnative.core.model.MtbColr; +import it.integry.integrywmsnative.databinding.ListaPickingLiberoListModelBinding; + +public class PickingLiberoListAdapter extends RecyclerView.Adapter{ + + protected Context mContext; + protected ObservableArrayList mDataset; + + private IRecyclerItemClicked mOnItemClickListener; + + public static class ViewHolder extends RecyclerView.ViewHolder { + protected ListaPickingLiberoListModelBinding mViewDataBinding; + + + public ViewHolder(ListaPickingLiberoListModelBinding v) { + super(v.getRoot()); + mViewDataBinding = v; + } + + public void bind(MtbColr mtbColr) { + mViewDataBinding.setMtbColr(mtbColr); + mViewDataBinding.executePendingBindings(); + } + } + + + + public PickingLiberoListAdapter(Context context, ObservableArrayList myDataset, IRecyclerItemClicked onItemClickListener) { + mContext = context; + mDataset = myDataset; + mOnItemClickListener = onItemClickListener; + + myDataset.addOnListChangedCallback(onListChangedCallback); + } + + @Override + public PickingLiberoListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + // create a new view + ListaPickingLiberoListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_picking_libero_list_model, parent, false); + + return new PickingLiberoListAdapter.ViewHolder(viewDataBinding); + } + + @Override + public void onBindViewHolder(PickingLiberoListAdapter.ViewHolder holder, int position) { + MtbColr item = mDataset.get(position); + holder.bind(item); + + holder.mViewDataBinding.getRoot().setOnClickListener(x -> { + if(mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(item, position); + } + }); + } + + @Override + public void onViewRecycled(PickingLiberoListAdapter.ViewHolder holder) { + super.onViewRecycled(holder); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + + + + private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback>(){ + + @Override + public void onChanged(ObservableList sender) { + notifyDataSetChanged(); + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + notifyDataSetChanged(); + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + notifyDataSetChanged(); + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + notifyDataSetChanged(); + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + notifyDataSetChanged(); + } + }; + +} 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 c1a195c9..ad82b9f6 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 @@ -12,9 +12,13 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import androidx.core.content.ContextCompat; import androidx.databinding.Observable; import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableField; +import androidx.databinding.ObservableList; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer; @@ -26,6 +30,7 @@ import it.integry.integrywmsnative.core.REST.model.Ean13PesoModel; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; @@ -36,7 +41,9 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding; +import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoActivity; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; +import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoListAdapter; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.ui.StatusBarAlert; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper; @@ -45,7 +52,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuanti import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO; -public class PickingLiberoViewModel { +public class PickingLiberoViewModel implements IRecyclerItemClicked { public ObservableField mtbColt = new ObservableField<>(); @@ -54,16 +61,20 @@ public class PickingLiberoViewModel { public BindableBoolean thereIsAnyRowInUL = new BindableBoolean(); public BindableBoolean thereIsAnOpenULWithoutRows = new BindableBoolean(); - private Activity mContext; + private PickingLiberoActivity mContext; private ActivityPickingLiberoBinding mBinding; private PickingLiberoHelper mHelper; - public void init(Activity context, ActivityPickingLiberoBinding binding, PickingLiberoHelper helper) { + private PickingLiberoListAdapter mAdapter; + + public void init(PickingLiberoActivity context, ActivityPickingLiberoBinding binding, PickingLiberoHelper helper) { mContext = context; mBinding = binding; mHelper = helper; initObservable(); + + initRecyclerView(); } @@ -79,9 +90,62 @@ public class PickingLiberoViewModel { } private void refreshBindables() { + if(mtbColt.get() != null) { + initAdapter(); + + mContext.setTitle(String.format(mContext.getText(R.string.lu_number_text).toString(), mtbColt.get().getNumCollo())); + + initObservableMtbColr(); + } + else { + destroyAdapter(); + + mContext.setTitle(mContext.getText(R.string.free_picking).toString()); + } + thereIsAnOpenedUL.set(mtbColt.get() != null); thereIsntAnOpenedUL.set(!thereIsAnOpenedUL.get()); + + refreshObservableMtbColr(); + + + } + + private void initObservableMtbColr() { + mtbColt.get().getMtbColr().addOnListChangedCallback(new ObservableList.OnListChangedCallback>() { + @Override + public void onChanged(ObservableList sender) { + refresh(); + } + + @Override + public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) { + refresh(); + } + + @Override + public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) { + refresh(); + } + + @Override + public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) { + refresh(); + } + + @Override + public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) { + refresh(); + } + + private void refresh() { + refreshObservableMtbColr(); + } + }); + } + + private void refreshObservableMtbColr() { thereIsAnyRowInUL.set(mtbColt.get() != null && mtbColt.get().getMtbColr() != null && mtbColt.get().getMtbColr().size() > 0); @@ -92,6 +156,29 @@ public class PickingLiberoViewModel { } + private void initRecyclerView() { + mBinding.pickingLiberoMainList.setNestedScrollingEnabled(false); + + mBinding.pickingLiberoMainList.setHasFixedSize(true); + + mBinding.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(mContext)); + + DividerItemDecoration itemDecorator = new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL); + itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); + mBinding.pickingLiberoMainList.addItemDecoration(itemDecorator); + } + + private void initAdapter() { + mAdapter = new PickingLiberoListAdapter(mContext, mtbColt.get().getMtbColr(), this); + mBinding.pickingLiberoMainList.setAdapter(mAdapter); + } + + private void destroyAdapter() { + mAdapter = null; + mBinding.pickingLiberoMainList.setAdapter(null); + } + + public void onBackPressed() { if(thereIsAnOpenedUL.get()) { this.closeLU(); @@ -365,6 +452,9 @@ public class PickingLiberoViewModel { private void setULToCurrentContext(MtbColt mtbColt){ + if(mtbColt != null && mtbColt.getMtbColr() == null) { + mtbColt.setMtbColr(new ObservableArrayList<>()); + } this.mtbColt.set(mtbColt); } @@ -413,4 +503,8 @@ public class PickingLiberoViewModel { ); } + @Override + public void onItemClick(MtbColr item, int position) { + + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java index c58379c5..ffece70f 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/core/VenditaOrdineInevasoHelper.java @@ -12,7 +12,6 @@ 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.UtilityString; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto.VenditaOrdineInevasoListViewModel; @@ -111,7 +110,7 @@ public class VenditaOrdineInevasoHelper { } if(currentItem.getNumCollo() != null) { - rowModel.setSubDescrizione2(String.format(mContext.getResources().getText(R.string.lu_number_text).toString(), currentItem.getNumCollo(), currentItem.getDataColloHuman())); + rowModel.setSubDescrizione2(String.format(mContext.getResources().getText(R.string.lu_number_data_text).toString(), currentItem.getNumCollo(), currentItem.getDataColloHuman())); } rowModel.setQtaRiservata(getRigaQuantityEvasa(currentItem, mtbColrs)); diff --git a/app/src/main/res/layout/activity_picking_libero.xml b/app/src/main/res/layout/activity_picking_libero.xml index 68a98e44..d76ca5cf 100644 --- a/app/src/main/res/layout/activity_picking_libero.xml +++ b/app/src/main/res/layout/activity_picking_libero.xml @@ -35,128 +35,133 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" - tools:title="Picking Libero" - app:popupTheme="@style/AppTheme.PopupOverlay"/> + android:gravity="center_horizontal" + app:popupTheme="@style/AppTheme.PopupOverlay"> + + + + - + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + android:orientation="vertical" + android:paddingTop="8dp" + android:focusableInTouchMode="true" + tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity"> - - - - + android:layout_marginTop="16dp" + android:layout_marginBottom="92dp" + android:paddingStart="2dp" + android:paddingEnd="2dp"> + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 63a94bd1..888eba0a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -122,7 +122,8 @@ Contenuto UL Spedizione merce - %d - %s]]> + %d - %s]]> + Salta stampa diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 34f6fbdc..07a03bc2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -132,7 +132,8 @@ LU Content Shipping goods - %d - %s]]> + %d - %s]]> + Skip print