fase di creazione dell'ordine di acquisto preimpostare gli articoli che hanno una qta proposta da acquistare

This commit is contained in:
Valerio Castellana 2022-07-11 13:11:52 +02:00
parent cdf5b413a2
commit 9faf4123ef
12 changed files with 77 additions and 15 deletions

View File

@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 9, exportSchema = false) @Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 10, exportSchema = false)
@TypeConverters({ @TypeConverters({
DateConverter.class, DateConverter.class,
BigDecimalConverter.class BigDecimalConverter.class

View File

@ -53,6 +53,6 @@ public interface ArticoloGrigliaDao {
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId); List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND new_no_promo = 1") @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND qta_ord >= 1")
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId); List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
} }

View File

@ -71,6 +71,9 @@ public class ArticoloGriglia {
@ColumnInfo(name = "qta_proposta") @ColumnInfo(name = "qta_proposta")
private float qtaProposta; private float qtaProposta;
@ColumnInfo(name = "qta_ord")
private float qtaOrd;
@ColumnInfo(name = "id_griglia") @ColumnInfo(name = "id_griglia")
private int idGriglia; private int idGriglia;
@ -205,6 +208,14 @@ public class ArticoloGriglia {
this.newNoPromo = newNoPromo; this.newNoPromo = newNoPromo;
} }
public float getQtaOrd() {
return qtaOrd;
}
public void setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
}
public String generateSystemNote() { public String generateSystemNote() {
HashMap<String, String> pairs = new HashMap<>(); HashMap<String, String> pairs = new HashMap<>();
pairs.put("qta_proposta", String.valueOf(qtaProposta)); pairs.put("qta_proposta", String.valueOf(qtaProposta));
@ -234,8 +245,7 @@ public class ArticoloGriglia {
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
articolo.setNewNoPromo(this.isNewNoPromo()); articolo.setNewNoPromo(this.isNewNoPromo());
articolo.setSystemNote(generateSystemNote()); articolo.setSystemNote(generateSystemNote());
articolo.setQtaOrd(this.getQtaOrd());
articolo.setQtaOrd(0);
return articolo; return articolo;
} }

View File

@ -50,6 +50,9 @@ public class Ordine {
@Ignore @Ignore
private int countArticoli = 0; private int countArticoli = 0;
@Ignore
private boolean orderNewProducts = false;
@ColumnInfo(name = "id_griglia") @ColumnInfo(name = "id_griglia")
private int idGriglia; private int idGriglia;
@ -149,4 +152,13 @@ public class Ordine {
public void setDataOrdS(String dataOrd) { public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd)); setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
} }
public boolean isOrderNewProducts() {
return orderNewProducts;
}
public Ordine setOrderNewProducts(boolean orderNewProducts) {
this.orderNewProducts = orderNewProducts;
return this;
}
} }

View File

@ -19,6 +19,7 @@ public class ArticoloDTO {
private float giacenza; private float giacenza;
private float qtaPrevistaVendita; private float qtaPrevistaVendita;
private float qtaProposta; private float qtaProposta;
private float qtaOrd;
public String getCodMart() { public String getCodMart() {
@ -151,6 +152,15 @@ public class ArticoloDTO {
return this; return this;
} }
public float getQtaOrd() {
return qtaOrd;
}
public ArticoloDTO setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public ArticoloGriglia toArticoloGriglia() { public ArticoloGriglia toArticoloGriglia() {
ArticoloGriglia result = new ArticoloGriglia(); ArticoloGriglia result = new ArticoloGriglia();
result.setBarCode(this.getBarCode()); result.setBarCode(this.getBarCode());
@ -164,6 +174,7 @@ public class ArticoloDTO {
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
result.setGgScadenza(this.ggScadenza); result.setGgScadenza(this.ggScadenza);
result.setNewNoPromo(this.newNoPromo); result.setNewNoPromo(this.newNoPromo);
result.setQtaOrd(this.getQtaOrd());
result.setGiacenza(this.giacenza); result.setGiacenza(this.giacenza);
result.setQtaPrevistaVendita(this.qtaPrevistaVendita); result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
result.setQtaProposta(this.qtaProposta); result.setQtaProposta(this.qtaProposta);

View File

@ -19,6 +19,8 @@ public class GrigliaAcquistiChildDTO {
private float giacenza; private float giacenza;
private float qtaPrevistaVendita; private float qtaPrevistaVendita;
private float qtaProposta; private float qtaProposta;
private BigDecimal qtaOrd;
public String getCodMart() { public String getCodMart() {
return codMart; return codMart;
@ -154,4 +156,13 @@ public class GrigliaAcquistiChildDTO {
this.newNoPromo = newNoPromo; this.newNoPromo = newNoPromo;
return this; return this;
} }
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public GrigliaAcquistiChildDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
} }

View File

@ -250,6 +250,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.setNotesMandatory(this.viewModel.isNotesMandatory()) .setNotesMandatory(this.viewModel.isNotesMandatory())
.setDataScadMandatory(flagTracciabilita) .setDataScadMandatory(flagTracciabilita)
.setCanPartitaMagBeChanged(flagTracciabilita) .setCanPartitaMagBeChanged(flagTracciabilita)
.setNumCnfEditable(false)
.setSuggestPartitaMag(data -> { .setSuggestPartitaMag(data -> {
Date dataScad = data.getDataScad(); Date dataScad = data.getDataScad();
String partitaMag = null; String partitaMag = null;

View File

@ -108,8 +108,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
mBinding.closeActivityFab.close(false); mBinding.closeActivityFab.close(false);
mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE); mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE);
if (articoli.isEmpty() && isOrderNewProdsForced()) { if (mOrdine.isOrderNewProducts() && articoli.isEmpty() && isOrderNewProdsForced()) {
this.mViewModel.orderNewProducts(); this.mViewModel.orderNewProducts();
mOrdine.setOrderNewProducts(false);
} }
}); });

View File

@ -220,7 +220,6 @@ public class PVOrdineAcquistoEditViewModel {
.isEmpty() .isEmpty()
) { ) {
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine); ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
dto.setQtaOrd(dto.getQtaCnf());
articoliToSave.add(dto); articoliToSave.add(dto);
} }
}); });

View File

@ -75,6 +75,7 @@ public class OrdineAcquistoPvHelper {
Ordine ordine = new Ordine(); Ordine ordine = new Ordine();
ordine.setDataIns(UtilityDate.getDateInstance()); ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId()); ordine.setIdGriglia(griglia.getGrigliaId());
ordine.setOrderNewProducts(true);
mOrdineRepository.insert(ordine, id -> { mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id); ordine.setOrdineId(id);
onSuccess.run(ordine); onSuccess.run(ordine);

View File

@ -31,6 +31,7 @@ public class DialogInputQuantityV2DTO {
private boolean isDataScadMandatory = false; private boolean isDataScadMandatory = false;
private boolean isNotesAllowed = false; private boolean isNotesAllowed = false;
private boolean isNotesMandatory = false; private boolean isNotesMandatory = false;
private boolean isNumCnfEditable = true;
private boolean isFocusOnStart = true; private boolean isFocusOnStart = true;
private boolean canLUBeClosed; private boolean canLUBeClosed;
private boolean saveOnImeDone = false; private boolean saveOnImeDone = false;
@ -249,6 +250,15 @@ public class DialogInputQuantityV2DTO {
return this; return this;
} }
public boolean isNumCnfEditable() {
return isNumCnfEditable;
}
public DialogInputQuantityV2DTO setNumCnfEditable(boolean numCnfEditable) {
isNumCnfEditable = numCnfEditable;
return this;
}
public RunnableArgsWithReturn<DialogInputQuantityV2ViewModel, String> getSuggestPartitaMag() { public RunnableArgsWithReturn<DialogInputQuantityV2ViewModel, String> getSuggestPartitaMag() {
return suggestPartitaMag; return suggestPartitaMag;
} }

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.text.Html; import android.text.Html;
import android.text.InputType; import android.text.InputType;
import android.text.SpannableString; import android.text.SpannableString;
@ -43,6 +44,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis; import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding; import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -81,6 +83,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
public ObservableField<Boolean> enabledChangePartitaMag = new ObservableField<>(true); public ObservableField<Boolean> enabledChangePartitaMag = new ObservableField<>(true);
public ObservableField<Boolean> enabledNotes = new ObservableField<>(false); public ObservableField<Boolean> enabledNotes = new ObservableField<>(false);
public ObservableField<Boolean> enabledLUCloseButton = new ObservableField<>(true); public ObservableField<Boolean> enabledLUCloseButton = new ObservableField<>(true);
private Handler mHandler = new Handler();
private Context context; private Context context;
@ -170,7 +173,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
} }
this.onLoadingEnded(); this.onLoadingEnded();
if (mDialogInputQuantityV2DTO.isFocusOnStart()) { if (mDialogInputQuantityV2DTO.isFocusOnStart()) {
mBindings.inputNumCnfText.requestFocus(); mHandler.postDelayed(() -> {
if (mDialogInputQuantityV2DTO.isNumCnfEditable()) {
mBindings.inputNumCnfText.requestFocus();
} else {
UtilityFocus.focusTextBox(requireContext(), mBindings.inputQtaTotText);
}
}, 1000);
} }
return mBindings.getRoot(); return mBindings.getRoot();
} }
@ -240,11 +250,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
Date minDataScad = calendar.getTime(); Date minDataScad = calendar.getTime();
if (minDataScad.after(value) && value.after(new Date())) { if (minDataScad.after(value) && value.after(new Date())) {
DialogSimpleMessageView DialogSimpleMessageView
.makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> { .makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> this.mViewModel.setDataScad(value), () -> this.currentDataScad.set(null))
this.mViewModel.setDataScad(value);
}, () -> {
this.currentDataScad.set(null);
})
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");
} else { } else {
this.mViewModel.setDataScad(value); this.mViewModel.setDataScad(value);
@ -325,7 +331,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
if (!this.enabledQtaTot.get()) { if (!this.enabledQtaTot.get()) {
this.enabledQtaTot.set(true); this.enabledQtaTot.set(true);
} else if (!this.enabledNumCnf.get()) { } else if (!this.enabledNumCnf.get()) {
this.enabledNumCnf.set(true); this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable());
} }
} }
}); });
@ -334,7 +340,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value); toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) { if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.enabledNumCnf.set(!value); this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value);
} else { } else {
if (value) { if (value) {
if (this.mViewModel.blockedQtaCnf.get()) { if (this.mViewModel.blockedQtaCnf.get()) {
@ -346,7 +352,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
if (!this.enabledQtaCnf.get()) { if (!this.enabledQtaCnf.get()) {
this.enabledQtaCnf.set(true); this.enabledQtaCnf.set(true);
} else if (!this.enabledNumCnf.get()) { } else if (!this.enabledNumCnf.get()) {
this.enabledNumCnf.set(true); this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable());
} }
} }
} }