diff --git a/app/build.gradle b/app/build.gradle index e245bd74..4bdb2c88 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 354 - def appVersionName = '1.32.14' + def appVersionCode = 355 + def appVersionName = '1.32.15' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java index a8b35d2f..a70eb647 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java @@ -70,19 +70,19 @@ public class MainApplication extends Application { // handler listener - private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler = + private final Thread.UncaughtExceptionHandler _unCaughtExceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { - try { - UtilityLogger.error(new Exception(ex)); - } catch (Exception e) { - Log.e("Uncaught error", "Exception Logger failed!", e); - //MainApplication.exit(); - } - // re-throw critical exception further to the os (important) defaultUncaughtExceptionHandler.uncaughtException(thread, ex); + + try { + UtilityLogger.error(new Exception(ex)); + MainApplication.exit(); + } catch (Exception e) { + Log.e("Uncaught error", "Exception Logger failed!", e); + } } }; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index bf8f6438..042122ad 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.context; import android.content.Context; +import com.annimon.stream.Stream; import com.google.firebase.crashlytics.FirebaseCrashlytics; import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.DiskLogAdapter; @@ -91,6 +92,32 @@ public class AppContext { logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath()); int maxBytesSize = 5 * 1024 * 1024; Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize)); + + removeOldLogs(logsFolder); + } + + private void removeOldLogs(File logsFolder) { + var files = logsFolder.listFiles(); + + if (files == null || files.length <= 1) + return; + + var logFiles = Stream.of(files) + .sortBy(x -> -1 * x.lastModified()) + .skip(1) + .toList(); + + for (var logFile : logFiles) { + boolean isDeleted = logFile.delete(); + } + + files = logsFolder.listFiles(); + + if (files == null || files.length > 1) + return; + + final boolean isRenamed = files[0].renameTo(new File(files[0].getParentFile().getAbsolutePath() + "/" + "logs_0.csv")); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java index 4723cd6b..c38160f8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverService.java @@ -39,6 +39,9 @@ public class ColliDataRecoverService { if(isFilePresent(CommonConst.Files.RECOVER_COLLO_FILE)) { loadLocalFile(); } + + if(mtbColtsSessions == null) + mtbColtsSessions = new ArrayList<>(); } public boolean thereIsAnExistantSession() { @@ -47,7 +50,6 @@ public class ColliDataRecoverService { public List getAllSessionIDs() { if(thereIsAnExistantSession()) { - return Stream.of(mtbColtsSessions) .map(ColliDataRecoverDTO::getId) .toList(); @@ -56,7 +58,6 @@ public class ColliDataRecoverService { } public ColliDataRecoverDTO getSession(Integer sessionID) { - if(sessionID == null) return null; return getIfExists(sessionID); 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 f2f5d5e9..edb5bd6c 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 @@ -40,8 +40,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; InventarioRoomDTO.class, InventarioRowRoomDTO.class }, - version = 14, - exportSchema = true) + version = 15) @TypeConverters({ DateConverter.class, BigDecimalConverter.class, @@ -135,4 +134,24 @@ public abstract class AppDatabase extends RoomDatabase { + " ADD COLUMN new INTEGER"); } }; + + static final Migration MIGRATION_14_15 = new Migration(14, 15) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + // rimuovo vincoli "not null" dai campi id_griglia e cod_alis + database.execSQL("DROP TABLE IF EXISTS ordini_tmp;"); + database.execSQL("CREATE TABLE ordini_tmp (ordine_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, data_ins INTEGER, annotazioni TEXT, transmitted INTEGER NOT NULL, transmission_date INTEGER, gestione TEXT, data_ord INTEGER, num_ord INTEGER, cod_mdep TEXT, id_griglia INTEGER, cod_alis TEXT);"); + database.execSQL("INSERT INTO ordini_tmp(ordine_id,data_ins,annotazioni,transmitted,transmission_date,gestione,data_ord,num_ord,cod_mdep,id_griglia,cod_alis) SELECT ordini.ordine_id,ordini.data_ins,ordini.annotazioni,ordini.transmitted,ordini.transmission_date,ordini.gestione,ordini.data_ord,ordini.num_ord,ordini.cod_mdep,ordini.id_griglia,griglie.cod_alis from ordini left outer join griglie on ordini.id_griglia = griglie.griglia_id;"); + database.execSQL("DROP TABLE ordini;"); + database.execSQL("ALTER TABLE ordini_tmp RENAME TO ordini;"); + // aggiungo campo cod_alis sulle righe dell'ordine + database.execSQL("DROP TABLE IF EXISTS art_ord_tmp;"); + database.execSQL("CREATE TABLE IF NOT EXISTS art_ord_tmp( articolo_ordine_id INTEGER PRIMARY KEY AUTOINCREMENT, cod_mart TEXT, descrizione TEXT, unt_mis TEXT, qta_cnf REAL NOT NULL, bar_code TEXT, merce_da_ric REAL NOT NULL, media_sett REAL NOT NULL, flag_qta_multipla TEXT, qta_min_ordinabile REAL NOT NULL, id_ordine INTEGER NOT NULL, qta_ord REAL NOT NULL, data_ins INTEGER, new_no_promo INTEGER NOT NULL, system_note TEXT, cod_alis TEXT , FOREIGN KEY(id_ordine) REFERENCES ordini(ordine_id) ON UPDATE NO ACTION ON DELETE CASCADE );"); + database.execSQL("INSERT INTO art_ord_tmp(articolo_ordine_id, cod_mart, descrizione, unt_mis, qta_cnf, bar_code, merce_da_ric, media_sett, flag_qta_multipla, qta_min_ordinabile, id_ordine, qta_ord, data_ins, new_no_promo, system_note, cod_alis) SELECT articolo_ordine_id, cod_mart, descrizione, unt_mis, qta_cnf, bar_code, merce_da_ric, media_sett, flag_qta_multipla, qta_min_ordinabile, id_ordine, qta_ord, data_ins, new_no_promo, system_note, null from articoli_ordine;"); + database.execSQL("DROP TABLE articoli_ordine;"); + database.execSQL("ALTER TABLE art_ord_tmp RENAME TO articoli_ordine;"); + database.execSQL("CREATE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine ON articoli_ordine (id_ordine);"); + database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);"); + } + }; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java index 840daa56..a86e9e29 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/OrdineDao.java @@ -19,7 +19,7 @@ public interface OrdineDao { @Query("SELECT ordini.* from ordini where ordini.transmitted = 1") List getAllTrasnmitted(); - @Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ordini.cod_alis = :codAlis group by ordini.ordine_id") + @Query("SELECT ordini.*, count(articolo_ordine_id) as countArticoli from ordini left join articoli_ordine ON ordini.ordine_id = articoli_ordine.id_ordine where ordini.transmitted = 0 and ((:codAlis is null and ordini.cod_alis is null) OR (ordini.cod_alis = :codAlis)) group by ordini.ordine_id") List getAllOpenOrdersByGriglia(String codAlis); @Insert 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 decb423e..d6f5dbaa 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 @@ -73,6 +73,9 @@ public class ArticoloOrdine { @ColumnInfo(name = "system_note") private String systemNote; + @ColumnInfo(name = "cod_alis") + private String codAlis; + @Ignore private int ggScadenza = 0; @@ -85,6 +88,9 @@ public class ArticoloOrdine { @Ignore private BigDecimal qtaProposta = BigDecimal.ZERO; + @Ignore + private BigDecimal ctMaxOrd = BigDecimal.ZERO; + @Ignore private int bgTint; @@ -277,4 +283,21 @@ public class ArticoloOrdine { public void setSystemNote(String systemNote) { this.systemNote = systemNote; } + + public String getCodAlis() { + return codAlis; + } + + public void setCodAlis(String codAlis) { + this.codAlis = codAlis; + } + + public BigDecimal getCtMaxOrd() { + return ctMaxOrd; + } + + public ArticoloOrdine setCtMaxOrd(BigDecimal ctMaxOrd) { + this.ctMaxOrd = ctMaxOrd; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java index 1fa78020..b6161e2d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/Ordine.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.core.data_store.db.entity; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.room.ColumnInfo; import androidx.room.Entity; @@ -55,7 +54,6 @@ public class Ordine { private int idGriglia; @ColumnInfo(name = "cod_alis") - @NonNull private String codAlis; public int getOrdineId() { 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 deleted file mode 100644 index 6f78e336..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java +++ /dev/null @@ -1,218 +0,0 @@ -package it.integry.integrywmsnative.core.data_store.db.view_model; - -import org.apache.commons.lang3.StringUtils; -import org.json.JSONObject; - -import java.math.BigDecimal; -import java.util.HashMap; - -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.utility.UtilityDate; - -public class ArticoloDTO { - - 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; - private float qtaOrd; - - - public String getCodMart() { - return codMart; - } - - public void setCodMart(String codMart) { - this.codMart = codMart; - } - - public String getDescrizione() { - return descrizione; - } - - public void setDescrizione(String descrizione) { - this.descrizione = descrizione; - } - - public String getUntMis() { - return untMis; - } - - public void setUntMis(String untMis) { - this.untMis = untMis; - } - - public float getQtaCnf() { - return qtaCnf; - } - - public void setQtaCnf(float qtaCnf) { - this.qtaCnf = qtaCnf; - } - - public String getBarCode() { - return barcode; - } - - public void setBarCode(String barCode) { - this.barcode = barCode; - } - - public float getMerceDaRic() { - return merceDaRic; - } - - public void setMerceDaRic(float merceDaRic) { - this.merceDaRic = merceDaRic; - } - - public float getMediaSett() { - return mediaSett; - } - - public void setMediaSett(float mediaSett) { - this.mediaSett = mediaSett; - } - - public String getFlagQtaMultipla() { - return flagQtaMultipla; - } - - public void setFlagQtaMultipla(String flagQtaMultipla) { - this.flagQtaMultipla = flagQtaMultipla; - } - - public float getQtaMinOrdinabile() { - return qtaMinOrdinabile; - } - - public void setQtaMinOrdinabile(float qtaMinOrdinabile) { - this.qtaMinOrdinabile = qtaMinOrdinabile; - } - - public String getBarcode() { - return barcode; - } - - public void setBarcode(String barcode) { - this.barcode = barcode; - } - - public int getGgScadenza() { - return ggScadenza; - } - - public void setGgScadenza(int ggScadenza) { - this.ggScadenza = ggScadenza; - } - - public float getGiacenza() { - return giacenza; - } - - public void setGiacenza(float giacenza) { - this.giacenza = giacenza; - } - - public float getQtaPrevistaVendita() { - return qtaPrevistaVendita; - } - - public void setQtaPrevistaVendita(float qtaPrevistaVendita) { - this.qtaPrevistaVendita = qtaPrevistaVendita; - } - - public float getQtaProposta() { - return qtaProposta; - } - - public void setQtaProposta(float qtaProposta) { - 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 float getQtaOrd() { - return qtaOrd; - } - - public ArticoloDTO setQtaOrd(float qtaOrd) { - this.qtaOrd = qtaOrd; - return this; - } - - public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { - ArticoloOrdine articolo = new ArticoloOrdine(); - - articolo.setIdOrdine(ordine.getOrdineId()); - - articolo.setBarCode(this.getBarCode()); - articolo.setCodMart(this.getCodMart()); - articolo.setMediaSett(this.getMediaSett()); - articolo.setFlagQtaMultipla(this.getFlagQtaMultipla()); - articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); - articolo.setMerceDaRic(this.getMerceDaRic()); - articolo.setQtaCnf(this.getQtaCnf()); - articolo.setUntMis(this.getUntMis()); - articolo.setDescrizione(this.getDescrizione()); - articolo.setDataIns(UtilityDate.getDateInstance()); - articolo.setGgScadenza(this.getGgScadenza()); - articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza())); - articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita())); - articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); - articolo.setNewNoPromo(this.isNewNoPromo()); - articolo.setSystemNote(generateSystemNote()); - articolo.setQtaOrd(this.getQtaOrd()); - - return articolo; - } - - public String generateSystemNote() { - HashMap pairs = new HashMap<>(); - pairs.put("qta_proposta", String.valueOf(qtaProposta)); - pairs.put("giacenza", String.valueOf(giacenza)); - - return new JSONObject(pairs).toString(); - } - - - public int getSortByBarcodeCondition(String barcode) { - if (codMart.equalsIgnoreCase(barcode)) - return 1; - if (barcode != null) { - if (barcode.equalsIgnoreCase(barcode)) - return 2; - if (StringUtils.leftPad(barcode, 13, "0").equalsIgnoreCase(barcode)) - return 3; - } - return 100; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloOrdinabileDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloOrdinabileDTO.java new file mode 100644 index 00000000..16835c58 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloOrdinabileDTO.java @@ -0,0 +1,224 @@ +package it.integry.integrywmsnative.core.data_store.db.view_model; + +import org.json.JSONObject; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; + +public class ArticoloOrdinabileDTO { + + + private String codAlis; + private String codMart; + private String descrizione; + private String untMis; + private float qtaCnf; + private float merceDaRic; + private float mediaSett; + private String flagQtaMultipla; + private String flagTracciabilita; + private String flagQtaCnfFissa; + private boolean newNoPromo; + private float qtaMinOrdinabile; + private int ggScadenza; + private BigDecimal giacenza; + private BigDecimal qtaPrevistaVendita; + private BigDecimal qtaProposta; + private float qtaOrd; + + private float ctMaxOrd; + + private List barcode; + + private String selectedBarcode; + + public String getCodAlis() { + return codAlis; + } + + public ArticoloOrdinabileDTO setCodAlis(String codAlis) { + this.codAlis = codAlis; + return this; + } + + public String getCodMart() { + return codMart; + } + + public ArticoloOrdinabileDTO setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public ArticoloOrdinabileDTO setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getUntMis() { + return untMis; + } + + public ArticoloOrdinabileDTO setUntMis(String untMis) { + this.untMis = untMis; + return this; + } + + public float getQtaCnf() { + return qtaCnf; + } + + public ArticoloOrdinabileDTO setQtaCnf(float qtaCnf) { + this.qtaCnf = qtaCnf; + return this; + } + + public float getMerceDaRic() { + return merceDaRic; + } + + public ArticoloOrdinabileDTO setMerceDaRic(float merceDaRic) { + this.merceDaRic = merceDaRic; + return this; + } + + public float getMediaSett() { + return mediaSett; + } + + public ArticoloOrdinabileDTO setMediaSett(float mediaSett) { + this.mediaSett = mediaSett; + return this; + } + + public String getFlagQtaMultipla() { + return flagQtaMultipla; + } + + public ArticoloOrdinabileDTO setFlagQtaMultipla(String flagQtaMultipla) { + this.flagQtaMultipla = flagQtaMultipla; + return this; + } + + public String getFlagTracciabilita() { + return flagTracciabilita; + } + + public ArticoloOrdinabileDTO setFlagTracciabilita(String flagTracciabilita) { + this.flagTracciabilita = flagTracciabilita; + return this; + } + + public String getFlagQtaCnfFissa() { + return flagQtaCnfFissa; + } + + public ArticoloOrdinabileDTO setFlagQtaCnfFissa(String flagQtaCnfFissa) { + this.flagQtaCnfFissa = flagQtaCnfFissa; + return this; + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public ArticoloOrdinabileDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } + + public float getQtaMinOrdinabile() { + return qtaMinOrdinabile; + } + + public ArticoloOrdinabileDTO setQtaMinOrdinabile(float qtaMinOrdinabile) { + this.qtaMinOrdinabile = qtaMinOrdinabile; + return this; + } + + public int getGgScadenza() { + return ggScadenza; + } + + public ArticoloOrdinabileDTO setGgScadenza(int ggScadenza) { + this.ggScadenza = ggScadenza; + return this; + } + + public BigDecimal getGiacenza() { + return giacenza; + } + + public ArticoloOrdinabileDTO setGiacenza(BigDecimal giacenza) { + this.giacenza = giacenza; + return this; + } + + public BigDecimal getQtaPrevistaVendita() { + return qtaPrevistaVendita; + } + + public ArticoloOrdinabileDTO setQtaPrevistaVendita(BigDecimal qtaPrevistaVendita) { + this.qtaPrevistaVendita = qtaPrevistaVendita; + return this; + } + + public BigDecimal getQtaProposta() { + return qtaProposta; + } + + public ArticoloOrdinabileDTO setQtaProposta(BigDecimal qtaProposta) { + this.qtaProposta = qtaProposta; + return this; + } + + public float getQtaOrd() { + return qtaOrd; + } + + public ArticoloOrdinabileDTO setQtaOrd(float qtaOrd) { + this.qtaOrd = qtaOrd; + return this; + } + + public float getCtMaxOrd() { + return ctMaxOrd; + } + + public ArticoloOrdinabileDTO setCtMaxOrd(float ctMaxOrd) { + this.ctMaxOrd = ctMaxOrd; + return this; + } + + public List getBarcode() { + return barcode; + } + + public ArticoloOrdinabileDTO setBarcode(List barcode) { + this.barcode = barcode; + return this; + } + + public String generateSystemNote() { + HashMap pairs = new HashMap<>(); + pairs.put("qta_proposta", String.valueOf(qtaProposta)); + pairs.put("giacenza", String.valueOf(giacenza)); + + return new JSONObject(pairs).toString(); + } + + public String getSelectedBarcode() { + return selectedBarcode; + } + + public ArticoloOrdinabileDTO setSelectedBarcode(String selectedBarcode) { + this.selectedBarcode = selectedBarcode; + return this; + } +} + \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java deleted file mode 100644 index 9c0b4184..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/GrigliaDTO.java +++ /dev/null @@ -1,36 +0,0 @@ -package it.integry.integrywmsnative.core.data_store.db.view_model; - -import java.util.List; - -import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; - -public class GrigliaDTO { - private String descrLisa; - private String descrDepo; - private List grigliaAcquistiChild; - - - public String getDescrLisa() { - return descrLisa; - } - - public void setDescrLisa(String descrLisa) { - this.descrLisa = descrLisa; - } - - public String getDescrDepo() { - return descrDepo; - } - - public void setDescrDepo(String descrDepo) { - this.descrDepo = descrDepo; - } - - public List getGrigliaAcquistiChild() { - return grigliaAcquistiChild; - } - - public void setGrigliaAcquistiChild(List grigliaAcquistiChild) { - this.grigliaAcquistiChild = grigliaAcquistiChild; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java deleted file mode 100644 index e9c0a785..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdineWithGriglia.java +++ /dev/null @@ -1,33 +0,0 @@ -package it.integry.integrywmsnative.core.data_store.db.view_model; - -import androidx.room.Embedded; -import androidx.room.Ignore; - -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.di.BindableBoolean; - -public class OrdineWithGriglia { - - @Embedded - private Ordine ordine; - @Embedded - private Griglia griglia; - - - public Ordine getOrdine() { - return ordine; - } - - public void setOrdine(Ordine ordine) { - this.ordine = ordine; - } - - public Griglia getGriglia() { - return griglia; - } - - public void setGriglia(Griglia griglia) { - this.griglia = griglia; - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdiniAcquistoGrigliaDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdiniAcquistoGrigliaDTO.java new file mode 100644 index 00000000..aaaed334 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/OrdiniAcquistoGrigliaDTO.java @@ -0,0 +1,40 @@ +package it.integry.integrywmsnative.core.data_store.db.view_model; + +import java.util.List; + +public class OrdiniAcquistoGrigliaDTO { + private String descrLisa; + + private String descrDepo; + + private List articoli; + + public String getDescrLisa() { + return descrLisa; + } + + public OrdiniAcquistoGrigliaDTO setDescrLisa(String descrLisa) { + this.descrLisa = descrLisa; + return this; + } + + public String getDescrDepo() { + return descrDepo; + } + + public OrdiniAcquistoGrigliaDTO setDescrDepo(String descrDepo) { + this.descrDepo = descrDepo; + return this; + } + + public List getArticoli() { + return articoli; + } + + public OrdiniAcquistoGrigliaDTO setArticoli(List articoli) { + this.articoli = articoli; + return this; + } + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyOrderException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyOrderException.java new file mode 100644 index 00000000..bd1e78f8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/EmptyOrderException.java @@ -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 EmptyOrderException extends Exception { + public EmptyOrderException() { + super(UtilityResources.getString(R.string.empty_order)); + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/MaxQtyExceededException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/MaxQtyExceededException.java new file mode 100644 index 00000000..6ac0a184 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/MaxQtyExceededException.java @@ -0,0 +1,12 @@ +package it.integry.integrywmsnative.core.exception; + +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.utility.UtilityResources; + +public class MaxQtyExceededException extends Exception { + + public MaxQtyExceededException() { + super(UtilityResources.getString(R.string.max_qty_exceeded)); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java index 9c2760c6..16459e4d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumer.java @@ -2,8 +2,6 @@ package it.integry.integrywmsnative.core.rest.consumers; import android.util.Log; -import com.annimon.stream.Stream; - import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; @@ -13,8 +11,7 @@ import javax.inject.Singleton; 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.view_model.ArticoloDTO; -import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; +import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; @@ -37,47 +34,23 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { this.magazzinoRESTConsumer = magazzinoRESTConsumer; } - public void getArticoliListino(String codAlis, RunnableArgs onSuccess, RunnableArgs onFailed) { - + public void retrieveArticoli(String codAlis, String codMdep, RunnableArgs onSuccess, RunnableArgs onFailed) { PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); - ordiniARestService - .getArticoliListino(codAlis) + ordiniARestService.retrieveArticoli(codAlis, codMdep, null) .enqueue(new Callback<>() { @Override - public void onResponse(Call> call, Response> response) { - analyzeAnswer(response, "getArticoliListino", griglia -> { - + public void onResponse(Call> call, Response> response) { + var startTime = new Date().getTime(); + analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> { UtilityThread.executeParallel(() -> { - var startTime = new Date().getTime(); - - List listaArticoli = new ArrayList<>(); - - Stream.of(griglia.getGrigliaAcquistiChild()) - .groupBy(ArticoloDTO::getCodMart) - .forEach(entry -> { - - if (entry.getValue().size() == 1) { - listaArticoli.add(entry.getValue().get(0)); - } else { - for (ArticoloDTO articolo : entry.getValue()) { - if (!articolo.getBarCode().endsWith(articolo.getCodMart())) { - listaArticoli.add(articolo); - } - } - } - - }); - - griglia.setGrigliaAcquistiChild(listaArticoli); - Log.d("LOADING TIME 1", "MS: " + (new Date().getTime() - startTime)); - onSuccess.run(griglia); + onSuccess.run(articoliOrdineWrapper); }, false); }, onFailed); } @Override - public void onFailure(Call> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { Log.e("getArticoliListino_pv", t.toString()); UtilityLogger.error(new Exception(t)); onFailed.run(new Exception(t)); @@ -85,7 +58,31 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { }); } - public void saveOrdine(Ordine ordine, List articoli, RunnableArgs onSuccess, RunnableArgs onFailed) { + public void retrieveArticolo(String codAlis, String codMdep, String barcode, RunnableArgs onSuccess, RunnableArgs onFailed) { + PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); + ordiniARestService.retrieveArticoli(codAlis, codMdep, barcode) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + var startTime = new Date().getTime(); + analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> { + UtilityThread.executeParallel(() -> { + Log.d("LOADING TIME 1", "MS: " + (new Date().getTime() - startTime)); + onSuccess.run(articoliOrdineWrapper); + }, false); + }, onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + Log.e("getArticoliListino_pv", t.toString()); + UtilityLogger.error(new Exception(t)); + onFailed.run(new Exception(t)); + } + }); + } + + public void saveOrdine(Ordine ordine, List articoli, String codMdep, RunnableArgs onSuccess, RunnableArgs onFailed) { SaveDTO saveDTO = new SaveDTO(); OrdineDTO ordineDTO = new OrdineDTO(); List artRows = new ArrayList<>(); @@ -101,21 +98,36 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { saveDTO.setGestione("O"); saveDTO.setOrdineDTO(ordineDTO); + PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300); + ordiniARestService.save(codMdep, saveDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + var startTime = new Date().getTime(); + analyzeAnswer(response, "retrieveArticoliOrdine", articoliOrdineWrapper -> { + UtilityThread.executeParallel(() -> { +// if (data == null) { +// onFailed.run(new Exception("Nessun ordine generato")); +// return; +// } + ordine.setTransmitted(true); + ordine.setTransmissionDate(UtilityDate.getDateInstance()); +// ordine.setGestione(data.getGestione()); +// ordine.setDataOrdS(data.getDataOrd()); +// ordine.setCodMdep(data.getCodMdep()); +// ordine.setNumOrd(data.getNumOrd()); + onSuccess.run(ordine); + }, false); + }, onFailed); + } - magazzinoRESTConsumer.saveOrdine(saveDTO, data -> { - if (data == null) { - onFailed.run(new Exception("Nessun ordine generato")); - return; - } - - ordine.setTransmitted(true); - ordine.setTransmissionDate(UtilityDate.getDateInstance()); - ordine.setGestione(data.getGestione()); - ordine.setDataOrdS(data.getDataOrd()); - ordine.setCodMdep(data.getCodMdep()); - ordine.setNumOrd(data.getNumOrd()); - onSuccess.run(ordine); - }, onFailed); + @Override + public void onFailure(Call> call, Throwable t) { + Log.e("saveOrdine", t.toString()); + UtilityLogger.error(new Exception(t)); + onFailed.run(new Exception(t)); + } + }); } @@ -131,6 +143,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { dto.setSystemNote(art.getSystemNote()); dto.setQta(BigDecimal.valueOf(art.getQtaOrd())); dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf())); + dto.setCodAlis(art.getCodAlis()); dto.setColli(BigDecimal.ZERO); return dto; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java index 4123f9f0..9e639ae7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PVOrdiniAcquistoRESTConsumerService.java @@ -1,13 +1,18 @@ package it.integry.integrywmsnative.core.rest.consumers; -import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; +import it.integry.integrywmsnative.core.data_store.db.view_model.OrdiniAcquistoGrigliaDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; public interface PVOrdiniAcquistoRESTConsumerService { + @GET("wms/ordini-acquisto/articoli") + Call> retrieveArticoli(@Query("chiaveGriglia") String codAlis, @Query("codMdep") String codMdep, @Query("barcodeArt") String barcode); - @POST("SM2GetElencoArticoli") - Call> getArticoliListino(@Query("chiaveGriglia") String codAlis); + @POST("wms/ordini-acquisto/save") + Call> save(@Query("codMdep") String codMdep, @Body() SaveDTO saveDTO); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java index c1b418d5..c86d3897 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java @@ -8,23 +8,23 @@ import it.integry.integrywmsnative.core.CommonConst; public class UtilityBigDecimal { public static boolean greaterThan(BigDecimal input, BigDecimal toCompareWith) { - if(input == null) return false; - if(toCompareWith == null) return false; + if (input == null) return false; + if (toCompareWith == null) return false; return input.compareTo(toCompareWith) > 0; } public static boolean equalsTo(BigDecimal input, BigDecimal toCompareWith) { - if(input == null && toCompareWith == null) return true; - if(input == null) return false; - if(toCompareWith == null) return false; + if (input == null && toCompareWith == null) return true; + if (input == null) return false; + if (toCompareWith == null) return false; return input.compareTo(toCompareWith) == 0; } public static boolean lowerThan(BigDecimal input, BigDecimal toCompareWith) { - if(input == null) return false; - if(toCompareWith == null) return false; + if (input == null) return false; + if (toCompareWith == null) return false; return input.compareTo(toCompareWith) < 0; } @@ -38,15 +38,15 @@ public class UtilityBigDecimal { } public static BigDecimal getLowerBetween(BigDecimal input1, BigDecimal input2) { - if(input1 == null) return input2; - if(input2 == null) return input1; + if (input1 == null) return input2; + if (input2 == null) return input1; return lowerThan(input1, input2) ? input1 : input2; } public static BigDecimal getGreaterBetween(BigDecimal input1, BigDecimal input2) { - if(input1 == null) return input2; - if(input2 == null) return input1; + if (input1 == null) return input2; + if (input2 == null) return input1; return greaterThan(input1, input2) ? input1 : input2; } @@ -57,14 +57,14 @@ public class UtilityBigDecimal { } public static BigDecimal divide(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) { - if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; + if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; return input1.divide(divisor, 3, roundingMode); } public static BigDecimal divideToInteger(BigDecimal input1, BigDecimal divisor) { - if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; - return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue()); + if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; + return new BigDecimal(input1.divide(divisor, 3, BigDecimal.ROUND_HALF_EVEN).intValue()); } @@ -73,8 +73,8 @@ public class UtilityBigDecimal { } public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor, RoundingMode roundingMode) { - if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; - return new BigDecimal(input1.divide(divisor,0, roundingMode).intValue()); + if (divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; + return new BigDecimal(input1.divide(divisor, 0, roundingMode).intValue()); } public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) { @@ -87,4 +87,8 @@ public class UtilityBigDecimal { return input.setScale(CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS, RoundingMode.HALF_EVEN); } + public static boolean isNullOrZero(BigDecimal input) { + return input == null || equalsTo(input, BigDecimal.ZERO); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ArtDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ArtDTO.java index 3f95ed4b..71aa5b02 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ArtDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/ArtDTO.java @@ -5,123 +5,133 @@ import java.util.Date; public class ArtDTO { - private Integer rigaOrd; + private Integer rigaOrd; - private String codMart; + private String codMart; - private String barcode; + private String barcode; - private String descrizione; + private String descrizione; - private Date dataIns; + private Date dataIns; - private String untMis; + private String untMis; - private BigDecimal qta; + private BigDecimal qta; - private BigDecimal qtaCnf; + private BigDecimal qtaCnf; - private BigDecimal colli; + private BigDecimal colli; - private String partitaMag; + private String partitaMag; - private Date dataScad; + private Date dataScad; - private String systemNote; + private String systemNote; + private String codAlis; - public Integer getRigaOrd() { - return rigaOrd; - } + public Integer getRigaOrd() { + return rigaOrd; + } - public void setRigaOrd(Integer rigaOrd) { - this.rigaOrd = rigaOrd; - } + public void setRigaOrd(Integer rigaOrd) { + this.rigaOrd = rigaOrd; + } - public String getCodMart() { - return codMart; - } + public String getCodMart() { + return codMart; + } - public void setCodMart(String codMart) { - this.codMart = codMart; - } + public void setCodMart(String codMart) { + this.codMart = codMart; + } - public String getBarcode() { - return barcode; - } + public String getBarcode() { + return barcode; + } - public void setBarcode(String barcode) { - this.barcode = barcode; - } + public void setBarcode(String barcode) { + this.barcode = barcode; + } - public String getDescrizione() { - return descrizione; - } + public String getDescrizione() { + return descrizione; + } - public void setDescrizione(String descrizione) { - this.descrizione = descrizione; - } + public void setDescrizione(String descrizione) { + this.descrizione = descrizione; + } - public Date getDataIns() { - return dataIns; - } + public Date getDataIns() { + return dataIns; + } - public void setDataIns(Date dataIns) { - this.dataIns = dataIns; - } + public void setDataIns(Date dataIns) { + this.dataIns = dataIns; + } - public String getUntMis() { - return untMis; - } + public String getUntMis() { + return untMis; + } - public void setUntMis(String untMis) { - this.untMis = untMis; - } + public void setUntMis(String untMis) { + this.untMis = untMis; + } - public BigDecimal getQta() { - return qta; - } + public BigDecimal getQta() { + return qta; + } - public void setQta(BigDecimal qta) { - this.qta = qta; - } + public void setQta(BigDecimal qta) { + this.qta = qta; + } - public BigDecimal getQtaCnf() { - return qtaCnf; - } + public BigDecimal getQtaCnf() { + return qtaCnf; + } - public void setQtaCnf(BigDecimal qtaCnf) { - this.qtaCnf = qtaCnf; - } + public void setQtaCnf(BigDecimal qtaCnf) { + this.qtaCnf = qtaCnf; + } - public BigDecimal getColli() { - return colli; - } + public BigDecimal getColli() { + return colli; + } - public void setColli(BigDecimal colli) { - this.colli = colli; - } + public void setColli(BigDecimal colli) { + this.colli = colli; + } - public String getPartitaMag() { - return partitaMag; - } + public String getPartitaMag() { + return partitaMag; + } - public void setPartitaMag(String partitaMag) { - this.partitaMag = partitaMag; - } + public void setPartitaMag(String partitaMag) { + this.partitaMag = partitaMag; + } - public Date getDataScad() { - return dataScad; - } + public Date getDataScad() { + return dataScad; + } - public void setDataScad(Date dataScad) { - this.dataScad = dataScad; - } + public void setDataScad(Date dataScad) { + this.dataScad = dataScad; + } - public String getSystemNote() { - return systemNote; - } + public String getSystemNote() { + return systemNote; + } - public void setSystemNote(String systemNote) { - this.systemNote = systemNote; - } + public void setSystemNote(String systemNote) { + this.systemNote = systemNote; + } + + public String getCodAlis() { + return codAlis; + } + + public ArtDTO setCodAlis(String codAlis) { + this.codAlis = codAlis; + return this; + } } 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 c2b93767..b0682e60 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 @@ -29,7 +29,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_cache.DataCache; 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.view_model.ArticoloDTO; +import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.settings.SettingsManager; @@ -53,7 +53,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi @Inject PVOrdineAcquistoEditViewModel mViewModel; - public static Intent newInstance(Context context, Ordine ordine, List listArts) { + public static Intent newInstance(Context context, Ordine ordine, List listArts) { Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); String keyOrdine = DataCache.addItem(ordine); String keyListArts = DataCache.addItem(listArts); @@ -114,7 +114,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi ordine.setOrderNewProducts(false); } }); - List articoliGriglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_LIST_ARTS)); + List articoliGriglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_LIST_ARTS)); this.mViewModel.init(ordine, articoliGriglia); } @@ -194,6 +194,14 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi }, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView"); } + @Override + public void confirmExceedingQtyOrder(Runnable onSuccess) { + DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(), + Html.fromHtml(getResources().getString(R.string.confirm_orderable_qty_exceeded)), + null, + onSuccess, this::onLoadingEnded).show(getSupportFragmentManager(), "confirmExceedingQtyOrder"); + } + @Override public int getColorFromResource(int resId) { return getResources().getColor(resId); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java index 4b6bd4a9..b90be94d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditViewModel.java @@ -21,13 +21,16 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineR 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.data_store.db.repository.OrdineRepository; -import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; +import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO; +import it.integry.integrywmsnative.core.exception.EmptyOrderException; import it.integry.integrywmsnative.core.exception.NoArtsInGridException; import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; +import it.integry.integrywmsnative.core.utility.UtilityDate; public class PVOrdineAcquistoEditViewModel { @@ -52,7 +55,7 @@ public class PVOrdineAcquistoEditViewModel { private Listener mListener; - private List mArticoliGriglia = new ArrayList<>(); + private List mArticoliGriglia = new ArrayList<>(); private final MutableLiveData> mArticoli = new MutableLiveData<>(); @@ -68,7 +71,7 @@ public class PVOrdineAcquistoEditViewModel { this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer; } - public void init(Ordine ordine, List articoliGriglia) { + public void init(Ordine ordine, List articoliGriglia) { this.mCurrentOrdine = ordine; mArticoliGriglia.clear(); mArticoliGriglia.addAll(articoliGriglia); @@ -91,18 +94,22 @@ public class PVOrdineAcquistoEditViewModel { } private ArticoloOrdine completeDataArticoli(ArticoloOrdine art) { - ArticoloDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(new ArticoloDTO()); - art.setGgScadenza(artGrid.getGgScadenza()); - art.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza())); - art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta())); - art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita())); - art.setBgTint(getBgTint(art)); - art.setMediaSett(artGrid.getMediaSett()); - art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile()); - art.setMerceDaRic(artGrid.getMerceDaRic()); - art.setNewNoPromo(artGrid.isNewNoPromo()); - art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla()); - art.setSystemNote(artGrid.generateSystemNote()); + ArticoloOrdinabileDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(null); + if (artGrid != null) { + art.setGgScadenza(artGrid.getGgScadenza()); + art.setGiacenza(artGrid.getGiacenza()); + art.setDescrizione(artGrid.getDescrizione()); + art.setQtaProposta(artGrid.getQtaProposta()); + art.setQtaPrevistaVendita(artGrid.getQtaPrevistaVendita()); + art.setBgTint(getBgTint(art)); + art.setMediaSett(artGrid.getMediaSett()); + art.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile()); + art.setMerceDaRic(artGrid.getMerceDaRic()); + art.setNewNoPromo(artGrid.isNewNoPromo()); + art.setFlagQtaMultipla(artGrid.getFlagQtaMultipla()); + art.setCtMaxOrd(BigDecimal.valueOf(artGrid.getCtMaxOrd())); + art.setSystemNote(artGrid.generateSystemNote()); + } return art; } @@ -126,7 +133,7 @@ public class PVOrdineAcquistoEditViewModel { try { this.sendOnLoadingStarted(); - ArticoloDTO articoloDTO = getArticoloFromBarcode(barcode); + ArticoloOrdinabileDTO articoloDTO = getArticoloFromBarcode(barcode); if (articoloDTO == null) { throw new NoResultFromBarcodeException(barcode); } @@ -149,16 +156,23 @@ public class PVOrdineAcquistoEditViewModel { } } - public void addArticoloToOrdine(ArticoloDTO art, Runnable onSuccess, RunnableArgs onFail) { + public void addArticoloToOrdine(ArticoloOrdinabileDTO art, Runnable onSuccess, RunnableArgs onFail) { try { - mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, foundArt -> { + mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.getCodMart(), foundArt -> { - var articolo = foundArt != null ? foundArt : art.convertToArticoloOrdine(mCurrentOrdine); - - if (isAutoOrderOnScan()) { + var articolo = foundArt != null ? completeDataArticoli(foundArt) : convertToArticoloOrdine(art, mCurrentOrdine); + Runnable saveAction = () -> { articolo.setQtaOrd(articolo.getQtaOrd() + articolo.getQtaCnf()); mArticoliOrdineRepository.saveArticoloToOrdine(articolo, () -> this.refreshListArticoli(onSuccess), onFail); + }; + + if (isAutoOrderOnScan()) { + if (!UtilityBigDecimal.isNullOrZero(articolo.getCtMaxOrd()) && UtilityBigDecimal.greaterThan(BigDecimal.valueOf(articolo.getQtaOrd() + articolo.getQtaCnf()), articolo.getCtMaxOrd())) { + mListener.confirmExceedingQtyOrder(saveAction); + } else { + saveAction.run(); + } } else { this.sendOnItemDispatched(articolo, onSuccess); } @@ -172,16 +186,50 @@ public class PVOrdineAcquistoEditViewModel { } } - public ArticoloDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException { + private ArticoloOrdine convertToArticoloOrdine(ArticoloOrdinabileDTO art, Ordine ordine) { + ArticoloOrdine articolo = new ArticoloOrdine(); + + articolo.setIdOrdine(ordine.getOrdineId()); + + articolo.setBarCode(art.getSelectedBarcode()); + articolo.setCodMart(art.getCodMart()); + articolo.setMediaSett(art.getMediaSett()); + articolo.setFlagQtaMultipla(art.getFlagQtaMultipla()); + articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile()); + articolo.setMerceDaRic(art.getMerceDaRic()); + articolo.setQtaCnf(art.getQtaCnf()); + articolo.setUntMis(art.getUntMis()); + articolo.setDescrizione(art.getDescrizione()); + articolo.setDataIns(UtilityDate.getDateInstance()); + articolo.setGgScadenza(art.getGgScadenza()); + articolo.setGiacenza(art.getGiacenza()); + articolo.setQtaPrevistaVendita(art.getQtaPrevistaVendita()); + articolo.setQtaProposta(art.getQtaProposta()); + articolo.setNewNoPromo(art.isNewNoPromo()); + articolo.setSystemNote(art.generateSystemNote()); + articolo.setQtaOrd(art.getQtaOrd()); + articolo.setCodAlis(art.getCodAlis()); + articolo.setCtMaxOrd(BigDecimal.valueOf(art.getCtMaxOrd())); + + return articolo; + } + + public ArticoloOrdinabileDTO getArticoloFromBarcode(String barcode) throws NoArtsInGridException { if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) { throw new NoArtsInGridException(); } + ArticoloOrdinabileDTO art = Stream.of(mArticoliGriglia).filter(articolo -> + articolo.getCodMart().equalsIgnoreCase(barcode) || + articolo.getBarcode().contains(barcode) || + articolo.getBarcode().contains(StringUtils.leftPad(barcode, 13, "0")) - return Stream.of(mArticoliGriglia).filter(articolo -> - articolo.getCodMart().equalsIgnoreCase(barcode) || - articolo.getBarcode().equalsIgnoreCase(barcode) || - articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0")) - ).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null); + ) +// .sortBy(x -> x.getSortByBarcodeCondition(barcode)) + .findFirst().orElse(null); + if (art != null) { + art.setSelectedBarcode(barcode); + } + return art; } @@ -189,14 +237,14 @@ public class PVOrdineAcquistoEditViewModel { return SettingsManager.iDB().isFlagOrdinaArticoliOnScan(); } - private List getNewArticoli() { + private List getNewArticoli() { return mArticoliGriglia.stream() .filter(x -> x.getQtaOrd() > 0f) .collect(Collectors.toList()); } public void orderNewProducts() { - List newArts = getNewArticoli(); + List newArts = getNewArticoli(); if (!newArts.isEmpty()) { List articoliToSave = new ArrayList<>(); @@ -212,7 +260,7 @@ public class PVOrdineAcquistoEditViewModel { .findFirst() .isEmpty() ) { - ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine); + ArticoloOrdine dto = convertToArticoloOrdine(articolo, mCurrentOrdine); articoliToSave.add(dto); } }); @@ -232,7 +280,12 @@ public class PVOrdineAcquistoEditViewModel { public void exportOrdine(Runnable onComplete) { this.sendOnLoadingStarted(); - pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), (ordine) -> { + if (mArticoli.getValue() == null) { + this.sendError(new EmptyOrderException()); + return; + } + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), codMdep, (ordine) -> { mOrdineRepository.updateOrder(ordine, ord -> { this.sendOnLoadingEnded(); @@ -261,6 +314,8 @@ public class PVOrdineAcquistoEditViewModel { public interface Listener extends ILoadingListener { void onItemDispatched(ArticoloOrdine articoloOrdine, Runnable onSuccess); + void confirmExceedingQtyOrder(Runnable onSuccess); + int getColorFromResource(int resId); void onError(Exception ex); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java index ea96cd2a..d38fdb3a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloView.java @@ -4,6 +4,7 @@ import android.content.DialogInterface; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; +import android.text.Html; import android.text.InputType; import android.view.LayoutInflater; import android.view.View; @@ -32,6 +33,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityObservable; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; +import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; public class DialogEditArticoloView extends BaseDialogFragment implements DialogEditArticoloViewModel.Listener { @@ -185,8 +187,20 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog public void saveAndExit() { - this.onLoadingStarted(); + if (!UtilityBigDecimal.isNullOrZero(this.getArticolo().getCtMaxOrd()) && UtilityBigDecimal.greaterThan(this.mViewModel.getNumCnf(), this.getArticolo().getCtMaxOrd())) { + DialogSimpleMessageView.makeInfoDialog(getText(R.string.warning).toString(), + Html.fromHtml(getActivity().getResources().getString(R.string.confirm_orderable_qty_exceeded)), + null, + this::save, () -> { + this.mBindings.inputNumCnfText.requestFocus(); + }).show(getActivity().getSupportFragmentManager(), "confirmExceedingQtyOrder"); + } else { + save(); + } + } + private void save() { + this.onLoadingStarted(); this.mViewModel.save(newArticolo -> { this.mOnComplete.run(newArticolo); this.onLoadingEnded(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java index 7880d8f0..ad04117d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/DialogEditArticoloViewModel.java @@ -23,6 +23,8 @@ public class DialogEditArticoloViewModel { private BigDecimal internalQtaCnf; private BigDecimal internalQtaTot; + private BigDecimal maxQtaOrd; + @Inject public DialogEditArticoloViewModel(ArticoliOrdineRepository articoliOrdineRepository) { this.mArticoliOrdineRepository = articoliOrdineRepository; @@ -86,6 +88,15 @@ public class DialogEditArticoloViewModel { return this.internalQtaTot; } + public BigDecimal getMaxQtaOrd() { + return maxQtaOrd; + } + + public DialogEditArticoloViewModel setMaxQtaOrd(BigDecimal maxQtaOrd) { + this.maxQtaOrd = maxQtaOrd; + return this; + } + public interface Listener { void onDataChanged(); @@ -109,7 +120,6 @@ public class DialogEditArticoloViewModel { this.mListener.onError(new InvalidOrderedQtyException()); return; } - this.mCurrentArticolo.setQtaOrd(this.internalQtaTot.floatValue()); try { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java index cb69f2d2..382c6634 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/PVOrdiniAcquistoGrigliaFragment.java @@ -28,13 +28,14 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineR 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.data_store.db.repository.OrdineRepository; -import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; +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.expansion.BaseFragment; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoView; @@ -50,7 +51,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi private Griglia mGriglia; private OrdineAcquistoPvOpenListAdapter mAdapter; private final List mRenderedOrderList = new ArrayList<>(); - private final List mListArticoli = new ArrayList<>(); + private final List mListArticoli = new ArrayList<>(); private boolean mRedirectToNewOrder = true; private final List mOnPreDestroyList = new ArrayList<>(); @@ -104,7 +105,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi if (griglia == null) { ((IPoppableActivity) requireActivity()).pop(); } else { - setGriglia(griglia, listArticoli); + setGriglia(griglia); + setListaArticoli(listArticoli); } }).show(requireActivity().getSupportFragmentManager(), "tag"); @@ -115,17 +117,23 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString()); } - private void setGriglia(Griglia griglia, List listArticoli) { + private void setGriglia(Griglia griglia) { mGriglia = griglia; + mBinding.fabNewOrder.setVisibility(View.VISIBLE); + if (UtilityString.isNullOrEmpty(griglia.getCodAlis())) { + mBinding.infoGriglia.setVisibility(View.GONE); + } else { + mBinding.codAlis.setText(griglia.getCodAlis()); + mBinding.descrLis.setText(griglia.getDescrLisa()); + } + mBinding.descrDepo.setText(griglia.getDescrDepo()); + fetchOrders(); + } + + private void setListaArticoli(List listArticoli) { mListArticoli.clear(); mListArticoli.addAll(listArticoli); - mBinding.fabNewOrder.setVisibility(View.VISIBLE); - mBinding.codAlis.setText(griglia.getCodAlis()); - mBinding.descrLis.setText(griglia.getDescrLisa()); - mBinding.descrDepo.setText(griglia.getDescrDepo()); mBinding.countArtLis.setText(String.valueOf(listArticoli.size())); - - fetchOrders(); } private void fetchOrders() { @@ -190,7 +198,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi }); }, this::onError); }), () -> { - }).show(requireActivity().getSupportFragmentManager(), "tag"); } @@ -210,7 +217,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi @Override public void setScrollToolbar(ElevatedToolbar toolbar) { - } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java index 78fb44e7..d388c9bb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanGrigliaAcquistoView.java @@ -21,12 +21,15 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; -import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; +import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO; import it.integry.integrywmsnative.core.exception.GridNotFoundException; +import it.integry.integrywmsnative.core.exception.NoArtsFoundException; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding; public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { @@ -34,20 +37,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { private DialogScanCodiceGrigliaBinding mBinding; private int mBarcodeScannerIstanceID; - private final RunnableArgss> mOnDialogDismiss; + private final RunnableArgss> mOnDialogDismiss; @Inject PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer; private Griglia mGriglia; - private List mListArticoli; + private List mListArticoli; - public static DialogScanGrigliaAcquistoView newInstance(RunnableArgss> onDialogDismiss) { + public static DialogScanGrigliaAcquistoView newInstance(RunnableArgss> onDialogDismiss) { return new DialogScanGrigliaAcquistoView(onDialogDismiss); } - private DialogScanGrigliaAcquistoView(RunnableArgss> onDialogDismiss) { + private DialogScanGrigliaAcquistoView(RunnableArgss> onDialogDismiss) { super(); mOnDialogDismiss = onDialogDismiss; } @@ -76,6 +79,17 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { return alertDialog; } + public void ignore() { + BarcodeManager.disable(); + + RunnableArgs mOnError = exception -> { + this.onError(exception); + BarcodeManager.enable(); + }; + + retrieveArticoli(null, mOnError); + } + private void initBarcode() { mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() .setOnScanSuccessful(onScanSuccessfull) @@ -100,15 +114,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { BarcodeManager.enable(); }; - fetchArticoli(data.getStringValue(), mOnError); + retrieveArticoli(data.getStringValue(), mOnError); }; - public void fetchArticoli(String codAlis, RunnableArgs onFailed) { + public void retrieveArticoli(String codAlis, RunnableArgs onFailed) { this.onLoadingStarted(); - pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> { + String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); + pvOrdiniAcquistoRESTConsumer.retrieveArticoli(codAlis, codMdep, dto -> { this.onLoadingEnded(); - if (dto.getGrigliaAcquistiChild().size() <= 0) { - onFailed.run(new GridNotFoundException(codAlis)); + if (dto.getArticoli().size() == 0) { + if (UtilityString.isNullOrEmpty(codAlis)) { + onFailed.run(new NoArtsFoundException()); + } else { + onFailed.run(new GridNotFoundException(codAlis)); + } return; } @@ -116,7 +135,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment { mGriglia.setCodAlis(codAlis); mGriglia.setDescrLisa(dto.getDescrLisa()); mGriglia.setDescrDepo(dto.getDescrDepo()); - mListArticoli = dto.getGrigliaAcquistiChild(); + mListArticoli = dto.getArticoli(); this.dismiss(); }, onFailed); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java index f034c1c8..686e0709 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java @@ -1210,8 +1210,9 @@ public class SpedizioneViewModel { .setOrders(orders); this.mColliScaricoRESTConsumer.createUDS(createUDSRequestDTO, createdUDS -> { - this.mCurrentMtbColt = createdUDS; mMtbColtSessionID = this.mColliDataRecoverService.startNewSession(createdUDS, mTestateOrdini); + + this.mCurrentMtbColt = createdUDS; this.mIsNewLU = true; if (onComplete != null) onComplete.run(); @@ -1342,53 +1343,6 @@ public class SpedizioneViewModel { this.sendOnRowSaved(); this.sendOnLoadingEnded(); }, this::sendError); - - -// MtbColt mtbColt = new MtbColt() -// .setNumCollo(mtbColrToUpdate.getNumCollo()) -// .setDataCollo(mtbColrToUpdate.getDataColloS()) -// .setSerCollo(mtbColrToUpdate.getSerCollo()) -// .setGestione(mtbColrToUpdate.getGestione()) -// .setMtbColr(new ObservableArrayList<>()); -// mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); -// -// final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone(); -// mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT); -// mtbColr.setRiga(null) -// .setPesoLordoKg(null) -// .setPesoNettoKg(null) -// .setNumCnf(numCnf.subtract(mtbColrToUpdate.getNumCnf())) -// .setQtaCnf(qtaCnf) -// .setQtaCol(qtaTot.subtract(mtbColrToUpdate.getQtaCol())) -// .setPartitaMag(partitaMag) -// .setDataScadPartita(dataScad); -// -// mtbColt.getMtbColr().add(mtbColr); -// -// this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> { -// -// mtbColr -// .setNumCnf(numCnf) -// .setQtaCnf(qtaCnf) -// .setQtaCol(qtaTot); -// -// Optional pickingObjectDTO = Stream.of(this.mPickingList.getValue()) -// .filter(x -> Stream.of(x.getWithdrawMtbColrs()) -// .anyMatch(y -> y == mtbColrToUpdate)).findSingle(); -// -// if (pickingObjectDTO.isPresent()) { -// pickingObjectDTO.get().getWithdrawMtbColrs().remove(mtbColrToUpdate); -// pickingObjectDTO.get().getWithdrawMtbColrs().add(mtbColr); -// } -// -// this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate); -// this.mCurrentMtbColt.getMtbColr().add(mtbColr); -// -// this.resetMatchedRows(); -// this.sendOnRowSaved(); -// this.sendOnLoadingEnded(); -// -// }, this::sendError); } diff --git a/app/src/main/res/drawable/baseline_skip_next_24.xml b/app/src/main/res/drawable/baseline_skip_next_24.xml new file mode 100644 index 00000000..47b14051 --- /dev/null +++ b/app/src/main/res/drawable/baseline_skip_next_24.xml @@ -0,0 +1,5 @@ + + + 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 a06e93be..8b5326da 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -8,6 +8,10 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -318,14 +408,14 @@ android:layout_marginTop="8dp" android:gravity="center" android:orientation="horizontal" - android:weightSum="1"> + android:weightSum="2"> + @@ -68,18 +69,38 @@ android:textSize="16sp" /> + + + + + + + + - diff --git a/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml index 27d7dfc0..02c81a24 100644 --- a/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml +++ b/app/src/main/res/layout/fragment_pv_ordini_acquisto.xml @@ -44,6 +44,7 @@ android:padding="16dp"> diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a2bcc347..0764d670 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -431,6 +431,7 @@ Seleziona modalità scansione per lo scanner Crea documento Nessun articolo compatibile trovato + L\'ordine selezionato non presenta articoli UL vuota %s %s]]> Inventario @@ -440,4 +441,8 @@ Nessun articolo presente in griglia La quantità ordinata non è valida La griglia selezionata non esiste o non presenta articoli + Ignora + Qta massima ordinabile + Quantità massima superata + Vuoi cotinuare comunque con il salvataggio?]]>\ \ No newline at end of file diff --git a/app/src/main/res/values/buttons_style.xml b/app/src/main/res/values/buttons_style.xml index 173e230e..c9e70ff9 100644 --- a/app/src/main/res/values/buttons_style.xml +++ b/app/src/main/res/values/buttons_style.xml @@ -2,7 +2,7 @@ - -