[CARELLI - Ordini Acquisto]
Aggiunto controllo modifica ed esportazione ordini con listino non valido
This commit is contained in:
parent
0f08d704ac
commit
ff09147968
@ -94,6 +94,9 @@ public class ArticoloOrdine {
|
|||||||
@Ignore
|
@Ignore
|
||||||
private int bgTint;
|
private int bgTint;
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
private boolean invalid = false;
|
||||||
|
|
||||||
|
|
||||||
public Integer getArticoloOrdineId() {
|
public Integer getArticoloOrdineId() {
|
||||||
return articoloOrdineId;
|
return articoloOrdineId;
|
||||||
@ -300,4 +303,13 @@ public class ArticoloOrdine {
|
|||||||
this.ctMaxOrd = ctMaxOrd;
|
this.ctMaxOrd = ctMaxOrd;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInvalid() {
|
||||||
|
return invalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArticoloOrdine setInvalid(boolean invalid) {
|
||||||
|
this.invalid = invalid;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class ExpiredProductListException extends Exception {
|
||||||
|
public ExpiredProductListException() {
|
||||||
|
super(UtilityResources.getString(R.string.expired_list_session));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class InvalidProductOrderedException extends Exception {
|
||||||
|
|
||||||
|
public InvalidProductOrderedException() {
|
||||||
|
super(UtilityResources.getString(R.string.invalid_product_ordered));
|
||||||
|
}
|
||||||
|
|
||||||
|
public InvalidProductOrderedException(String product) {
|
||||||
|
super(UtilityResources.getString(R.string.invalid_product_ordered) + " (" + product + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package it.integry.integrywmsnative.core.exception;
|
||||||
|
|
||||||
|
import it.integry.integrywmsnative.R;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||||
|
|
||||||
|
public final class MultipleResultFromBarcodeException extends Exception {
|
||||||
|
|
||||||
|
public MultipleResultFromBarcodeException() {
|
||||||
|
super(UtilityResources.getString(R.string.multiple_results_from_barcode));
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultipleResultFromBarcodeException(String barcode) {
|
||||||
|
super(UtilityResources.getString(R.string.multiple_results_from_barcode) + " (" + barcode + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ import javax.inject.Singleton;
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO;
|
||||||
|
import it.integry.integrywmsnative.core.exception.InvalidProductOrderedException;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
import it.integry.integrywmsnative.core.rest.RESTBuilder;
|
||||||
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
|
||||||
@ -90,6 +91,10 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
for (ArticoloOrdine art : articoli) {
|
for (ArticoloOrdine art : articoli) {
|
||||||
i++;
|
i++;
|
||||||
|
if (art.isInvalid()) {
|
||||||
|
onFailed.run(new InvalidProductOrderedException(art.getCodMart()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
artRows.add(convertArtToDTO(art, i));
|
artRows.add(convertArtToDTO(art, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -38,6 +38,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagSpedizioneUseQtaOrd;
|
private boolean flagSpedizioneUseQtaOrd;
|
||||||
private boolean flagOrdinaNuoviArticoliInGriglia;
|
private boolean flagOrdinaNuoviArticoliInGriglia;
|
||||||
private boolean flagOrdinaArticoliOnScan;
|
private boolean flagOrdinaArticoliOnScan;
|
||||||
|
private boolean flagConsentiFuoriPianoLogistico;
|
||||||
private String docInterniCheckFornitore;
|
private String docInterniCheckFornitore;
|
||||||
private String produzioneDefaultCodAnag;
|
private String produzioneDefaultCodAnag;
|
||||||
private boolean flagPrintPackingListOnOrderClose;
|
private boolean flagPrintPackingListOnOrderClose;
|
||||||
@ -416,4 +417,13 @@ public class DBSettingsModel {
|
|||||||
this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario;
|
this.flagCanAddUnknownItemsInventario = flagCanAddUnknownItemsInventario;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlagConsentiFuoriPianoLogistico() {
|
||||||
|
return flagConsentiFuoriPianoLogistico;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setFlagConsentiFuoriPianoLogistico(boolean flagConsentiFuoriPianoLogistico) {
|
||||||
|
this.flagConsentiFuoriPianoLogistico = flagConsentiFuoriPianoLogistico;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -305,6 +305,10 @@ public class SettingsManager {
|
|||||||
.setGestName("PVM")
|
.setGestName("PVM")
|
||||||
.setSection("ORDINI_A")
|
.setSection("ORDINI_A")
|
||||||
.setKeySection("ORDINA_ARTICOLI_ON_SCAN"));
|
.setKeySection("ORDINA_ARTICOLI_ON_SCAN"));
|
||||||
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
|
.setGestName("PVM")
|
||||||
|
.setSection("ORDINI_A")
|
||||||
|
.setKeySection("FLAG_CONSENTI_ORIDNE_DA_GRIGLIA"));
|
||||||
stbGestSetupList.add(new StbGestSetup()
|
stbGestSetupList.add(new StbGestSetup()
|
||||||
.setGestName("PVM")
|
.setGestName("PVM")
|
||||||
.setSection("DOC_INTERNI")
|
.setSection("DOC_INTERNI")
|
||||||
@ -381,6 +385,7 @@ public class SettingsManager {
|
|||||||
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
|
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
|
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
|
||||||
|
dbSettingsModelIstance.setFlagConsentiFuoriPianoLogistico(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORIDNE_DA_GRIGLIA", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
|
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
|
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
|
||||||
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
|
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
|
||||||
@ -420,7 +425,7 @@ public class SettingsManager {
|
|||||||
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
|
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
|
||||||
.findFirstOrElse(null);
|
.findFirstOrElse(null);
|
||||||
|
|
||||||
if(value != null) {
|
if (value != null) {
|
||||||
if (clazz == String.class) {
|
if (clazz == String.class) {
|
||||||
return clazz.cast(value.getValue());
|
return clazz.cast(value.getValue());
|
||||||
} else if (clazz == Boolean.class) {
|
} else if (clazz == Boolean.class) {
|
||||||
|
|||||||
@ -202,6 +202,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
|||||||
onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void confirmCheckForUnlistedProduct(String barcode) {
|
||||||
|
DialogSimpleMessageView.makeInfoDialog(getText(R.string.info).toString(),
|
||||||
|
Html.fromHtml(getResources().getString(R.string.confirm_order_unlisted_item)),
|
||||||
|
null,
|
||||||
|
() -> {
|
||||||
|
this.mViewModel.loadArticolo(barcode);
|
||||||
|
}, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getColorFromResource(int resId) {
|
public int getColorFromResource(int resId) {
|
||||||
return getResources().getColor(resId);
|
return getResources().getColor(resId);
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -22,7 +23,10 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGriglia
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ArtNotFoundInGridException;
|
||||||
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
import it.integry.integrywmsnative.core.exception.EmptyOrderException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||||
|
import it.integry.integrywmsnative.core.exception.MultipleResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
import it.integry.integrywmsnative.core.exception.NoArtsInGridException;
|
||||||
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
|
||||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||||
@ -31,6 +35,7 @@ import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsu
|
|||||||
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||||
|
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||||
|
|
||||||
public class PVOrdineAcquistoEditViewModel {
|
public class PVOrdineAcquistoEditViewModel {
|
||||||
|
|
||||||
@ -58,6 +63,8 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
private List<ArticoloOrdinabileDTO> mArticoliGriglia = new ArrayList<>();
|
private List<ArticoloOrdinabileDTO> mArticoliGriglia = new ArrayList<>();
|
||||||
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
||||||
|
|
||||||
|
private Calendar dataInizioModifica;
|
||||||
|
|
||||||
|
|
||||||
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
public PVOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
|
||||||
GrigliaRepository grigliaRepository,
|
GrigliaRepository grigliaRepository,
|
||||||
@ -75,6 +82,14 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
this.mCurrentOrdine = ordine;
|
this.mCurrentOrdine = ordine;
|
||||||
mArticoliGriglia.clear();
|
mArticoliGriglia.clear();
|
||||||
mArticoliGriglia.addAll(articoliGriglia);
|
mArticoliGriglia.addAll(articoliGriglia);
|
||||||
|
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
this.dataInizioModifica = today;
|
||||||
this.refreshListArticoli();
|
this.refreshListArticoli();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,10 +97,21 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
refreshListArticoli(null);
|
refreshListArticoli(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean checkOrderSessionValid() {
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
return today.after(this.dataInizioModifica);
|
||||||
|
}
|
||||||
|
|
||||||
public void refreshListArticoli(Runnable onSuccess) {
|
public void refreshListArticoli(Runnable onSuccess) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
this.loadArticoli(mCurrentOrdine, articoli -> {
|
this.loadArticoli(mCurrentOrdine, articoli -> {
|
||||||
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
|
articoli = Stream.of(articoli).map(this::completeDataArticoli).sorted((a, b) -> a.getDataIns().after(b.getDataIns()) ? -1 : 1).toList();
|
||||||
|
|
||||||
this.mArticoli.postValue(articoli);
|
this.mArticoli.postValue(articoli);
|
||||||
this.sendOnLoadingEnded();
|
this.sendOnLoadingEnded();
|
||||||
if (onSuccess != null)
|
if (onSuccess != null)
|
||||||
@ -109,6 +135,8 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
||||||
art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd()));
|
art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd()));
|
||||||
art.setSystemNote(artGrid.generateSystemNote());
|
art.setSystemNote(artGrid.generateSystemNote());
|
||||||
|
} else {
|
||||||
|
art.setInvalid(true);
|
||||||
}
|
}
|
||||||
return art;
|
return art;
|
||||||
}
|
}
|
||||||
@ -135,7 +163,12 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
|
|
||||||
ArticoloOrdinabileDTO articoloDTO = getArticoloFromBarcode(barcode);
|
ArticoloOrdinabileDTO articoloDTO = getArticoloFromBarcode(barcode);
|
||||||
if (articoloDTO == null) {
|
if (articoloDTO == null) {
|
||||||
throw new NoResultFromBarcodeException(barcode);
|
if (SettingsManager.iDB().isFlagConsentiFuoriPianoLogistico() && UtilityString.isNullOrEmpty(mCurrentOrdine.getCodAlis())) {
|
||||||
|
this.mListener.confirmCheckForUnlistedProduct(barcode);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
throw new NoResultFromBarcodeException(barcode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.addArticoloToOrdine(
|
this.addArticoloToOrdine(
|
||||||
articoloDTO,
|
articoloDTO,
|
||||||
@ -168,7 +201,7 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (isAutoOrderOnScan()) {
|
if (isAutoOrderOnScan()) {
|
||||||
if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd())) {
|
if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd().multiply(BigDecimal.valueOf(articolo.getQtaCnf())))) {
|
||||||
mListener.confirmExceedingQtyOrder(saveAction);
|
mListener.confirmExceedingQtyOrder(saveAction);
|
||||||
} else {
|
} else {
|
||||||
saveAction.run();
|
saveAction.run();
|
||||||
@ -280,6 +313,10 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
|
|
||||||
public void exportOrdine(Runnable onComplete) {
|
public void exportOrdine(Runnable onComplete) {
|
||||||
this.sendOnLoadingStarted();
|
this.sendOnLoadingStarted();
|
||||||
|
if (!checkOrderSessionValid()) {
|
||||||
|
this.sendError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (mArticoli.getValue() == null) {
|
if (mArticoli.getValue() == null) {
|
||||||
this.sendError(new EmptyOrderException());
|
this.sendError(new EmptyOrderException());
|
||||||
return;
|
return;
|
||||||
@ -311,6 +348,40 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
if (this.mListener != null) mListener.onError(ex);
|
if (this.mListener != null) mListener.onError(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadArticolo(String barcode) {
|
||||||
|
this.sendOnLoadingStarted();
|
||||||
|
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
|
||||||
|
pvOrdiniAcquistoRESTConsumer.retrieveArticolo(null, codMdep, barcode, (grigliaDTO) -> {
|
||||||
|
if (grigliaDTO == null || grigliaDTO.getArticoli().isEmpty()) {
|
||||||
|
this.sendError(new ArtNotFoundInGridException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (grigliaDTO.getArticoli().size() > 1) {
|
||||||
|
this.sendError(new MultipleResultFromBarcodeException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ArticoloOrdinabileDTO newArt = Stream.of(grigliaDTO.getArticoli()).findFirstOrElse(null);
|
||||||
|
if (newArt == null) {
|
||||||
|
this.sendError(new ArtNotFoundInGridException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArticoloOrdinabileDTO existingArt = Stream.of(mArticoliGriglia).filter(x -> x.getCodMart().equalsIgnoreCase(newArt.getCodMart())).findFirstOrElse(null);
|
||||||
|
if (existingArt != null) {
|
||||||
|
List<String> barcodes = existingArt.getBarcode();
|
||||||
|
barcodes.addAll(newArt.getBarcode());
|
||||||
|
barcodes = Stream.of(barcodes).distinct().toList();
|
||||||
|
existingArt.setBarcode(barcodes);
|
||||||
|
} else {
|
||||||
|
mArticoliGriglia.add(newArt);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.processBarcode(barcode);
|
||||||
|
|
||||||
|
|
||||||
|
}, this::sendError);
|
||||||
|
}
|
||||||
|
|
||||||
public interface Listener extends ILoadingListener {
|
public interface Listener extends ILoadingListener {
|
||||||
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
|
void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess);
|
||||||
|
|
||||||
@ -319,6 +390,8 @@ public class PVOrdineAcquistoEditViewModel {
|
|||||||
int getColorFromResource(int resId);
|
int getColorFromResource(int resId);
|
||||||
|
|
||||||
void onError(Exception ex);
|
void onError(Exception ex);
|
||||||
|
|
||||||
|
void confirmCheckForUnlistedProduct(String barcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
public PVOrdineAcquistoEditViewModel setListener(Listener listener) {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import androidx.databinding.DataBindingUtil;
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -30,6 +31,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaReposito
|
|||||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
|
||||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||||
|
import it.integry.integrywmsnative.core.exception.ExpiredProductListException;
|
||||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
|
||||||
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
|
||||||
@ -133,6 +135,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
|
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
|
||||||
mListArticoli.clear();
|
mListArticoli.clear();
|
||||||
mListArticoli.addAll(listArticoli);
|
mListArticoli.addAll(listArticoli);
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
this.mPvOrdiniAcquistoGrigliaViewModel.setDataCaricamentoListino(today);
|
||||||
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,6 +181,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void editOrdine(Ordine ordine) {
|
private void editOrdine(Ordine ordine) {
|
||||||
|
if (this.mPvOrdiniAcquistoGrigliaViewModel.checkProductListSessionInvalid()) {
|
||||||
|
this.onError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,6 +220,10 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void createNewOrder() {
|
public void createNewOrder() {
|
||||||
|
if (this.mPvOrdiniAcquistoGrigliaViewModel.checkProductListSessionInvalid()) {
|
||||||
|
this.onError(new ExpiredProductListException());
|
||||||
|
return;
|
||||||
|
}
|
||||||
this.onLoadingStarted();
|
this.onLoadingStarted();
|
||||||
|
|
||||||
mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
|
mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||||
@ -18,6 +20,8 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
|||||||
private final OrdineRepository ordineRepository;
|
private final OrdineRepository ordineRepository;
|
||||||
private final GrigliaRepository grigliaRepository;
|
private final GrigliaRepository grigliaRepository;
|
||||||
|
|
||||||
|
private Calendar dataCaricamentoListino;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
|
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
|
||||||
ArticoloGrigliaRepository articoloGrigliaRepository,
|
ArticoloGrigliaRepository articoloGrigliaRepository,
|
||||||
@ -45,4 +49,23 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
|||||||
ordineRepository.delete(ordine, onSuccess, onFail);
|
ordineRepository.delete(ordine, onSuccess, onFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Calendar getDataCaricamentoListino() {
|
||||||
|
return dataCaricamentoListino;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PVOrdiniAcquistoGrigliaViewModel setDataCaricamentoListino(Calendar dataCaricamentoListino) {
|
||||||
|
this.dataCaricamentoListino = dataCaricamentoListino;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean checkProductListSessionInvalid() {
|
||||||
|
Calendar today = Calendar.getInstance();
|
||||||
|
today.set(Calendar.MILLISECOND, 0);
|
||||||
|
today.set(Calendar.SECOND, 0);
|
||||||
|
today.set(Calendar.MINUTE, 0);
|
||||||
|
today.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
||||||
|
return today.after(this.dataCaricamentoListino);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
|
<import type="it.integry.integrywmsnative.R" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
|
||||||
|
|
||||||
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
|
||||||
@ -55,6 +57,17 @@
|
|||||||
android:src="@drawable/ic_baseline_new_24"
|
android:src="@drawable/ic_baseline_new_24"
|
||||||
android:tint="@color/orange_600" />
|
android:tint="@color/orange_600" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/unavailable_product_icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@android:color/white"
|
||||||
|
android:adjustViewBounds="true"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:visibility="@{articolo.invalid ? View.VISIBLE : View.GONE}"
|
||||||
|
android:src="@drawable/ic_error_white_24dp"
|
||||||
|
android:tint="@color/red_600" />
|
||||||
|
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
|
||||||
@ -95,6 +108,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/badge_round_corner"
|
android:background="@drawable/badge_round_corner"
|
||||||
android:backgroundTint="@{articolo.bgTint}"
|
android:backgroundTint="@{articolo.bgTint}"
|
||||||
|
android:visibility="@{articolo.invalid ? View.GONE : View.VISIBLE}"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingLeft="6dp"
|
android:paddingLeft="6dp"
|
||||||
android:paddingTop="2dp"
|
android:paddingTop="2dp"
|
||||||
|
|||||||
@ -445,4 +445,7 @@
|
|||||||
<string name="max_orderable_qty">Qta massima ordinabile</string>
|
<string name="max_orderable_qty">Qta massima ordinabile</string>
|
||||||
<string name="max_qty_exceeded">Quantità massima superata</string>
|
<string name="max_qty_exceeded">Quantità massima superata</string>
|
||||||
<string name="confirm_orderable_qty_exceeded"><![CDATA[La quantità massima consentita per questo articolo è stata superata! <br/> Vuoi cotinuare comunque con il salvataggio?]]>\</string>
|
<string name="confirm_orderable_qty_exceeded"><![CDATA[La quantità massima consentita per questo articolo è stata superata! <br/> Vuoi cotinuare comunque con il salvataggio?]]>\</string>
|
||||||
|
<string name="confirm_order_unlisted_item"><![CDATA[L\'articolo selezionato non è presente nel piano logistico!<br>Vuoi provare a cercarlo comunque nel sistema?]]></string>
|
||||||
|
<string name="invalid_product_ordered">L\'ordine presenta un articolo non valido per la lista selezionata!</string>
|
||||||
|
<string name="expired_list_session"><![CDATA[La lista di prodotti è stata caricata troppo tempo fa!.]]></string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -26,12 +26,10 @@
|
|||||||
<color name="empty_view_bg_gray">#f5f5f5</color>
|
<color name="empty_view_bg_gray">#f5f5f5</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="bg_checked_layout">#E8F0FE</color>
|
<color name="bg_checked_layout">#E8F0FE</color>
|
||||||
<color name="bg_checked_layout_dark">#C9D5F0</color>
|
<color name="bg_checked_layout_dark">#C9D5F0</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="colorPrimaryA10">#1A1A73E8</color>
|
<color name="colorPrimaryA10">#1A1A73E8</color>
|
||||||
<color name="colorPrimaryA20">#331A73E8</color>
|
<color name="colorPrimaryA20">#331A73E8</color>
|
||||||
<color name="colorPrimaryA30">#4D1A73E8</color>
|
<color name="colorPrimaryA30">#4D1A73E8</color>
|
||||||
@ -85,7 +83,6 @@
|
|||||||
<color name="indigo_700">#303F9F</color>
|
<color name="indigo_700">#303F9F</color>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<color name="light_blue_100">#B3E5FC</color>
|
<color name="light_blue_100">#B3E5FC</color>
|
||||||
<color name="light_blue_200">#81D4FA</color>
|
<color name="light_blue_200">#81D4FA</color>
|
||||||
<color name="light_blue_300">#4fc3f7</color>
|
<color name="light_blue_300">#4fc3f7</color>
|
||||||
@ -102,6 +99,7 @@
|
|||||||
<color name="orange_800">#EF6C00</color>
|
<color name="orange_800">#EF6C00</color>
|
||||||
|
|
||||||
|
|
||||||
|
<color name="red_100">#EFB4B4</color>
|
||||||
<color name="red_200">#ef9a9a</color>
|
<color name="red_200">#ef9a9a</color>
|
||||||
<color name="red_300">#e57373</color>
|
<color name="red_300">#e57373</color>
|
||||||
<color name="red_400">#EF5350</color>
|
<color name="red_400">#EF5350</color>
|
||||||
|
|||||||
@ -452,4 +452,7 @@
|
|||||||
<string name="max_orderable_qty">Max orderable qty</string>
|
<string name="max_orderable_qty">Max orderable qty</string>
|
||||||
<string name="max_qty_exceeded">Max quantity exceeded</string>
|
<string name="max_qty_exceeded">Max quantity exceeded</string>
|
||||||
<string name="confirm_orderable_qty_exceeded"><![CDATA[Max permitted quantity exceeded for the current product!<br/> Do you wish to continue?]]></string>
|
<string name="confirm_orderable_qty_exceeded"><![CDATA[Max permitted quantity exceeded for the current product!<br/> Do you wish to continue?]]></string>
|
||||||
|
<string name="confirm_order_unlisted_item"><![CDATA[The selected product was not found in the current logistics plan! <br> Do you want to search for it regardless?]]></string>
|
||||||
|
<string name="invalid_product_ordered">One or more ordered products are not available in the selected list!</string>
|
||||||
|
<string name="expired_list_session"><![CDATA[The product list was loaded too much time ago!]]></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user