Fix su DialogInputQuantity.

Fix su qtaDisponibile in Vendita.
This commit is contained in:
Gius95 2018-12-10 11:02:28 +01:00
parent af815e87f9
commit eee0567d71
10 changed files with 169 additions and 63 deletions

View File

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

View File

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

View File

@ -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() {

View File

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

View File

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

View File

@ -24,6 +24,7 @@ public class QuantityDTO {
public BindableFloat qtaEvasa = new BindableFloat();
public BindableFloat qtaDaEvadere = new BindableFloat();
public BindableFloat qtaDisponibile = new BindableFloat();

View File

@ -135,27 +135,70 @@
</LinearLayout>
<LinearLayout
android:id="@+id/layout_qta_da_evadere"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatTextView
<LinearLayout
android:id="@+id/layout_qta_da_evadere"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/to_dispatch"
android:textSize="16sp"
tools:text="Da evadere" />
android:orientation="horizontal">
<android.support.v7.widget.AppCompatTextView
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/to_dispatch"
android:textSize="16sp"
tools:text="Da evadere" />
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{String.format("%.2f", quantityViewModel.qtaDaEvadere.get())}'
android:textSize="16sp"
android:textStyle="bold"
android:paddingLeft="4dp"
tools:text="1200" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_qta_disponibile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{String.format("%.2f", quantityViewModel.qtaDaEvadere.get())}'
android:textSize="16sp"
android:textStyle="bold"
android:paddingLeft="4dp"
tools:text="1200" />
android:layout_marginStart="12dp"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="("
android:textSize="16sp" />
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/available"
android:textSize="16sp"
tools:text="Disponibile" />
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{String.format("%.2f", quantityViewModel.qtaDisponibile.get())}'
android:textSize="16sp"
android:textStyle="bold"
android:paddingStart="4dp"
tools:text="1200" />
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=")"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<android.support.constraint.ConstraintLayout

View File

@ -93,6 +93,7 @@
<string name="ordered">Ordinati</string>
<string name="to_dispatch">Da evadere</string>
<string name="available">Disponibile</string>
<string name="batch_lot">Lotto</string>
<string name="batch_lot_text"><![CDATA[Lotto: <b>%s</b>]]></string>

View File

@ -99,6 +99,7 @@
<string name="ordered">Ordered</string>
<string name="to_dispatch">To dispatch</string>
<string name="available">Available</string>
<string name="batch_lot">Batch lot</string>
<string name="batch_lot_text"><![CDATA[Batch lot: <b>%s</b>]]></string>

View File

@ -25,6 +25,22 @@
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="ErrorFloatingLabel" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/red_500</item>
<item name="android:textSize">12sp</item>
<item name="colorControlNormal">@color/red_500</item>
<item name="colorControlActivated">@color/red_500</item>
<item name="colorControlHighlight">@color/red_500</item>
</style>
<style name="NormalFloatingLabel" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:textSize">12sp</item>
<item name="colorControlNormal">@color/colorPrimary</item>
<item name="colorControlActivated">@color/colorPrimary</item>
<item name="colorControlHighlight">@color/colorPrimary</item>
</style>
<!--<style name="AppTheme.AppCompat.Dark.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">-->
<!--<item name="colorPrimary">@color/colorPrimary</item>-->
<!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->