Completato dialog a finbe picking di richiesta peso netto/lordo e tipo pedana

This commit is contained in:
Giuseppe Scorrano 2019-12-12 20:03:07 +01:00
parent 2d0bbf4b53
commit 0b7fd2ac94
9 changed files with 408 additions and 3 deletions

View File

@ -52,6 +52,7 @@ public class MtbColt extends EntityBase {
private Integer numDoc;
private Integer numDocProvv;
private BigDecimal pesoKg;
private BigDecimal pesoNettoKg;
private BigDecimal lunghezzaCm;
private BigDecimal larghezzaCm;
private BigDecimal altezzaCm;
@ -427,6 +428,15 @@ public class MtbColt extends EntityBase {
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public MtbColt setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getLunghezzaCm() {
return lunghezzaCm;
}

View File

@ -36,4 +36,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
}
});
}
public static void getTipiCollo(RunnableArgs<List<MtbTCol>> onComplete, RunnableArgs<Exception> onFailed) {
String baseSql = "SELECT * " +
"FROM mtb_tcol ";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() {
@Override
public void onSuccess(List<MtbTCol> values) {
if(onComplete != null) {
onComplete.run(values);
}
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -5,19 +5,29 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputQuantityToReturnBinding;
public class InputQuantityToReturnDialog {
private Context mContext;
private Dialog currentDialog;
public static Dialog make(final Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
@ -25,6 +35,8 @@ public class InputQuantityToReturnDialog {
}
private InputQuantityToReturnDialog(Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs<BigDecimal> onDialogDismiss) {
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogInputQuantityToReturnBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_to_return, null, false);
@ -55,7 +67,6 @@ public class InputQuantityToReturnDialog {
}
public class InputQuantityToReturnViewModel {
public MtbAart mtbAart;

View File

@ -69,6 +69,7 @@ import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArt;
@ -867,7 +868,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
ColliMagazzinoRESTConsumer.doesColloContainsAnyRow(currentMtbColt, containRows -> {
if(containRows) {
ColliMagazzinoRESTConsumer.updateDataFine(
DialogInputPeso.make(mActivity, currentMtbColt.getCodTcol(), currentMtbColt.getPesoNettoKg(), currentMtbColt.getPesoKg(), (newCodTcol, newNetWeight, newGrossWeight) -> {
currentMtbColt.setCodTcol(newCodTcol);
currentMtbColt.setPesoNettoKg(newNetWeight);
currentMtbColt.setPesoKg(newGrossWeight);
ColliMagazzinoRESTConsumer.updateDataFine(
mActivity,
progress,
currentMtbColt,
@ -878,6 +885,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.dismiss();
}
}));
}).show();
} else {
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID);
deleteCollo(progress, onComplete);
@ -1218,6 +1226,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setNumColloRif(sourceMtbColt.getNumCollo())
.setGestioneRif(UtilityString.empty2null(sourceMtbColt.getGestione()))
.setDataColloRif(UtilityString.empty2null(sourceMtbColt.getDataColloS()));
MtbColt currentOpenedMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
if( currentOpenedMtbColt.getCodTcol() == null &&
currentOpenedMtbColt.getPesoKg() == null &&
currentOpenedMtbColt.getPesoNettoKg() == null) {
currentOpenedMtbColt.setCodTcol(sourceMtbColt.getCodTcol());
currentOpenedMtbColt.setPesoKg(sourceMtbColt.getPesoKg());
currentOpenedMtbColt.setPesoNettoKg(sourceMtbColt.getPesoNettoKg());
}
} else if(item.getNumCollo() != null) {
mtbColr
.setCodJcom(UtilityString.empty2null(item.getCodJcom()))
@ -1231,7 +1251,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr);

View File

@ -0,0 +1,136 @@
package it.integry.integrywmsnative.view.dialogs.input_peso_lu;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogInputPesoLuBinding;
public class DialogInputPeso {
private Context mContext;
private DialogInputPesoLuBinding mBindings;
private DialogInputPesoViewModel mViewModel;
private Dialog currentDialog;
private List<MtbTCol> codTcolList = null;
private ArrayAdapter<String> codTcolArrayAdapter = null;
public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog;
}
private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss<String, BigDecimal, BigDecimal> onDialogDismiss) {
this.mContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_peso_lu, null, false);
currentDialog = new Dialog(context);
currentDialog.setContentView(mBindings.getRoot());
currentDialog.setCanceledOnTouchOutside(false);
currentDialog.setCancelable(false);
currentDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mViewModel = new DialogInputPesoViewModel();
mViewModel.codTcol.set(codTcol);
mViewModel.netWeight.set(UtilityNumber.decimalToString(netWeight));
mViewModel.grossWeight.set(UtilityNumber.decimalToString(grossWeight));
mBindings.setViewModel(mViewModel);
mBindings.buttonConfirm.setOnClickListener(v -> {
currentDialog.dismiss();
String newCodTcol = null;
if(mViewModel.codTcol.get() != null) {
Optional<MtbTCol> newCodTcolOptional = Stream.of(codTcolList)
.filter(x -> (x.getCodTcol() + " - " + x.getDescrizione()).equalsIgnoreCase(mViewModel.codTcol.get()))
.findSingle();
if(newCodTcolOptional.isPresent()) newCodTcol = newCodTcolOptional.get().getCodTcol();
}
BigDecimal netWeightDecimal = new BigDecimal(mViewModel.netWeight.get());
BigDecimal grossWeightDecimal = new BigDecimal(mViewModel.grossWeight.get());
onDialogDismiss.run(newCodTcol, netWeightDecimal, grossWeightDecimal);
});
this.init();
}
private void init() {
final Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
MagazzinoRESTConsumer.getTipiCollo(codTcols -> {
this.codTcolList = codTcols;
List<String> codTcolDescriptions = Stream.of(codTcols)
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.toList();
if(mViewModel.codTcol.get() != null) {
Optional<String> newCodTcol = Stream.of(codTcols)
.filter(x -> x.getCodTcol().equalsIgnoreCase(mViewModel.codTcol.get()))
.map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione())
.findSingle();
if(newCodTcol.isPresent()) mViewModel.codTcol.set(newCodTcol.get());
}
codTcolArrayAdapter = new ArrayAdapter(mContext, R.layout.array_adapter_single_item);
codTcolArrayAdapter.addAll(codTcolDescriptions);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
progressDialog.dismiss();
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
}
public class DialogInputPesoViewModel {
public BindableString codTcol = new BindableString();
public BindableString netWeight = new BindableString();
public BindableString grossWeight = new BindableString();
}
}

View File

@ -0,0 +1,8 @@
<androidx.appcompat.widget.AppCompatTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"
style="@style/AppTheme.NewMaterial.Text"/>

View File

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.text.Html" />
<import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="mContext"
type="android.content.Context" />
<variable
name="viewModel"
type="it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso.DialogInputPesoViewModel" />
</data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_blue_300"
android:gravity="center_horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_error_white_24dp"
android:layout_margin="24dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="24dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/action_insert_weight"
android:gravity="center_horizontal"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial"
android:text="@string/dialog_input_peso_lu_description"
android:gravity="center"
android:layout_marginTop="16dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_tcol"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/lu_type">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_tcol"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
app:binding="@{viewModel.codTcol}"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_center_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.49"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_center_2"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.51"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="@id/guide_center_1"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/gross_weight"
android:inputType="numberDecimal"
app:binding="@{viewModel.grossWeight}"
style="@style/TextInputEditText.OutlinePrimary"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/guide_center_2"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/net_weight"
android:inputType="numberDecimal"
app:binding="@{viewModel.netWeight}"
style="@style/TextInputEditText.OutlinePrimary"/>
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingTop="12dp"
android:paddingBottom="8dp"
android:gravity="bottom|center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp"
android:text="@string/confirm"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -45,6 +45,8 @@
<string name="action_orderBy">Ordina</string>
<string name="action_create_ul">Crea nuova UL</string>
<string name="action_insert_quantity">Inserisci quantità</string>
<string name="action_insert_weight">Inserisci peso</string>
<string name="dialog_input_peso_lu_description">Inserisci le informazioni del TIPO UL e il peso NETTO e LORDO</string>
<string name="action_show_created_ul">Mostra UL già create</string>
<string name="action_recover_ul">Recupera UL</string>
<string name="action_print_ul">Stampa UL</string>
@ -119,6 +121,9 @@
<string name="quantity">Quantità</string>
<string name="packages">Confezioni</string>
<string name="quantity_short">Qtà</string>
<string name="net_weight">Peso netto (KG)</string>
<string name="gross_weight">Peso lordo (KG)</string>
<string name="lu_type">Tipo pedana</string>
<string name="ordered_abbr">Ord</string>
<string name="to_dispatch_abbr">Da ev</string>

View File

@ -71,7 +71,9 @@
<string name="action_orderBy">Order</string>
<string name="action_create_ul">Create new LU</string>
<string name="action_insert_quantity">Insert quantity</string>
<string name="action_insert_weight">Insert weight</string>
<string name="action_show_created_ul">Show already created LU</string>
<string name="dialog_input_peso_lu_description">Insert info about LU TYPE and NET / GROSS weight</string>
<!-- SETTINGS -->
@ -116,6 +118,9 @@
<string name="quantity">Quantity</string>
<string name="packages">Packages</string>
<string name="quantity_short">Qty</string>
<string name="net_weight">Net weight (KG)</string>
<string name="gross_weight">Gross weight (KG)</string>
<string name="lu_type">LU type</string>
<string name="ordered_abbr">Ord</string>
<string name="to_dispatch_abbr">To disp</string>