From 8e40092130ed49a5d50a8173543bbbe553392b43 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 21 Feb 2022 16:31:11 +0100 Subject: [PATCH] [CARELLI - ORDINI A] aggiunti automaticamente all'ordine gli articoli nuovi in griglia [CARELLI - DOC INTERNI] modificato controllo sul lotto per partire solo nei documenti richiesti (tramite setup) --- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/dao/ArticoloGrigliaDao.java | 7 +- .../data_store/db/entity/ArticoloGriglia.java | 12 + .../data_store/db/entity/ArticoloOrdine.java | 27 ++- .../repository/ArticoloGrigliaRepository.java | 2 + .../ArticoliGrigliaDataSource.java | 10 + .../ArticoliOrdineDataSource.java | 8 +- .../data_store/db/view_model/ArticoloDTO.java | 53 +++-- .../core/settings/DBSettingsModel.java | 28 ++- .../core/settings/SettingsManager.java | 22 +- .../core/utility/UtilityFocus.java | 3 +- .../dto/GrigliaAcquistiChildDTO.java | 10 + .../DocInterniEditFormViewModel.java | 28 ++- .../PVOrdineAcquistoEditActivity.java | 43 +++- .../dialog/EditArticoloDialog.java | 30 ++- .../helper/PVEditOrderHelper.java | 13 +- .../dialogs/DialogScanLisA.java | 9 +- .../res/drawable/ic_baseline_alert_24.xml | 10 + .../main/res/drawable/ic_baseline_new_24.xml | 10 + .../res/drawable/ic_baseline_stars_24.xml | 10 + .../res/layout/dialog_pv_edit_articolo.xml | 40 +++- ...coli_ordine_acquisto__list_single_item.xml | 32 ++- .../layout/fragment_pv_ordini_acquisto.xml | 210 ++++++++---------- app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 25 files changed, 441 insertions(+), 182 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_alert_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_new_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_stars_24.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 94ef061a..c69bda7d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -18,7 +18,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.SqlMtbColt; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 7, exportSchema = false) @TypeConverters({ DateConverter.class }) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java index c501cc7f..42c01e96 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java @@ -6,7 +6,6 @@ import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; -import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; @@ -21,10 +20,13 @@ public interface ArticoloGrigliaDao { @Insert void insertAll(List articoli); + @Insert Long insert(ArticoloGriglia articolo); + @Update void updateAll(List articoli); + @Update void update(ArticoloGriglia articolo); @@ -45,4 +47,7 @@ public interface ArticoloGrigliaDao { @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") List getArticoliFromGriglia(int grigliaId); + + @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1") + List getNewArticoliInGriglia(int grigliaId); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index f42f98bd..f28a2434 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -71,6 +71,9 @@ public class ArticoloGriglia { @ColumnInfo(name = "id_griglia") private int idGriglia; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo = false; + public int getArticoloGrigliaId() { return articoloGrigliaId; } @@ -191,6 +194,14 @@ public class ArticoloGriglia { this.qtaProposta = qtaProposta; } + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + } + public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { ArticoloOrdine articolo = new ArticoloOrdine(); @@ -210,6 +221,7 @@ public class ArticoloGriglia { articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza())); articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita())); articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); + articolo.setNewNoPromo(this.isNewNoPromo()); articolo.setQtaOrd(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index f55a69d5..5ee30523 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -29,7 +29,7 @@ import java.util.Date; public class ArticoloOrdine { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "articolo_ordine_id") - private int articoloOrdineId; + private Integer articoloOrdineId; @ColumnInfo(name = "cod_mart") private String codMart; @@ -67,6 +67,8 @@ public class ArticoloOrdine { @ColumnInfo(name = "data_ins") private Date dataIns; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo; @Ignore private int ggScadenza = 0; @@ -81,7 +83,7 @@ public class ArticoloOrdine { private BigDecimal qtaProposta = BigDecimal.ZERO; - public int getArticoloOrdineId() { + public Integer getArticoloOrdineId() { return articoloOrdineId; } @@ -221,14 +223,23 @@ public class ArticoloOrdine { return this; } - public BigDecimal getQtaCnfPrevistaVendita(){ - return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfPrevistaVendita() { + return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfProposta(){ - return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfProposta() { + return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfGiacenza(){ - return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + + public BigDecimal getQtaCnfGiacenza() { + return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java index cbcfc259..eb712af8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java @@ -16,4 +16,6 @@ public interface ArticoloGrigliaRepository { void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail); + void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java index 51f16d58..d47945ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java @@ -89,4 +89,14 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri } }); } + + public void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + onSuccess.run(mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia)); + } catch (Exception e) { + onFail.run(e); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java index d3ec82e8..a82c193e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java @@ -28,13 +28,15 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); for (ArticoloOrdine art : articoli) { - if (art.getArticoloOrdineId() > 0) { + if (art.getArticoloOrdineId() != null && art.getArticoloOrdineId() > 0) { toUpdate.add(art); } else { toInsert.add(art); } } - mArticoloOrdineDao.insertAll(toInsert); + for (ArticoloOrdine newArt : toInsert) { + mArticoloOrdineDao.insert(newArt); + } mArticoloOrdineDao.updateAll(toUpdate); onSuccess.run(); @@ -48,7 +50,7 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail) { execute(() -> { try { - if (articolo.getArticoloOrdineId() > 0) { + if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) { mArticoloOrdineDao.update(articolo); } else { mArticoloOrdineDao.insert(articolo); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java index 0ac39bc9..f3c7a02b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java @@ -1,35 +1,23 @@ package it.integry.integrywmsnative.core.data_store.db.view_model; -import androidx.room.ColumnInfo; - import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; public class ArticoloDTO { - private String codMart; - - private String descrizione; - - private String untMis; - - private String barcode; - - private String flagQtaMultipla; - - private float qtaCnf; - - private float merceDaRic; - - private float mediaSett; - - private float qtaMinOrdinabile; - + public String codMart; + public String descrizione; + public String untMis; + public float qtaCnf; + public String barcode; + public float merceDaRic; + public float mediaSett; + public String flagQtaMultipla; + public String flagTracciabilita; + public float qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; - private float giacenza; - private float qtaPrevistaVendita; - private float qtaProposta; @@ -145,6 +133,24 @@ public class ArticoloDTO { this.qtaProposta = qtaProposta; } + public String getFlagTracciabilita() { + return flagTracciabilita; + } + + public ArticoloDTO setFlagTracciabilita(String flagTracciabilita) { + this.flagTracciabilita = flagTracciabilita; + return this; + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public ArticoloDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } + public ArticoloGriglia toArticoloGriglia() { ArticoloGriglia result = new ArticoloGriglia(); result.setBarCode(this.getBarCode()); @@ -157,6 +163,7 @@ public class ArticoloDTO { result.setFlagQtaMultipla(this.getFlagQtaMultipla()); result.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); result.setGgScadenza(this.ggScadenza); + result.setNewNoPromo(this.newNoPromo); result.setGiacenza(this.giacenza); result.setQtaPrevistaVendita(this.qtaPrevistaVendita); result.setQtaProposta(this.qtaProposta); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 0528c066..88156b64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,12 +1,14 @@ package it.integry.integrywmsnative.core.settings; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; public class DBSettingsModel { @@ -36,6 +38,8 @@ public class DBSettingsModel { private boolean flagSpedizioneCanSelectMultipleOrders; private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; + private boolean flagOrdinaNuoviArticoliInGriglia; + private JSONObject docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; @@ -72,7 +76,7 @@ public class DBSettingsModel { } public DBSettingsModel setDatiAzienda(Azienda datiAzienda) { - this.datiAzienda = datiAzienda; + this.datiAzienda = datiAzienda; return this; } @@ -247,6 +251,15 @@ public class DBSettingsModel { return this; } + public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) { + this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia; + return this; + } + + public boolean getFlagOrdinaNuoviArticoliInGriglia() { + return this.flagOrdinaNuoviArticoliInGriglia; + } + public String getProduzioneDefaultCodAnag() { return produzioneDefaultCodAnag; } @@ -282,4 +295,13 @@ public class DBSettingsModel { this.notePerditaDocInterni = notePerditaDocInterni; return this; } + + public JSONObject getDocInterniCheckFornitore() { + return docInterniCheckFornitore; + } + + public DBSettingsModel setDocInterniCheckFornitore(JSONObject docInterniCheckFornitore) { + this.docInterniCheckFornitore = docInterniCheckFornitore; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index b32e234f..ade66c88 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -5,6 +5,9 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; +import org.json.JSONException; +import org.json.JSONObject; + import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -270,6 +273,14 @@ public class SettingsManager { .setGestName("PVM") .setSection("DOC_INTERNI") .setKeySection("NOTE_PERDITA")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("ORDINI_A") + .setKeySection("ORDINA_NUOVI_ARTICOLI")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("DOC_INTERNI") + .setKeySection("CHECK_FORNITORE")); GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { @@ -294,8 +305,15 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); - String notePerdita = getValueFromList(list,"DOC_INTERNI","NOTE_PERDITA",String.class); - if (notePerdita != null){ + dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); + String docTypeCheckFornitore = getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class); + try { + dbSettingsModelIstance.setDocInterniCheckFornitore(new JSONObject(docTypeCheckFornitore)); + } catch (JSONException e) { + e.printStackTrace(); + } + String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); + if (notePerdita != null) { dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|"))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java index 93d47c27..0315d040 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java @@ -8,7 +8,8 @@ public class UtilityFocus { public static void focusTextBox(Context context, EditText editTextToFocus) { editTextToFocus.requestFocus(); - + editTextToFocus.setSelectAllOnFocus(true); + editTextToFocus.selectAll(); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java index 349e46c9..9db96088 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java @@ -14,6 +14,7 @@ public class GrigliaAcquistiChildDTO { public String flagQtaMultipla; public String flagTracciabilita; public BigDecimal qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; private float giacenza; private float qtaPrevistaVendita; @@ -144,4 +145,13 @@ public class GrigliaAcquistiChildDTO { this.qtaProposta = qtaProposta; return this; } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public GrigliaAcquistiChildDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 6be6f11a..66c9288c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; import java.math.BigDecimal; import java.util.ArrayList; @@ -18,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; @@ -35,7 +37,8 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; - + private boolean isCheckPartitaMag = false; + private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); public MutableLiveData> docRows = new MutableLiveData<>(); @@ -44,6 +47,7 @@ public class DocInterniEditFormViewModel { this.docInterniRESTConsumer = docInterniRESTConsumer; this.mtbColrRepository = mtbColrRepository; this.mtbColtRepository = mtbColtRepository; + this.checkFornitoreRules = SettingsManager.iDB().getDocInterniCheckFornitore(); this.docRows.setValue(new ArrayList<>()); } @@ -120,7 +124,7 @@ public class DocInterniEditFormViewModel { } SqlMtbColr row = this.getRowForArticolo(articolo); this.sendOnLoadingEnded(); - this.editRow(row, articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S") && this.isCheckPartitaMag)); } @@ -208,6 +212,26 @@ public class DocInterniEditFormViewModel { public void setDocument(SqlMtbColt document) { this.document.setValue(document); + this.initCheckFornitore(); + } + + private void initCheckFornitore() { + SqlMtbColt doc = this.document.getValue(); + boolean isCheckPartitaMag = false; + if (doc != null && this.checkFornitoreRules != null) { + String key = doc.getCodAnag(); + if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { + key += "-" + doc.getCodVdes(); + } + try { + if (this.checkFornitoreRules.has(key) && ((String) ((JSONObject) this.checkFornitoreRules.get(key)).get(doc.getCodDtipProvv())).equalsIgnoreCase("check-partitaMag")) { + isCheckPartitaMag = true; + } + } catch (Exception ignored) { + } + + } + this.isCheckPartitaMag = isCheckPartitaMag; } public SqlMtbColt getDocument() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index febbc9ca..257cfba6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -12,6 +12,8 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.LinearLayoutManager; +import com.annimon.stream.Stream; + import java.util.ArrayList; import java.util.List; @@ -32,6 +34,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.expansion.BaseActivity; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; @@ -65,7 +68,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { ArticoloGrigliaRepository mArticoloGrigliaRepository; - public static Intent newInstance(Context context, Ordine ordine){ + public static Intent newInstance(Context context, Ordine ordine) { Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); String keyOrdine = DataCache.addItem(ordine); myIntent.putExtra(DATA_KEY_ORDER, keyOrdine); @@ -110,6 +113,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { .setOnScanFailed(this::handleException)); } + @Override public boolean onSupportNavigateUp() { @@ -159,6 +163,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { private void handleException(Exception ex) { runOnUiThread(() -> { + this.closeProgress(); BarcodeManager.enable(); UtilityExceptions.defaultException(this, ex, false); }); @@ -198,6 +203,32 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { fetchArticoli(); } + private void orderNewProducts() { + this.openProgress(); + mhelper.getNewArticoli(mOrdine.getIdGriglia(), articoli -> { + if (articoli != null && !articoli.isEmpty()) { + List articoliToSave = new ArrayList<>(); + Stream.of(articoli).forEach(articolo -> { + if ( + Stream.of(mArticoli).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + && Stream.of(articoliToSave).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + ) { + ArticoloOrdine dto = articolo.convertToArticoloOrdine(mOrdine); + dto.setQtaOrd(dto.getQtaCnf()); + articoliToSave.add(dto); + } + }); + if (!articoliToSave.isEmpty()) { + mhelper.saveArticoliToOrdine(articoliToSave, this::fetchArticoli, this::handleException); + } else { + this.closeProgress(); + } + } else { + this.closeProgress(); + } + }, this::handleException); + } + private void fetchGriglia() { mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { runOnUiThread(() -> { @@ -218,6 +249,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE); mBinding.closeActivityFab.close(false); mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE); + if (mArticoli.isEmpty() && isOrderNewProdsForced()) { + orderNewProducts(); + } }); }, this::handleException); } @@ -253,9 +287,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { super.onBackPressed(); } - public void manualSearch(){ + public void manualSearch() { BarcodeManager.disable(); - DialogSimpleInputHelper.makeInputDialog(this,"Inserisci il codice a barre/codice articolo da cercare",codice->{ + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { this.openProgress(); mhelper.checkArticolo( mOrdine, @@ -272,4 +306,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { }, BarcodeManager::enable).show(); } + private boolean isOrderNewProdsForced() { + return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java index 54925165..3c99f01e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java @@ -10,6 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -27,7 +28,6 @@ import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; @@ -53,7 +53,7 @@ public class EditArticoloDialog extends BaseDialogFragment { mArticolo.setValue(articolo); mHelper = helper; qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd())); - numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()),0,RoundingMode.CEILING).intValue()); + numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()), 0, RoundingMode.CEILING).intValue()); qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf())); this.onDialogDismiss = onDialogDismiss; @@ -71,7 +71,7 @@ public class EditArticoloDialog extends BaseDialogFragment { public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); ArticoloOrdine articolo = mArticolo.getValue(); - if (articolo != null && articolo.getQtaOrd() <= 0f){ + if (articolo != null && articolo.getQtaOrd() <= 0f) { articolo = null; } onDialogDismiss.run(articolo); @@ -87,14 +87,12 @@ public class EditArticoloDialog extends BaseDialogFragment { getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); initBindings(); - return mBinding.getRoot(); } @Override public void onStart() { super.onStart(); - UtilityFocus.focusTextBox(mContext, mBinding.inputQtaOrd); } private void initBindings() { @@ -106,17 +104,17 @@ public class EditArticoloDialog extends BaseDialogFragment { ArticoloOrdine articoloOrdine = mArticolo.getValue(); BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf()); int cnf = 0; - if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0){ + if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0) { cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue(); } - this.numCnf.set( cnf); + this.numCnf.set(cnf); this.mBinding.executePendingBindings(); mLockedInput = false; } }); BindableInteger.registerListener(numCnf, qta -> { - if (!mLockedInput){ + if (!mLockedInput) { mLockedInput = true; ArticoloOrdine articoloOrdine = mArticolo.getValue(); @@ -127,6 +125,22 @@ public class EditArticoloDialog extends BaseDialogFragment { mLockedInput = false; } }); + mBinding.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { +// saveAndExit(); + mBinding.inputNumCnfText.requestFocus(); + return true; + } + return false; + }); + + mBinding.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + saveAndExit(); + return true; + } + return false; + }); } public void saveAndExit() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java index da003f81..daf89bc9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java @@ -2,11 +2,12 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; import java.util.List; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -63,7 +64,15 @@ public class PVEditOrderHelper { mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); } - public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError){ + public void saveArticoliToOrdine(List articoli, Runnable onSave, RunnableArgs onFail) { + mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail); + } + + public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) { mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError); } + + public void getNewArticoli(int idGrigla, RunnableArgs> onSuccess, RunnableArgs onError) { + mArticoliGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index ba6f7ca1..1de6f0f3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -29,7 +29,7 @@ public class DialogScanLisA { private BaseDialog mDialog; private Dialog mCurrentProgress; - private DialogScanCodiceGrigliaBinding mBinding; + private final DialogScanCodiceGrigliaBinding mBinding; private RunnableArgs mOnDialogDismiss; @@ -54,6 +54,13 @@ public class DialogScanLisA { mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mOnDialogDismiss = onDialogDismiss; initBarcode(); + + + BarcodeScanDTO fakeScan = new BarcodeScanDTO(); + fakeScan.setStringValue("4AP001"); + onScanSuccessfull.run(fakeScan); + + } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { diff --git a/app/src/main/res/drawable/ic_baseline_alert_24.xml b/app/src/main/res/drawable/ic_baseline_alert_24.xml new file mode 100644 index 00000000..40ad9444 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_alert_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_new_24.xml b/app/src/main/res/drawable/ic_baseline_new_24.xml new file mode 100644 index 00000000..af35c19b --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_new_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_stars_24.xml b/app/src/main/res/drawable/ic_baseline_stars_24.xml new file mode 100644 index 00000000..ecfbeb6f --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_stars_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml index 7ae43a88..32964cca 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -7,6 +7,7 @@ + + + + + + + + + + @@ -310,8 +343,7 @@ android:background="@drawable/badge_round_corner" android:backgroundTint="@color/colorPrimary" android:orientation="vertical" - android:padding="8dp" - > + android:padding="8dp"> - - @@ -480,6 +511,7 @@ android:digits="0123456789" android:hint="@string/tot_qty" android:inputType="number" + android:selectAllOnFocus="true" app:binding="@{view.qtaOrd}" /> diff --git a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml index 47c0bf98..572eb7b3 100644 --- a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml +++ b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml @@ -29,15 +29,31 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - + android:orientation="horizontal"> + + + + + + - + @@ -15,132 +16,121 @@ - - + + + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:padding="16dp"> + android:orientation="horizontal"> - + android:text="@string/cod_alis_name" + android:textColor="@android:color/black" + android:layout_marginEnd="8dp" + android:textSize="16sp" /> - - - - - - + tools:text="4SECCO" + android:textColor="@android:color/black" + android:textSize="16sp" + android:textStyle="bold" /> - - - - - - - - - - - - - - - - - - - + tools:text="LISTINO FORMAT CEDI SECCO" + android:textColor="@android:color/black" + android:textSize="14sp" + android:layout_marginStart="4dp" + android:textStyle="italic" /> - + + + + + + + + + + + + + + + + + - > + android:paddingEnd="2dp" /> + android:adjustViewBounds="true" /> + android:text="@string/no_orders_found_message" /> - - + + - - @@ -222,7 +210,7 @@ android:layout_width="0dp" android:layout_height="0dp" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.3"/> + app:layout_constraintGuide_percent="0.3" /> - - + fab:fab_colorRipple="#66FFFFFF" /> \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a8d9bb89..9c133848 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -375,4 +375,6 @@ Previsione di vendita Giacenza Qtà proposta + giorni + Nuovo articolo in griglia \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a48cef4c..ec6181f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -384,4 +384,6 @@ Sales prediction Stock Suggested Qty + days + Newly added product