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