Completato picking libero

This commit is contained in:
Gius95 2019-01-07 19:37:02 +01:00
parent bbebf791f0
commit b931100f94
8 changed files with 420 additions and 110 deletions

View File

@ -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

View File

@ -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<PickingLiberoListAdapter.ViewHolder>{
protected Context mContext;
protected ObservableArrayList<MtbColr> mDataset;
private IRecyclerItemClicked<MtbColr> 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<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> 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<ObservableList<MtbColr>>(){
@Override
public void onChanged(ObservableList<MtbColr> sender) {
notifyDataSetChanged();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColr> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
}
};
}

View File

@ -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<MtbColr> {
public ObservableField<MtbColt> 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<ObservableList<MtbColr>>() {
@Override
public void onChanged(ObservableList<MtbColr> sender) {
refresh();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
refresh();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
refresh();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColr> sender, int fromPosition, int toPosition, int itemCount) {
refresh();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColr> 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) {
}
}

View File

@ -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));

View File

@ -35,52 +35,59 @@
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">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Picking Libero"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_gravity="center" />
</androidx.appcompat.widget.Toolbar>
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
<net.cachapa.expandablelayout.ExpandableLayout
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
app:el_expanded_bind="@{viewmodel.thereIsAnOpenedUL}">
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:orientation="vertical"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@drawable/badge1_round_corner"
android:text="@{viewmodel.mtbColt.get().numCollo.toString()}"
tools:text="2156"/>
android:focusableInTouchMode="true"
tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity">
<TextView
android:layout_width="wrap_content"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/picking_libero_main_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:textSize="16sp"
android:textColor="@android:color/black"
android:textStyle="bold"
android:visibility="@{!UtilityString.isNullOrEmpty(viewmodel.mtbColt.get().posizione) ? View.VISIBLE : View.GONE}"
android:text="@{viewmodel.mtbColt.get().posizione}"
tools:text="ME1FS032"/>
android:layout_marginTop="16dp"
android:layout_marginBottom="92dp"
android:paddingStart="2dp"
android:paddingEnd="2dp">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</net.cachapa.expandablelayout.ExpandableLayout>
<androidx.constraintlayout.widget.ConstraintLayout
@ -152,8 +159,6 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="mtbColr"
type="it.integry.integrywmsnative.core.model.MtbColr" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@+id/qta_box"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{mtbColr.codMart}"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
tools:text="COD MART" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/posizione_collo"
android:ellipsize="end"
android:maxLines="1"
android:text="@{mtbColr.getDescrizione()}"
android:textColor="@android:color/black"
android:textSize="16sp"
tools:text="Descrizione lunga articolo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
android:textSize="14sp"
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
tools:text="Lotto: ABCDE" />
</LinearLayout>
<RelativeLayout
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner"
android:gravity="center"
android:paddingLeft="6dp"
android:paddingTop="2dp"
android:paddingRight="6dp"
android:paddingBottom="2dp"
android:text="@{UtilityNumber.decimalToString(mtbColr.getQtaCol()) + (mtbColr.mtbAart != null &amp;&amp; !UtilityString.isNullOrEmpty(mtbColr.mtbAart.untMis) ? `\n` + mtbColr.mtbAart.untMis : ``)}"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="280.45\nCONF" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -122,7 +122,8 @@
<string name="activity_contenuto_bancale_title">Contenuto UL</string>
<string name="activity_vendita_inevaso_title">Spedizione merce</string>
<string name="lu_number_text"><![CDATA[UL n° <b>%d</b> - <b>%s</b>]]></string>
<string name="lu_number_data_text"><![CDATA[UL n° <b>%d</b> - <b>%s</b>]]></string>
<string name="lu_number_text"><![CDATA[UL n° %d]]></string>
<string name="button_ignore_print">Salta stampa</string>

View File

@ -132,7 +132,8 @@
<string name="activity_contenuto_bancale_title">LU Content</string>
<string name="activity_vendita_inevaso_title">Shipping goods</string>
<string name="lu_number_text"><![CDATA[LU n° <b>%d</b> - <b>%s</b>]]></string>
<string name="lu_number_data_text"><![CDATA[LU n° <b>%d</b> - <b>%s</b>]]></string>
<string name="lu_number_text"><![CDATA[LU n° %d]]></string>
<string name="button_ignore_print">Skip print</string>