From eee0567d71b7f4e44435d65e3567250fdd7566cd Mon Sep 17 00:00:00 2001 From: Gius95 Date: Mon, 10 Dec 2018 11:02:28 +0100 Subject: [PATCH] Fix su DialogInputQuantity. Fix su qtaDisponibile in Vendita. --- .../consumers/ColliMagazzinoRESTConsumer.java | 4 +- .../integrywmsnative/core/model/MtbColr.java | 23 ++++-- .../gest/vendita/dto/PickingObjectDTO.java | 9 ++- .../VenditaOrdineInevasoViewModel.java | 39 +++++++--- .../input_quantity/DialogInputQuantity.java | 71 ++++++++++--------- .../dialogs/input_quantity/QuantityDTO.java | 1 + .../layout/dialog_input_quantity_articolo.xml | 67 +++++++++++++---- app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 16 +++++ 10 files changed, 169 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java index 91b5a73b..9f2f7bb5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/consumers/ColliMagazzinoRESTConsumer.java @@ -4,7 +4,6 @@ import com.annimon.stream.Stream; import com.google.gson.JsonObject; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; import it.integry.integrywmsnative.core.CommonConst; @@ -16,7 +15,6 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColt; -import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -270,7 +268,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{ MtbColr newMtbColr = new MtbColr(); newMtbColr.setNumCollo(mtbColrToDelete.getNumCollo()); - newMtbColr.setDataCollo(mtbColrToDelete.getDataCollo()); + newMtbColr.setDataCollo(mtbColrToDelete.getDataColloS()); newMtbColr.setSerCollo(mtbColrToDelete.getSerCollo()); newMtbColr.setGestione(mtbColrToDelete.getGestione()); newMtbColr.setRiga(mtbColrToDelete.getRiga()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java index 5faadd21..09417cb2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java @@ -252,10 +252,20 @@ public class MtbColr extends EntityBase implements Parcelable { return this; } - public String getDataCollo() { + public String getDataColloS() { return dataCollo; } + public Date getDataColloD() { + try{ + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataColloS()); + } catch (ParseException pex){ + UtilityLogger.errorMe(pex); + return null; + } + } + public MtbColr setDataCollo(String dataCollo) { this.dataCollo = dataCollo; return this; @@ -381,9 +391,14 @@ public class MtbColr extends EntityBase implements Parcelable { return dataColloRif; } - public Date getDataColloRifD() throws ParseException { - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - return sdf.parse(getDataColloRifS()); + public Date getDataColloRifD() { + try{ + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); + return sdf.parse(getDataColloRifS()); + } catch (ParseException pex){ + UtilityLogger.errorMe(pex); + return null; + } } public MtbColr setDataColloRif(String dataColloRif) { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java index 25b6a5ec..5b715d28 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dto/PickingObjectDTO.java @@ -249,9 +249,14 @@ public class PickingObjectDTO implements Parcelable { return dataCollo; } - public Date getDataColloD() throws ParseException { + public Date getDataColloD() { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - return sdf.parse(getDataColloS()); + try { + return sdf.parse(getDataColloS()); + } catch (ParseException e) { + UtilityLogger.errorMe(e); + return null; + } } public String getDataColloHuman() { 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 a2b34639..42711ad1 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 @@ -21,7 +21,6 @@ import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer; -import it.integry.integrywmsnative.core.REST.model.Ean128Model; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.model.CommonModelConsts; @@ -33,9 +32,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityBarcode; -import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; @@ -822,25 +819,47 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO (x.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(item.getPartitaMag()))) .toList(); - float qtaEvasaInMtbColr = 0; + float qtaEvasaTotaleInMtbColr = 0; for (MtbColr mtbColr : filteredMtbColrs) { - qtaEvasaInMtbColr += mtbColr.getQtaCol().floatValue(); + qtaEvasaTotaleInMtbColr += mtbColr.getQtaCol().floatValue(); } + float qtaEvasaTotale = qtaEvasaTotaleInMtbColr; - float qtaEvasa = qtaEvasaInMtbColr; - BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasa)); + filteredMtbColrs = Stream.of(currentMtbColrs).filter( + x -> + x.getGestioneRif() != null && x.getGestioneRif().equalsIgnoreCase(item.getGestione()) && + Objects.equals(x.getNumColloRif(), item.getNumCollo()) && + x.getSerColloRif() != null && x.getSerColloRif().equalsIgnoreCase(item.getSerCollo()) && + x.getDataColloRifD() != null && x.getDataColloRifD().equals(item.getDataColloD()) + ).toList(); + + float qtaEvasaCurrentULInMtbColr = 0; + for (MtbColr mtbColr : filteredMtbColrs) { + qtaEvasaCurrentULInMtbColr += mtbColr.getQtaCol().floatValue(); + } + float qtaEvasaCurrentUL = qtaEvasaCurrentULInMtbColr; + + + + + BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasaTotale)); if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO; + BigDecimal qtaDisponibile = item.getQtaCollo().subtract(new BigDecimal(qtaEvasaCurrentUL)); + if(qtaDisponibile.floatValue() < 0) qtaDisponibile = BigDecimal.ZERO; + DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() .setBatchLot(item.getPartitaMag()) .setCodArtFor(item.getCodArtFor()) .setMtbAart(item.getMtbAart()) .setQtaOrd(item.getQtaOrd()) .setQtaDaEvadere(qtaDaEvadere) - .setQtaEvasa(new BigDecimal(qtaEvasa)) + .setQtaDisponibile(qtaDisponibile) + .setQtaTot(qtaDisponibile) + .setQtaEvasa(new BigDecimal(qtaEvasaTotale)) .setCanPartitaMagBeChanged(false) - .setMaxQta(item.getQtaOrd()); + .setMaxQta(qtaDisponibile); if(item.getTempPickData() != null) { PickingObjectDTO.PickData tmpPickData = item.getTempPickData(); @@ -883,7 +902,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO } - DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show(); + DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value)).show(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index bb4ccb30..31114730 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -54,6 +54,7 @@ public class DialogInputQuantity { private MtbAart mtbAart; private String batchLot; private BigDecimal qtaDaEvadere; + private BigDecimal qtaDisponibile; private BigDecimal qtaEvasa; private BigDecimal qtaOrd; private BigDecimal qtaTot; @@ -93,6 +94,15 @@ public class DialogInputQuantity { return this; } + public BigDecimal getQtaDisponibile() { + return qtaDisponibile; + } + + public DTO setQtaDisponibile(BigDecimal qtaDisponibile) { + this.qtaDisponibile = qtaDisponibile; + return this; + } + public BigDecimal getQtaOrd() { return qtaOrd; } @@ -282,14 +292,21 @@ public class DialogInputQuantity { if(dto.getQtaTot() != null) quantityDTO.qtaTot.set(dto.getQtaTot().floatValue()); if(dto.getMaxQta() != null) quantityDTO.maxQta = dto.getMaxQta().floatValue(); + float qtaDisponibile = dto.getQtaDisponibile() != null ? dto.getQtaDisponibile().floatValue() : 0f; + if (qtaDisponibile < 0) { + currentBinding.layoutQtaDisponibile.setVisibility(View.GONE); + qtaDisponibile = 0; + } + if(qtaDisponibile > 0) quantityDTO.qtaDisponibile.set(qtaDisponibile); + float qtaDaEvadere = dto.qtaDaEvadere != null ? dto.qtaDaEvadere.floatValue() : 0f; if (qtaDaEvadere < 0) { currentBinding.layoutQtaDaEvadere.setVisibility(View.GONE); qtaDaEvadere = 0; } - quantityDTO.qtaEvasa.set(dto.qtaEvasa != null ? dto.qtaEvasa.floatValue() : null); if(qtaDaEvadere > 0) quantityDTO.qtaDaEvadere.set(qtaDaEvadere); + quantityDTO.qtaEvasa.set(dto.qtaEvasa != null ? dto.qtaEvasa.floatValue() : null); quantityDTO.batchLot.set(dto.batchLot); if(quantityDTO.qtaCnf.get(false) == null) { @@ -440,19 +457,7 @@ public class DialogInputQuantity { quantityDTO.blockedNumDiCnf.set(!(quantityDTO.numCnf.get(true) == 0 || quantityDTO.numCnf.get().toString() == "")); - Log.d("Color", txlInputNumDiCnf.getEditText().getTextColors().toString()); - - if(quantityDTO.blockedNumDiCnf.get()){ - txlInputNumDiCnf.setErrorEnabled(true); - txlInputNumDiCnf.setError(" "); - txlInputNumDiCnf.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600)); - } else { - txlInputNumDiCnf.setErrorEnabled(false); - txlInputNumDiCnf.setError(null); - txlInputNumDiCnf.getEditText().setTextColor(originalColorStateList); - } - - + toggleTextInputLayoutError(txlInputNumDiCnf, quantityDTO.blockedNumDiCnf.get()); if (!quantityDTO.blockedQtaTot.get()) { @@ -487,15 +492,7 @@ public class DialogInputQuantity { quantityDTO.blockedQtaPerCnf.set(!(quantityDTO.qtaCnf.get(true) == 0 || quantityDTO.qtaCnf.get().toString() == "")); - if(quantityDTO.blockedQtaPerCnf.get()){ - txlInputQtaPerCnf.setErrorEnabled(true); - txlInputQtaPerCnf.setError(" "); - txlInputQtaPerCnf.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600)); - } else { - txlInputQtaPerCnf.setErrorEnabled(false); - txlInputQtaPerCnf.setError(null); - txlInputQtaPerCnf.getEditText().setTextColor(originalColorStateList); - } + toggleTextInputLayoutError(txlInputQtaPerCnf, quantityDTO.blockedQtaPerCnf.get()); if (!quantityDTO.blockedQtaTot.get()) { @@ -530,15 +527,7 @@ public class DialogInputQuantity { quantityDTO.blockedQtaTot.set(!(quantityDTO.qtaTot.get(true) == 0 || quantityDTO.qtaTot.get().toString() == "")); - if(quantityDTO.blockedQtaTot.get()){ - txlInputQtaTot.setErrorEnabled(true); - txlInputQtaTot.setError(" "); - txlInputQtaTot.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600)); - } else { - txlInputQtaTot.setErrorEnabled(false); - txlInputQtaTot.setError(null); - txlInputQtaTot.getEditText().setTextColor(originalColorStateList); - } + toggleTextInputLayoutError(txlInputQtaTot, quantityDTO.blockedQtaTot.get()); if(!quantityDTO.blockedQtaPerCnf.get()){ @@ -563,6 +552,24 @@ public class DialogInputQuantity { } + private void toggleTextInputLayoutError(TextInputLayout textInputLayout, boolean isError) { + if(isError){ + textInputLayout.setErrorEnabled(true); + textInputLayout.setError(" "); + textInputLayout.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600)); + textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel); + + if (textInputLayout.getChildCount() == 2) { + textInputLayout.getChildAt(1).setVisibility(View.GONE); + } + } else { + textInputLayout.setErrorEnabled(false); + textInputLayout.setError(null); + textInputLayout.getEditText().setTextColor(originalColorStateList); + textInputLayout.setHintTextAppearance(R.style.NormalFloatingLabel); + } + } + private void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) { quantityDTO.expireDateString.set(scadenzaString); diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/QuantityDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/QuantityDTO.java index a2c1b2f6..e5dbe9d3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/QuantityDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/QuantityDTO.java @@ -24,6 +24,7 @@ public class QuantityDTO { public BindableFloat qtaEvasa = new BindableFloat(); public BindableFloat qtaDaEvadere = new BindableFloat(); + public BindableFloat qtaDisponibile = new BindableFloat(); diff --git a/app/src/main/res/layout/dialog_input_quantity_articolo.xml b/app/src/main/res/layout/dialog_input_quantity_articolo.xml index c15d2752..66bbbbd4 100644 --- a/app/src/main/res/layout/dialog_input_quantity_articolo.xml +++ b/app/src/main/res/layout/dialog_input_quantity_articolo.xml @@ -135,27 +135,70 @@ - + android:orientation="horizontal"> - + + + + + + android:layout_marginStart="12dp" + android:orientation="horizontal"> + + + + + + + + + + Ordinati Da evadere + Disponibile Lotto %s]]> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e78cc8c2..63a4fb52 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,6 +99,7 @@ Ordered To dispatch + Available Batch lot %s]]> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5464fc3b..5319864b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -25,6 +25,22 @@ @color/colorAccent + + + +