diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java index 721e00d6..9b44e455 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java @@ -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; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java index 8f98dff1..d8b5cf92 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MagazzinoRESTConsumer.java @@ -36,4 +36,24 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer { } }); } + + public static void getTipiCollo(RunnableArgs> onComplete, RunnableArgs onFailed) { + String baseSql = "SELECT * " + + "FROM mtb_tcol "; + + Type typeOfObjectsList = new TypeToken>() {}.getType(); + SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback>() { + @Override + public void onSuccess(List values) { + if(onComplete != null) { + onComplete.run(values); + } + } + + @Override + public void onFailed(Exception ex) { + if(onFailed != null) onFailed.run(ex); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java index 85aa887b..ffa07c66 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/views/InputQuantityToReturnDialog.java @@ -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 onDialogDismiss) { @@ -25,6 +35,8 @@ public class InputQuantityToReturnDialog { } private InputQuantityToReturnDialog(Context context, MtbAart mtbAart, BigDecimal minQuantity, BigDecimal maxQuantity, RunnableArgs 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; diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 3f844932..09006753 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -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); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java new file mode 100644 index 00000000..0857cc1c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_peso_lu/DialogInputPeso.java @@ -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 codTcolList = null; + private ArrayAdapter codTcolArrayAdapter = null; + + public static Dialog make(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss onDialogDismiss) { + return new DialogInputPeso(context, codTcol, netWeight, grossWeight, onDialogDismiss).currentDialog; + } + + + private DialogInputPeso(final Context context, String codTcol, BigDecimal netWeight, BigDecimal grossWeight, RunnableArgsss 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 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 codTcolDescriptions = Stream.of(codTcols) + .map(codTcol -> codTcol.getCodTcol() + " - " + codTcol.getDescrizione()) + .toList(); + + if(mViewModel.codTcol.get() != null) { + Optional 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(); + + } + + +} diff --git a/app/src/main/res/layout/array_adapter_single_item.xml b/app/src/main/res/layout/array_adapter_single_item.xml new file mode 100644 index 00000000..d0736805 --- /dev/null +++ b/app/src/main/res/layout/array_adapter_single_item.xml @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_input_peso_lu.xml b/app/src/main/res/layout/dialog_input_peso_lu.xml new file mode 100644 index 00000000..74872b7e --- /dev/null +++ b/app/src/main/res/layout/dialog_input_peso_lu.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 393004ce..6d7f1962 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -45,6 +45,8 @@ Ordina Crea nuova UL Inserisci quantità + Inserisci peso + Inserisci le informazioni del TIPO UL e il peso NETTO e LORDO Mostra UL già create Recupera UL Stampa UL @@ -119,6 +121,9 @@ Quantità Confezioni Qtà + Peso netto (KG) + Peso lordo (KG) + Tipo pedana Ord Da ev diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32ec6adb..dc2cdbba 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,7 +71,9 @@ Order Create new LU Insert quantity + Insert weight Show already created LU + Insert info about LU TYPE and NET / GROSS weight @@ -116,6 +118,9 @@ Quantity Packages Qty + Net weight (KG) + Gross weight (KG) + LU type Ord To disp