bugfix e ottimizzazioni gestione ordini acquisto

This commit is contained in:
Valerio Castellana 2022-11-23 12:56:23 +01:00
parent f967514f97
commit ae8db5791e
35 changed files with 475 additions and 2674 deletions

View File

@ -2,7 +2,7 @@
"formatVersion": 1, "formatVersion": 1,
"database": { "database": {
"version": 12, "version": 12,
"identityHash": "1fbbe769d42f5fb33a56580bea8b11c6", "identityHash": "a3c4983a84b2d615e548dcceba15ecf0",
"entities": [ "entities": [
{ {
"tableName": "articoli_griglia", "tableName": "articoli_griglia",
@ -192,7 +192,7 @@
}, },
{ {
"tableName": "ordini", "tableName": "ordini",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`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 NOT NULL)", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`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 NOT NULL, `cod_alis` TEXT NOT NULL)",
"fields": [ "fields": [
{ {
"fieldPath": "ordineId", "fieldPath": "ordineId",
@ -253,6 +253,12 @@
"columnName": "id_griglia", "columnName": "id_griglia",
"affinity": "INTEGER", "affinity": "INTEGER",
"notNull": true "notNull": true
},
{
"fieldPath": "codAlis",
"columnName": "cod_alis",
"affinity": "TEXT",
"notNull": true
} }
], ],
"primaryKey": { "primaryKey": {
@ -868,7 +874,7 @@
}, },
{ {
"tableName": "inventari", "tableName": "inventari",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `id_inventario` INTEGER, `cod_mdep` TEXT NOT NULL, `data_inventario` INTEGER, `data_reg` INTEGER, `data_ver` INTEGER, `filtro` TEXT, `flag_stato` TEXT, `flag_operazione` TEXT, `cod_anag` TEXT, `cod_dtip` TEXT, `inserito_da` TEXT, `registrato_da` TEXT, `verificato_da` TEXT, `data_ora_inizio` INTEGER, `data_ora_fine` INTEGER, `causale` TEXT, `remote_sync_date` INTEGER)", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `id_inventario` INTEGER, `cod_mdep` TEXT NOT NULL, `data_inventario` INTEGER, `data_reg` INTEGER, `data_ver` INTEGER, `filtro` TEXT, `flag_stato` TEXT, `flag_operazione` TEXT, `cod_anag` TEXT, `cod_dtip` TEXT, `inserito_da` TEXT, `registrato_da` TEXT, `verificato_da` TEXT, `data_ora_inizio` INTEGER, `data_ora_fine` INTEGER, `causale` TEXT, `zona` TEXT, `remote_sync_date` INTEGER)",
"fields": [ "fields": [
{ {
"fieldPath": "id", "fieldPath": "id",
@ -972,6 +978,12 @@
"affinity": "TEXT", "affinity": "TEXT",
"notNull": false "notNull": false
}, },
{
"fieldPath": "zona",
"columnName": "zona",
"affinity": "TEXT",
"notNull": false
},
{ {
"fieldPath": "remoteSyncDate", "fieldPath": "remoteSyncDate",
"columnName": "remote_sync_date", "columnName": "remote_sync_date",
@ -1006,12 +1018,139 @@
} }
], ],
"foreignKeys": [] "foreignKeys": []
},
{
"tableName": "inventario_rows",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `parent_id` INTEGER, `cod_mart` TEXT NOT NULL, `partita_mag` TEXT, `descrizione` TEXT, `qta` REAL NOT NULL DEFAULT 0, `num_cnf` REAL NOT NULL DEFAULT 0, `qta_cnf` REAL NOT NULL DEFAULT 0, `unt_mis` TEXT NOT NULL DEFAULT '0', `data_ora_inv` INTEGER, `scan_cod_barre` TEXT, `zona` TEXT, `remote_sync_date` INTEGER, FOREIGN KEY(`parent_id`) REFERENCES `inventari`(`_id`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
"fields": [
{
"fieldPath": "id",
"columnName": "_id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "parentId",
"columnName": "parent_id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "codMart",
"columnName": "cod_mart",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "partitaMag",
"columnName": "partita_mag",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "descrizione",
"columnName": "descrizione",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "qta",
"columnName": "qta",
"affinity": "REAL",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "numConf",
"columnName": "num_cnf",
"affinity": "REAL",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "qtaConf",
"columnName": "qta_cnf",
"affinity": "REAL",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "untMis",
"columnName": "unt_mis",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'0'"
},
{
"fieldPath": "dataOraInv",
"columnName": "data_ora_inv",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "scanCodBarre",
"columnName": "scan_cod_barre",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "zona",
"columnName": "zona",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "remoteSyncDate",
"columnName": "remote_sync_date",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"_id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_inventario_rows__id",
"unique": false,
"columnNames": [
"_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_inventario_rows__id` ON `${TABLE_NAME}` (`_id`)"
},
{
"name": "index_inventario_rows_parent_id",
"unique": false,
"columnNames": [
"parent_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_inventario_rows_parent_id` ON `${TABLE_NAME}` (`parent_id`)"
}
],
"foreignKeys": [
{
"table": "inventari",
"onDelete": "NO ACTION",
"onUpdate": "NO ACTION",
"columns": [
"parent_id"
],
"referencedColumns": [
"_id"
]
}
]
} }
], ],
"views": [], "views": [],
"setupQueries": [ "setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1fbbe769d42f5fb33a56580bea8b11c6')" "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a3c4983a84b2d615e548dcceba15ecf0')"
] ]
} }
} }

View File

@ -39,7 +39,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
InventarioRoomDTO.class, InventarioRoomDTO.class,
InventarioRowRoomDTO.class InventarioRowRoomDTO.class
}, },
version = 11, version = 12,
exportSchema = true) exportSchema = true)
@TypeConverters({ @TypeConverters({
DateConverter.class, DateConverter.class,
@ -63,7 +63,8 @@ public abstract class AppDatabase extends RoomDatabase {
if (sInstance == null) { if (sInstance == null) {
var builder = Room.databaseBuilder(applicationContext, var builder = Room.databaseBuilder(applicationContext,
AppDatabase.class, "integry_wms") AppDatabase.class, "integry_wms")
.addMigrations(MIGRATION_10_11); .addMigrations(MIGRATION_10_11)
.addMigrations(MIGRATION_11_12);
sInstance = builder.build(); sInstance = builder.build();
} }
@ -100,6 +101,14 @@ public abstract class AppDatabase extends RoomDatabase {
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)"); database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)");
} }
}; };
static final Migration MIGRATION_11_12 = new Migration(11, 12) {
@Override
public void migrate(SupportSQLiteDatabase database) {
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 NOT NULL, cod_alis TEXT NOT NULL);");
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;");
}
};
} }

View File

@ -9,7 +9,6 @@ import androidx.room.Update;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.wrappers.ArticoloOrdineWrapper;
@Dao @Dao
public interface ArticoloOrdineDao { public interface ArticoloOrdineDao {
@ -33,17 +32,10 @@ public interface ArticoloOrdineDao {
@Update @Update
void update(ArticoloOrdine articolo); void update(ArticoloOrdine articolo);
@Query("SELECT articoli_ordine.*," + @Query("SELECT *" +
"articoli_griglia.gg_scadenza," +
"articoli_griglia.giacenza," +
"articoli_griglia.qta_prevista_vendita," +
"articoli_griglia.qta_proposta " +
"FROM articoli_ordine " + "FROM articoli_ordine " +
"INNER JOIN ordini on articoli_ordine.id_ordine = ordini.ordine_id " +
"LEFT OUTER JOIN articoli_griglia " +
"on articoli_ordine.cod_mart = articoli_griglia.cod_mart and ordini.id_griglia = articoli_griglia.id_griglia and articoli_ordine.bar_code = articoli_griglia.bar_code " +
"where id_ordine = :ordineId") "where id_ordine = :ordineId")
List<ArticoloOrdineWrapper> findArticoliByOrdine(int ordineId); List<ArticoloOrdine> findArticoliByOrdine(int ordineId);
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1") @Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart); ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);

View File

@ -9,15 +9,14 @@ import androidx.room.Update;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
@Dao @Dao
public interface GrigliaDao { public interface GrigliaDao {
@Query("SELECT * from griglie") @Query("SELECT * from griglie")
List<Griglia> getAll(); List<Griglia> getAll();
@Query("SELECT griglie.*, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id") @Query("SELECT * from griglie where cod_alis = :codAlis")
GrigliaWrapper findByCodAlis(String codAlis); Griglia findByCodAlis(String codAlis);
@Insert @Insert
long insert(Griglia griglia); long insert(Griglia griglia);

View File

@ -9,12 +9,9 @@ import androidx.room.Update;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
@Dao @Dao
public interface MtbColtDao { public interface MtbColtDao {
@Query("SELECT * from mtb_colt") @Query("SELECT * from mtb_colt")

View File

@ -9,7 +9,6 @@ import androidx.room.Update;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
@Dao @Dao
@ -17,11 +16,11 @@ public interface OrdineDao {
@Query("SELECT * from ordini ") @Query("SELECT * from ordini ")
List<Ordine> getAll(); List<Ordine> getAll();
@Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id where ordini.transmitted = 1") @Query("SELECT ordini.* from ordini where ordini.transmitted = 1")
List<OrdineWithGriglia> getAllTrasnmitted(); List<Ordine> 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.id_griglia = :idGriglia 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 ordini.cod_alis = :codAlis group by ordini.ordine_id")
List<OrdineWrapper> getAllOpenOrdersByGriglia(int idGriglia); List<OrdineWrapper> getAllOpenOrdersByGriglia(String codAlis);
@Insert @Insert
Long insert(Ordine ordine); Long insert(Ordine ordine);

View File

@ -6,13 +6,6 @@ import androidx.room.ForeignKey;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import org.json.JSONObject;
import java.math.BigDecimal;
import java.util.HashMap;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity( @Entity(
tableName = "articoli_griglia", tableName = "articoli_griglia",
indices = { indices = {
@ -215,38 +208,4 @@ public class ArticoloGriglia {
public void setQtaOrd(float qtaOrd) { public void setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd; this.qtaOrd = qtaOrd;
} }
public String generateSystemNote() {
HashMap<String, String> pairs = new HashMap<>();
pairs.put("qta_proposta", String.valueOf(qtaProposta));
pairs.put("giacenza", String.valueOf(giacenza));
return new JSONObject(pairs).toString();
}
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;
}
} }

View File

@ -2,11 +2,10 @@ package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.room.ColumnInfo; import androidx.room.ColumnInfo;
import androidx.room.Entity; import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
@Entity(tableName ="griglie", @Entity(tableName = "griglie",
indices = { indices = {
@Index(value = "cod_alis", unique = true) @Index(value = "cod_alis", unique = true)
} }
@ -22,8 +21,6 @@ public class Griglia {
private String descrLisa; private String descrLisa;
@ColumnInfo(name = "descr_depo") @ColumnInfo(name = "descr_depo")
private String descrDepo; private String descrDepo;
@Ignore
private int countArticoli = 0;
public int getGrigliaId() { public int getGrigliaId() {
@ -58,11 +55,4 @@ public class Griglia {
this.descrDepo = descrDepo; this.descrDepo = descrDepo;
} }
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
} }

View File

@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.data_store.db.entity; package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.room.ColumnInfo; import androidx.room.ColumnInfo;
import androidx.room.Entity; import androidx.room.Entity;
@ -47,15 +48,16 @@ public class Ordine {
@Nullable @Nullable
private String codMdep; private String codMdep;
@Ignore
private int countArticoli = 0;
@Ignore @Ignore
private boolean orderNewProducts = false; private boolean orderNewProducts = false;
@ColumnInfo(name = "id_griglia") @ColumnInfo(name = "id_griglia")
private int idGriglia; private int idGriglia;
@ColumnInfo(name = "cod_alis")
@NonNull
private String codAlis;
public int getOrdineId() { public int getOrdineId() {
return ordineId; return ordineId;
} }
@ -105,14 +107,6 @@ public class Ordine {
this.transmissionDate = transmissionDate; this.transmissionDate = transmissionDate;
} }
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
@Nullable @Nullable
public String getGestione() { public String getGestione() {
return gestione; return gestione;
@ -157,8 +151,15 @@ public class Ordine {
return orderNewProducts; return orderNewProducts;
} }
public Ordine setOrderNewProducts(boolean orderNewProducts) { public void setOrderNewProducts(boolean orderNewProducts) {
this.orderNewProducts = orderNewProducts; this.orderNewProducts = orderNewProducts;
return this; }
public String getCodAlis() {
return codAlis;
}
public void setCodAlis(String codAlis) {
this.codAlis = codAlis;
} }
} }

View File

@ -3,16 +3,15 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface GrigliaRepository { public interface GrigliaRepository {
void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError); void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError);
void findByCodAlis(String codAlis , RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError); void findByCodAlis(String codAlis, RunnableArgs<Griglia> onSuccess, RunnableArgs<Exception> onError);
void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess,RunnableArgs<Exception> onFail); void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onFail);
void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onFail); void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onFail);
} }

View File

@ -3,12 +3,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
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.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColtRepository { public interface MtbColtRepository {

View File

@ -2,9 +2,7 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List; import java.util.List;
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.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -12,9 +10,9 @@ public interface OrdineRepository {
void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError); void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError);
void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError); void selectAllTransmitted(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError);
void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError); void selectAllOpenOrders(String codAlis, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError);
void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError); void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);

View File

@ -2,8 +2,6 @@ package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler; import android.os.Handler;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -16,7 +14,6 @@ import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.ArticoloOrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository { public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository {
@ -90,23 +87,7 @@ public class ArticoliOrdineDataSource extends BaseDataSource implements Articoli
} }
public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onSuccess, RunnableArgs<Exception> onError) { public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> { execute(() -> mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()), onSuccess, onError);
try {
List<ArticoloOrdineWrapper> list = mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId());
var tmpList = Stream.of(list).map(x -> {
ArticoloOrdine art = x.getArticoloOrdine();
art.setGgScadenza(x.getGgScadenza());
art.setGiacenza(x.getGiacenza());
art.setQtaProposta(x.getQtaProposta());
art.setQtaPrevistaVendita(x.getQtaPrevistaVendita());
return art;
}).toList();
handler.post(() -> onSuccess.run(tmpList));
} catch (Exception e) {
onError.run(e);
}
});
} }
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) { public void deleteArticolo(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {

View File

@ -10,7 +10,6 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class GrigliaDataSource extends BaseDataSource implements GrigliaRepository { public class GrigliaDataSource extends BaseDataSource implements GrigliaRepository {
@ -29,7 +28,7 @@ public class GrigliaDataSource extends BaseDataSource implements GrigliaReposito
execute(mGrigliaDao::getAll, onSuccess, onError); execute(mGrigliaDao::getAll, onSuccess, onError);
} }
public void findByCodAlis(String codAlis, RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError) { public void findByCodAlis(String codAlis, RunnableArgs<Griglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mGrigliaDao.findByCodAlis(codAlis), onSuccess, onError); execute(() -> mGrigliaDao.findByCodAlis(codAlis), onSuccess, onError);
} }

View File

@ -8,10 +8,8 @@ import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
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.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -31,12 +29,12 @@ public class OrdineDataSource extends BaseDataSource implements OrdineRepository
execute(mOrdineDao::getAll, onSuccess, onError); execute(mOrdineDao::getAll, onSuccess, onError);
} }
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) { public void selectAllTransmitted(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
execute(mOrdineDao::getAllTrasnmitted, onSuccess, onError); execute(mOrdineDao::getAllTrasnmitted, onSuccess, onError);
} }
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) { public void selectAllOpenOrders(String codAlis, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()), onSuccess, onError); execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(codAlis), onSuccess, onError);
} }
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) { public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {

View File

@ -1,6 +1,14 @@
package it.integry.integrywmsnative.core.data_store.db.view_model; package it.integry.integrywmsnative.core.data_store.db.view_model;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; 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 class ArticoloDTO {
@ -161,24 +169,50 @@ public class ArticoloDTO {
return this; return this;
} }
public ArticoloGriglia toArticoloGriglia() { public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
ArticoloGriglia result = new ArticoloGriglia(); ArticoloOrdine articolo = new ArticoloOrdine();
result.setBarCode(this.getBarCode());
result.setDescrizione(this.getDescrizione());
result.setCodMart(this.getCodMart());
result.setUntMis(this.getUntMis());
result.setQtaCnf(this.getQtaCnf());
result.setMerceDaRic(this.getMerceDaRic());
result.setMediaSett(this.getMediaSett());
result.setFlagQtaMultipla(this.getFlagQtaMultipla());
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
result.setGgScadenza(this.ggScadenza);
result.setNewNoPromo(this.newNoPromo);
result.setQtaOrd(this.getQtaOrd());
result.setGiacenza(this.giacenza);
result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
result.setQtaProposta(this.qtaProposta);
return result; 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<String, String> 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;
} }
} }

View File

@ -1,30 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.ColumnInfo;
import androidx.room.Embedded;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
public class GrigliaWrapper {
@Embedded
private Griglia griglia;
@ColumnInfo(name = "countArticoli")
private int countArticoli = 0;
public Griglia getGriglia() {
return griglia;
}
public void setGriglia(Griglia griglia) {
this.griglia = griglia;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
}

View File

@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -9,6 +10,7 @@ import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
@ -44,17 +46,43 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
} }
public <T> void saveTerminalino(SaveDTO saveDTO, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) { public void saveOrdine(SaveDTO saveDTO, RunnableArgs<DtbOrdt> onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class); MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.<T>saveTerminalino(saveDTO) service.saveOrdine(saveDTO)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<T>> call, Response<ServiceRESTResponse<T>> response) { public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {
analyzeAnswer(response, "saveTerminalino", onComplete, onFailed); if (response.body() != null && response.body().size() > 0) {
analyzeListOfAnswers(response, "saveOrdine", dtoList -> {
if (dtoList.size() > 0) {
onComplete.run(dtoList.get(0));
} else {
onFailed.run(new Exception("Nessun ordine generato"));
}
}, onFailed);
} else {
onFailed.run(new Exception("Nessun ordine generato"));
}
} }
@Override @Override
public void onFailure(Call<ServiceRESTResponse<T>> call, Throwable t) { public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public void saveTerminalinoWMS(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed) {
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.saveTerminalinoWMS(saveDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
analyzeAnswer(response, "saveTerminalinoWMS", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<JsonObject>> call, Throwable t) {
onFailed.run(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });

View File

@ -1,5 +1,10 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import com.google.gson.JsonObject;
import java.util.List;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
@ -9,6 +14,9 @@ import retrofit2.http.POST;
public interface MagazzinoRESTConsumerService { public interface MagazzinoRESTConsumerService {
@POST("SM2SaveTerminalinoWMS") @POST("SM2SaveTerminalinoWMS")
<T> Call<ServiceRESTResponse<T>> saveTerminalino(@Body SaveDTO saveDTO); Call<ServiceRESTResponse<JsonObject>> saveTerminalinoWMS(@Body SaveDTO saveDTO);
@POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);
} }

View File

@ -12,12 +12,10 @@ import java.util.List;
import javax.inject.Singleton; import javax.inject.Singleton;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; 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.GrigliaDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
@ -41,7 +39,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) { public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300);
ordiniARestService ordiniARestService
.getArticoliListino(codAlis) .getArticoliListino(codAlis)
.enqueue(new Callback<>() { .enqueue(new Callback<>() {
@ -87,7 +85,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) { public void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
SaveDTO saveDTO = new SaveDTO(); SaveDTO saveDTO = new SaveDTO();
OrdineDTO ordineDTO = new OrdineDTO(); OrdineDTO ordineDTO = new OrdineDTO();
List<ArtDTO> artRows = new ArrayList<>(); List<ArtDTO> artRows = new ArrayList<>();
@ -98,15 +96,15 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
artRows.add(convertArtToDTO(art, i)); artRows.add(convertArtToDTO(art, i));
} }
ordineDTO.setChiaveGriglia(griglia.getCodAlis()); ordineDTO.setChiaveGriglia(ordine.getCodAlis());
ordineDTO.setDataCons(UtilityDate.getDateInstance()); ordineDTO.setDataCons(UtilityDate.getDateInstance());
ordineDTO.setArtRows(artRows); ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O"); saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO); saveDTO.setOrdineDTO(ordineDTO);
magazzinoRESTConsumer.<DtbOrdt>saveTerminalino(saveDTO, data -> { magazzinoRESTConsumer.saveOrdine(saveDTO, data -> {
if(data == null) { if (data == null) {
onFailed.run(new Exception("Nessun ordine generato")); onFailed.run(new Exception("Nessun ordine generato"));
return; return;
} }

View File

@ -35,11 +35,11 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding; import it.integry.integrywmsnative.databinding.FragmentMainAccettazioneBinding;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneAdapter; import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneAdapter;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneClienteListModel; import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneClienteListModel;
import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneListModel; import it.integry.integrywmsnative.gest.accettazione.ui.MainListAccettazioneListModel;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
import it.integry.integrywmsnative.gest.accettazione.dto.SitArtOrdDTO;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity; import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -86,12 +86,11 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
if(savedInstanceState != null && savedInstanceState.containsKey("mToolbar")) if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar"))
mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar")); mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar"));
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_accettazione, container, false);
@ -134,7 +133,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
private void initRecyclerView() { private void initRecyclerView() {
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x->{ this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x -> {
this.refreshList(getFilteredList(mTextFilter)); this.refreshList(getFilteredList(mTextFilter));
}); });
@ -198,7 +197,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
listModel.setGroupTitle(x.getRagSocOrd()); listModel.setGroupTitle(x.getRagSocOrd());
listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
List<MainListAccettazioneClienteListModel> clienti = Stream.of(dataList) List<MainListAccettazioneClienteListModel> clienti = Stream.of(dataList)
.filter(y -> y.getBarcode().equals(x.getBarcode())) .filter(y -> y.getBarcode().equals(x.getBarcode()))
@ -243,7 +242,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
@Override @Override
public boolean onQueryTextChange(String newText) { public boolean onQueryTextChange(String newText) {
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue(); List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty()) return false; if (originalList == null || originalList.isEmpty()) return false;
mTextFilter = newText; mTextFilter = newText;
List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText); List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText);
@ -254,9 +253,9 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) { private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) {
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>(); List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue(); List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
if(originalList == null || originalList.isEmpty() || newText == null) return originalList; if (originalList == null || originalList.isEmpty() || newText == null) return originalList;
for(int i = 0; i < originalList.size(); i++){ for (int i = 0; i < originalList.size(); i++) {
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){ if (originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())) {
filteredOrders.add(originalList.get(i)); filteredOrders.add(originalList.get(i));
} }
} }

View File

@ -9,9 +9,9 @@ import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaArticoliDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -42,7 +42,7 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
public void fetchProducts(String codDtip, String codMgrp, RunnableArgs<GrigliaArticoliDTO> onComplete, RunnableArgs<Exception> onFailed) { public void fetchProducts(String codDtip, String codMgrp, RunnableArgs<GrigliaArticoliDTO> onComplete, RunnableArgs<Exception> onFailed) {
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class); DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.retrieveProducts(codDtip,codMgrp,"L").enqueue(new Callback<>() { service.retrieveProducts(codDtip, codMgrp, "L").enqueue(new Callback<>() {
@Override @Override
public void onResponse(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Response<ServiceRESTResponse<GrigliaArticoliDTO>> response) { public void onResponse(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Response<ServiceRESTResponse<GrigliaArticoliDTO>> response) {
analyzeAnswer(response, "fetchProducts", onComplete, onFailed); analyzeAnswer(response, "fetchProducts", onComplete, onFailed);
@ -56,7 +56,7 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
} }
public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed){ public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed) {
magazzinoRESTConsumer.saveTerminalino(saveDTO, onComplete, onFailed); magazzinoRESTConsumer.saveTerminalinoWMS(saveDTO, onComplete, onFailed);
} }
} }

View File

@ -310,7 +310,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
listModel.setGroupTitle(x.getRagSocOrd()); listModel.setGroupTitle(x.getRagSocOrd());
listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero().toString(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))); listModel.setDescription(String.format(getString(R.string.ord_acq_testata), x.getNumero(), UtilityDate.formatDate(x.getDataD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
List<MainListProdOrdineProduzioneElencoClienteListModel> clienti = Stream.of(dataList) List<MainListProdOrdineProduzioneElencoClienteListModel> clienti = Stream.of(dataList)
.filter(y -> y.getBarcode().equals(x.getBarcode())) .filter(y -> y.getBarcode().equals(x.getBarcode()))

View File

@ -8,6 +8,7 @@ import android.text.SpannableString;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
@ -15,6 +16,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.ravikoradiya.liveadapter.LiveAdapter; import com.ravikoradiya.liveadapter.LiveAdapter;
import com.ravikoradiya.liveadapter.Type; import com.ravikoradiya.liveadapter.Type;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@ -26,6 +29,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache; 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.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@ -42,20 +46,19 @@ import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdineAcquistoEditViewModel.Listener { public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdineAcquistoEditViewModel.Listener {
private static String DATA_KEY_ORDER = "keyOrdine"; private static String DATA_KEY_ORDER = "keyOrdine";
private static String DATA_LIST_ARTS = "listArts";
private Ordine mOrdine;
private ActivityPvOrdineAcquistoEditBinding mBinding; private ActivityPvOrdineAcquistoEditBinding mBinding;
private int barcodeScannerIstanceID; private int barcodeScannerIstanceID;
@Inject @Inject
PVOrdineAcquistoEditViewModel mViewModel; PVOrdineAcquistoEditViewModel mViewModel;
public static Intent newInstance(Context context, Ordine ordine, List<ArticoloDTO> listArts) {
public static Intent newInstance(Context context, Ordine ordine) {
Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class);
String keyOrdine = DataCache.addItem(ordine); String keyOrdine = DataCache.addItem(ordine);
String keyListArts = DataCache.addItem(listArts);
myIntent.putExtra(DATA_KEY_ORDER, keyOrdine); myIntent.putExtra(DATA_KEY_ORDER, keyOrdine);
myIntent.putExtra(DATA_LIST_ARTS, keyListArts);
return myIntent; return myIntent;
} }
@ -71,20 +74,24 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pv_ordine_acquisto_edit);
mBinding.setViewModel(this); mBinding.setViewModel(this);
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_ORDER)); Ordine ordine = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_ORDER));
setSupportActionBar(mBinding.toolbar); setSupportActionBar(mBinding.toolbar);
mBinding.toolbar.setTitle(R.string.edit_order); mBinding.toolbar.setTitle(R.string.edit_order);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
if (mOrdine == null) { if (ordine == null) {
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
close();
return;
}
if (ordine.isTransmitted()) {
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
close(); close();
} }
if (mOrdine.isTransmitted()) { String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), ordine.getOrdineId(), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
close();
}
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString)); mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp); FabMenuCustomAnimations.changeIconOnFocus(mBinding.closeActivityFab, R.drawable.ic_check_white_24dp, R.drawable.ic_close_24dp);
@ -94,9 +101,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
this.mViewModel.setListener(this); this.mViewModel.setListener(this);
this.mViewModel.getCurrentGriglia().observe(this, griglia -> { mBinding.codAlis.setText(ordine.getCodAlis());
mBinding.codAlis.setText(griglia.getCodAlis());
});
this.mViewModel.getArticoli().observe(this, articoli -> { this.mViewModel.getArticoli().observe(this, articoli -> {
mBinding.countArtOrd.setText(String.valueOf(articoli.size())); mBinding.countArtOrd.setText(String.valueOf(articoli.size()));
@ -104,16 +109,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
mBinding.closeActivityFab.close(false); mBinding.closeActivityFab.close(false);
mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE); mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE);
if (mOrdine.isOrderNewProducts() && articoli.isEmpty() && isOrderNewProdsForced()) { if (ordine.isOrderNewProducts() && articoli.isEmpty() && isOrderNewProdsForced()) {
this.mViewModel.orderNewProducts(); this.mViewModel.orderNewProducts();
mOrdine.setOrderNewProducts(false); ordine.setOrderNewProducts(false);
} }
}); });
List<ArticoloDTO> articoliGriglia = DataCache.retrieveItem(getIntent().getStringExtra(DATA_LIST_ARTS));
this.mViewModel.init(mOrdine); this.mViewModel.init(ordine, articoliGriglia);
} }
@Override @Override
public boolean onSupportNavigateUp() { public boolean onSupportNavigateUp() {
onBackPressed(); onBackPressed();
@ -148,7 +153,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
mBinding.articoliOrdineList.addItemDecoration(itemDecorator); mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
} }
private void selectAction(ArticoloOrdine articoloOrdine) { private void selectAction(ArticoloOrdine articoloOrdine) {
mBinding.closeActivityFab.close(false); mBinding.closeActivityFab.close(false);
BarcodeManager.disable(); BarcodeManager.disable();
@ -156,7 +160,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
DialogAskActionView.newInstance(articoloOrdine.getDescrizione(), DialogAskActionView.newInstance(articoloOrdine.getDescrizione(),
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
() -> { () -> {
this.mViewModel.checkArticolo(mOrdine, articoloOrdine.getCodMart(), this.mViewModel.checkArticolo(articoloOrdine.getCodMart(),
artOrd -> { artOrd -> {
this.onItemDispatched(artOrd); this.onItemDispatched(artOrd);
BarcodeManager.enable(); BarcodeManager.enable();
@ -184,6 +188,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
mBinding.closeActivityFab.close(false); mBinding.closeActivityFab.close(false);
this.onLoadingStarted(); this.onLoadingStarted();
BarcodeManager.disable();
this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded); this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
@ -191,19 +196,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
@Override @Override
public void onItemDispatched(ArticoloOrdine articoloOrdine) { public void onItemDispatched(ArticoloOrdine articoloOrdine) {
BarcodeManager.disable();
DialogEditArticoloView DialogEditArticoloView
.newInstance(articoloOrdine, articolo -> { .newInstance(articoloOrdine, articolo -> {
runOnUiThread(() -> { runOnUiThread(() -> {
if (articolo != null) { if (articolo != null) {
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
} }
this.mViewModel.refreshListArticoli();
this.mViewModel.saveArticolo(articolo);
}); });
}, () -> { }, null).show(this.getSupportFragmentManager(), "tag");
}).show(this.getSupportFragmentManager(), "tag");
} }
@Override @Override
@ -211,7 +213,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
return getResources().getColor(resId); return getResources().getColor(resId);
} }
public void exportOrdine() { public void exportOrdine() {
this.mViewModel.exportOrdine(() -> { this.mViewModel.exportOrdine(() -> {
runOnUiThread(() -> { runOnUiThread(() -> {
@ -221,7 +222,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
}); });
} }
public void close() { public void close() {
onBackPressed(); onBackPressed();
} }
@ -236,7 +236,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
BarcodeManager.disable(); 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.onLoadingStarted(); this.onLoadingStarted();
this.mViewModel.checkArticolo(mOrdine, codice, this.mViewModel.checkArticolo(codice,
articoloOrdine -> { articoloOrdine -> {
this.onItemDispatched(articoloOrdine); this.onItemDispatched(articoloOrdine);
this.onLoadingEnded(); this.onLoadingEnded();

View File

@ -4,16 +4,16 @@ import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
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.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; 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.entity.Ordine;
@ -21,6 +21,7 @@ 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.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
@ -49,7 +50,7 @@ public class PVOrdineAcquistoEditViewModel {
private Listener mListener; private Listener mListener;
private final MutableLiveData<Griglia> mCurrentGriglia = new MutableLiveData<>(); private List<ArticoloDTO> mArticoliGriglia = new ArrayList<>();
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>(); private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
@ -65,83 +66,52 @@ public class PVOrdineAcquistoEditViewModel {
this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer; this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer;
} }
public void init(Ordine ordine) { public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) {
this.mCurrentOrdine = ordine; this.mCurrentOrdine = ordine;
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
this.loadGriglia(ordine.getIdGriglia(), griglia -> { mArticoliGriglia.clear();
mCurrentGriglia.postValue(griglia); mArticoliGriglia.addAll(articoliGriglia);
this.loadArticoli(mCurrentOrdine, articoli -> { this.refreshListArticoli();
articoli = Stream.of(articoli).map(this::setBgTint).toList(); }
this.mArticoli.postValue(articoli);
this.sendOnLoadingEnded(); public void refreshListArticoli() {
}); this.loadArticoli(mCurrentOrdine, articoli -> {
articoli = Stream.of(articoli).map(this::completeDataArticoli).toList();
this.mArticoli.postValue(articoli);
this.sendOnLoadingEnded();
}); });
} }
private ArticoloOrdine setBgTint(ArticoloOrdine art) { private ArticoloOrdine completeDataArticoli(ArticoloOrdine art) {
int chk = art.checkQtaProposta(); art.setBgTint(getBgTint(art));
switch (chk) { ArticoloDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(new ArticoloDTO());
case -1: art.setGgScadenza(artGrid.getGgScadenza());
art.setBgTint(this.mListener.getColorFromResource(R.color.red_600)); art.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza()));
break; art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()));
case 1: art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()));
art.setBgTint(this.mListener.getColorFromResource(R.color.orange_600));
break;
default:
art.setBgTint(this.mListener.getColorFromResource(R.color.colorPrimary));
}
return art; return art;
} }
public MutableLiveData<Griglia> getCurrentGriglia() { private int getBgTint(ArticoloOrdine art) {
return mCurrentGriglia; int chk = art.checkQtaProposta();
switch (chk) {
case -1:
return this.mListener.getColorFromResource(R.color.red_600);
case 1:
return this.mListener.getColorFromResource(R.color.orange_600);
default:
return this.mListener.getColorFromResource(R.color.colorPrimary);
}
} }
public MutableLiveData<List<ArticoloOrdine>> getArticoli() { public MutableLiveData<List<ArticoloOrdine>> getArticoli() {
return mArticoli; return mArticoli;
} }
public void saveArticolo(ArticoloOrdine articolo) {
setBgTint(articolo);
var newList = this.mArticoli.getValue();
var alreadySavedItem = Stream.of(newList)
.filter(x -> Objects.equals(x.getCodMart(), articolo.getCodMart()))
.findFirst();
if (alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get());
newList.add(articolo);
this.mArticoli.postValue(newList);
}
public void saveArticoli(List<ArticoloOrdine> articoli) {
var newList = this.mArticoli.getValue();
if (newList == null) {
newList = new ArrayList<>();
}
for (ArticoloOrdine articolo : articoli) {
setBgTint(articolo);
var alreadySavedItem = Stream.of(newList)
.filter(x -> Objects.equals(x.getCodMart(), articolo.getCodMart()))
.findFirst();
if (alreadySavedItem.isPresent()) newList.remove(alreadySavedItem.get());
newList.add(articolo);
}
this.mArticoli.postValue(newList);
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
this.checkArticolo( this.checkArticolo(
mCurrentOrdine,
barcodeScanDTO.getStringValue(), barcodeScanDTO.getStringValue(),
articoloOrdine -> { articoloOrdine -> {
this.sendOnItemDispatched(articoloOrdine); this.sendOnItemDispatched(articoloOrdine);
@ -151,7 +121,6 @@ public class PVOrdineAcquistoEditViewModel {
); );
} }
private void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad) { private void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad) {
try { try {
mGrigliaRepository.findGrigliaById(idGriglia, onLoad, this::sendError); mGrigliaRepository.findGrigliaById(idGriglia, onLoad, this::sendError);
@ -168,42 +137,47 @@ public class PVOrdineAcquistoEditViewModel {
} }
} }
public void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) { public void checkArticolo(String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
try { try {
mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> { if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
if (artGrid != null) { onFail.run(new Exception("Nessun articolo è presente nella griglia"));
mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> { return;
if (articolo != null) { }
articolo ArticoloDTO art = Stream.of(mArticoliGriglia).filter(articolo ->
.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita())) articolo.getCodMart().equalsIgnoreCase(barcode) ||
.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta())) articolo.getBarcode().equalsIgnoreCase(barcode) ||
.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza())) articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
.setMediaSett(artGrid.getMediaSett()); ).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
articolo.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile()); if (art == null) {
articolo.setMerceDaRic(artGrid.getMerceDaRic()); onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
articolo.setNewNoPromo(artGrid.isNewNoPromo()); return;
articolo.setFlagQtaMultipla(artGrid.getFlagQtaMultipla()); }
articolo.setSystemNote(artGrid.generateSystemNote());
onSuccess.run(articolo); mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, (articolo) -> {
} else {
ArticoloOrdine art = artGrid.convertToArticoloOrdine(ordine);
if (isAutoOrderOnScan()) {
art.setQtaOrd(art.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(art, () -> {
saveArticolo(art);
this.sendOnLoadingEnded();
}, this::sendError); if (articolo != null) {
} else { articolo
onSuccess.run(art); .setQtaPrevistaVendita(BigDecimal.valueOf(art.getQtaPrevistaVendita()))
} .setQtaProposta(BigDecimal.valueOf(art.getQtaProposta()))
} .setGiacenza(BigDecimal.valueOf(art.getGiacenza()))
}, onFail); .setMediaSett(art.getMediaSett());
articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile());
articolo.setMerceDaRic(art.getMerceDaRic());
articolo.setNewNoPromo(art.isNewNoPromo());
articolo.setFlagQtaMultipla(art.getFlagQtaMultipla());
articolo.setSystemNote(art.generateSystemNote());
onSuccess.run(articolo);
} else { } else {
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia")); articolo = art.convertToArticoloOrdine(mCurrentOrdine);
if (isAutoOrderOnScan()) {
articolo.setQtaOrd(articolo.getQtaCnf());
mArticoliOrdineRepository.saveArticoloToOrdine(articolo, this::refreshListArticoli, this::sendError);
} else {
onSuccess.run(articolo);
}
} }
}, onFail); }, onFail);
@ -217,43 +191,38 @@ public class PVOrdineAcquistoEditViewModel {
return SettingsManager.iDB().isFlagOrdinaArticoliOnScan(); return SettingsManager.iDB().isFlagOrdinaArticoliOnScan();
} }
private void getNewArticoli(int idGrigla, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) { private List<ArticoloDTO> getNewArticoli() {
mArticoloGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); return Stream.of(mArticoliGriglia).filter(x -> x.getQtaOrd() > 0f).toList();
} }
public void orderNewProducts() { public void orderNewProducts() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
this.getNewArticoli(mCurrentOrdine.getIdGriglia(), articoli -> { List<ArticoloDTO> newArts = getNewArticoli();
if (articoli != null && !articoli.isEmpty()) { if (!newArts.isEmpty()) {
List<ArticoloOrdine> articoliToSave = new ArrayList<>(); List<ArticoloOrdine> articoliToSave = new ArrayList<>();
Stream.of(articoli).forEach(articolo -> { Stream.of(newArts).forEach(articolo -> {
if ( if (
Stream.of(mArticoli.getValue()) Stream.of(mArticoli.getValue())
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())) .filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
.findFirst() .findFirst()
.isEmpty() .isEmpty()
&& Stream.of(articoliToSave) && Stream.of(articoliToSave)
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())) .filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
.findFirst() .findFirst()
.isEmpty() .isEmpty()
) { ) {
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine); ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
articoliToSave.add(dto); articoliToSave.add(dto);
} }
}); });
if (!articoliToSave.isEmpty()) { if (!articoliToSave.isEmpty()) {
mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> { mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, this::refreshListArticoli, this::sendError);
this.saveArticoli(articoliToSave);
this.sendOnLoadingEnded();
}, this::sendError);
} else this.sendOnLoadingEnded();
} else this.sendOnLoadingEnded(); } else this.sendOnLoadingEnded();
}, this::sendError); } else this.sendOnLoadingEnded();
} }
public void deleteArticolo(ArticoloOrdine articoloOrdine) { public void deleteArticolo(ArticoloOrdine articoloOrdine) {
@ -265,7 +234,7 @@ public class PVOrdineAcquistoEditViewModel {
public void exportOrdine(Runnable onComplete) { public void exportOrdine(Runnable onComplete) {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), mCurrentGriglia.getValue(), (ordine) -> { pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), (ordine) -> {
mOrdineRepository.updateOrder(ordine, ord -> { mOrdineRepository.updateOrder(ordine, ord -> {
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();

View File

@ -24,6 +24,8 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; 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.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -46,6 +48,7 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
private DialogPvEditArticoloBinding mBindings; private DialogPvEditArticoloBinding mBindings;
private boolean mEnableDataCallback = true; private boolean mEnableDataCallback = true;
private int barcodeScannerIstanceID;
public static DialogEditArticoloView newInstance(ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onComplete, Runnable onAbort) { public static DialogEditArticoloView newInstance(ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onComplete, Runnable onAbort) {
return new DialogEditArticoloView(articolo, onComplete, onAbort); return new DialogEditArticoloView(articolo, onComplete, onAbort);
@ -96,6 +99,7 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
initBarcodeReader();
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog); setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
} }
@ -108,10 +112,21 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
@Override @Override
public void onDismiss(@NonNull DialogInterface dialog) { public void onDismiss(@NonNull DialogInterface dialog) {
this.mOnAbort.run(); if (this.mOnAbort != null) {
this.mOnAbort.run();
}
super.onDismiss(dialog); super.onDismiss(dialog);
} }
private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful((barcodeScanDTO) -> {
})
.setOnScanFailed(this::onError));
BarcodeManager.enable();
}
private void initBindings() { private void initBindings() {
UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {

View File

@ -1,57 +0,0 @@
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.Ordine;
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;
public class PVEditOrderHelper {
private final GrigliaRepository mGrigliaRepository;
private final ArticoliOrdineRepository mArticoliOrdineRepository;
private final ArticoloGrigliaRepository mArticoliGrigliaRepository;
public PVEditOrderHelper(GrigliaRepository grigliaRepository, ArticoliOrdineRepository articoliOrdineRepository, ArticoloGrigliaRepository articoloGrigliaRepository) {
mGrigliaRepository = grigliaRepository;
mArticoliOrdineRepository = articoliOrdineRepository;
mArticoliGrigliaRepository = articoloGrigliaRepository;
}
public void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
try {
mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
if (articolo != null) {
onSuccess.run(articolo);
} else {
mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
if (artGrid != null) {
onSuccess.run(artGrid.convertToArticoloOrdine(ordine));
} else {
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
}
}, onFail);
}
}, onFail);
} catch (Exception e) {
onFail.run(e);
}
}
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSave, RunnableArgs<Exception> onFail) {
mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail);
}
public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onError) {
mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError);
}
public void getNewArticoli(int idGrigla, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) {
mArticoliGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError);
}
}

View File

@ -28,6 +28,7 @@ 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.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.BaseFragment; import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
@ -41,7 +42,6 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOp
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskActionView; import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITitledFragment, IScrollableFragment { public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITitledFragment, IScrollableFragment {
@ -49,8 +49,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
private FragmentPvOrdiniAcquistoBinding mBinding; private FragmentPvOrdiniAcquistoBinding mBinding;
private Griglia mGriglia; private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter; private OrdineAcquistoPvOpenListAdapter mAdapter;
private DialogProgressView mCurrentProgress;
private final List<OrdineWrapper> mRenderedOrderList = new ArrayList<>(); private final List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
private final List<ArticoloDTO> mListArticoli = new ArrayList<>();
private boolean mRedirectToNewOrder = true; private boolean mRedirectToNewOrder = true;
private final List<Runnable> mOnPreDestroyList = new ArrayList<>(); private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
@ -99,11 +99,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
private void init() { private void init() {
BarcodeManager.enable(); BarcodeManager.enable();
DialogScanGrigliaAcquistoView.newInstance(griglia -> { DialogScanGrigliaAcquistoView.newInstance((griglia, listArticoli) -> {
if (griglia == null) { if (griglia == null) {
((IPoppableActivity) requireActivity()).pop(); ((IPoppableActivity) requireActivity()).pop();
} else { } else {
setGriglia(griglia); setGriglia(griglia, listArticoli);
} }
}).show(requireActivity().getSupportFragmentManager(), "tag"); }).show(requireActivity().getSupportFragmentManager(), "tag");
@ -114,13 +114,15 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString()); titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
} }
private void setGriglia(Griglia griglia) { private void setGriglia(Griglia griglia, List<ArticoloDTO> listArticoli) {
mGriglia = griglia; mGriglia = griglia;
mListArticoli.clear();
mListArticoli.addAll(listArticoli);
mBinding.fabNewOrder.setVisibility(View.VISIBLE); mBinding.fabNewOrder.setVisibility(View.VISIBLE);
mBinding.codAlis.setText(griglia.getCodAlis()); mBinding.codAlis.setText(griglia.getCodAlis());
mBinding.descrLis.setText(griglia.getDescrLisa()); mBinding.descrLis.setText(griglia.getDescrLisa());
mBinding.descrDepo.setText(griglia.getDescrDepo()); mBinding.descrDepo.setText(griglia.getDescrDepo());
mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli())); mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
fetchOrders(); fetchOrders();
} }
@ -128,9 +130,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
private void fetchOrders() { private void fetchOrders() {
this.onLoadingStarted(); this.onLoadingStarted();
mOrdineRepository.selectAllOpenOrders(mGriglia, ordini -> { mOrdineRepository.selectAllOpenOrders(mGriglia.getCodAlis(), ordini -> {
this.onLoadingEnded(); this.onLoadingEnded();
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
setOrdini(ordini); setOrdini(ordini);
}); });
@ -149,9 +150,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
} }
} }
public Griglia getGriglia() {
return mGriglia;
}
private void initRecyclerView() { private void initRecyclerView() {
mBinding.ordiniAApertiMainList.setHasFixedSize(true); mBinding.ordiniAApertiMainList.setHasFixedSize(true);
@ -165,13 +163,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
} }
private void editOrdine(Ordine ordine) { private void editOrdine(Ordine ordine) {
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine)); requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
} }
private void selectAction(Ordine ordine) { private void selectAction(Ordine ordine) {
DialogAskActionView.newInstance(Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(), DialogAskActionView.newInstance(Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), ordine.getOrdineId(), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(),
ordine.getCountArticoli() + " articoli", mListArticoli.size() + " articoli",
() -> this.editOrdine(ordine), () -> this.editOrdine(ordine),
() -> this.deleteOrdine(ordine)) () -> this.deleteOrdine(ordine))
.show(requireActivity().getSupportFragmentManager(), "tag"); .show(requireActivity().getSupportFragmentManager(), "tag");

View File

@ -33,6 +33,7 @@ public class PVOrdiniAcquistoGrigliaViewModel {
Ordine ordine = new Ordine(); Ordine ordine = new Ordine();
ordine.setDataIns(UtilityDate.getDateInstance()); ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId()); ordine.setIdGriglia(griglia.getGrigliaId());
ordine.setCodAlis(griglia.getCodAlis());
ordine.setOrderNewProducts(true); ordine.setOrderNewProducts(true);
ordineRepository.insert(ordine, id -> { ordineRepository.insert(ordine, id -> {
ordine.setOrdineId(id); ordine.setOrdineId(id);

View File

@ -11,7 +11,6 @@ import androidx.databinding.DataBindingUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
@ -21,13 +20,11 @@ import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
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.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; 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.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding; import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
@ -36,25 +33,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
private DialogScanCodiceGrigliaBinding mBinding; private DialogScanCodiceGrigliaBinding mBinding;
private int mBarcodeScannerIstanceID; private int mBarcodeScannerIstanceID;
private final RunnableArgs<Griglia> mOnDialogDismiss; private final RunnableArgss<Griglia, List<ArticoloDTO>> mOnDialogDismiss;
@Inject @Inject
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer; PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
@Inject
ArticoloGrigliaRepository articoloGrigliaRepository;
@Inject
GrigliaRepository grigliaRepository;
private Griglia mGriglia; private Griglia mGriglia;
private List<ArticoloDTO> mListArticoli;
public static DialogScanGrigliaAcquistoView newInstance(RunnableArgs<Griglia> onDialogDismiss) { public static DialogScanGrigliaAcquistoView newInstance(RunnableArgss<Griglia, List<ArticoloDTO>> onDialogDismiss) {
return new DialogScanGrigliaAcquistoView(onDialogDismiss); return new DialogScanGrigliaAcquistoView(onDialogDismiss);
} }
private DialogScanGrigliaAcquistoView(RunnableArgs<Griglia> onDialogDismiss) { private DialogScanGrigliaAcquistoView(RunnableArgss<Griglia, List<ArticoloDTO>> onDialogDismiss) {
super(); super();
mOnDialogDismiss = onDialogDismiss; mOnDialogDismiss = onDialogDismiss;
} }
@ -93,75 +85,38 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
@Override @Override
public void onDismiss(@NonNull DialogInterface dialog) { public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID); BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
mOnDialogDismiss.run(mGriglia); mOnDialogDismiss.run(mGriglia, mListArticoli);
super.onDismiss(dialog); super.onDismiss(dialog);
} }
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable(); BarcodeManager.disable();
this.onLoadingStarted();
RunnableArgs<Exception> mOnError = exception -> { RunnableArgs<Exception> mOnError = exception -> {
this.onError(exception); this.onError(exception);
BarcodeManager.enable(); BarcodeManager.enable();
}; };
RunnableArgs<Griglia> onGrigliaAvailable = griglia -> { fetchArticoli(data.getStringValue(), mOnError);
this.onLoadingEnded();
mGriglia = griglia;
dismiss();
};
grigliaRepository.findByCodAlis(data.getStringValue(), grigliaWrapper -> {
if (grigliaWrapper != null) {
var griglia = grigliaWrapper.getGriglia();
griglia.setCountArticoli(grigliaWrapper.getCountArticoli());
updateGriglia(griglia, onGrigliaAvailable, mOnError);
} else {
downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable, mOnError);
}
}, mOnError);
}; };
public void fetchArticoli(String codAlis, RunnableArgs<Exception> onFailed) {
this.onLoadingStarted();
pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> {
this.onLoadingEnded();
public void downloadAndSaveLisA(String codAlis, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFailed) {
Griglia griglia = new Griglia();
griglia.setCodAlis(codAlis);
updateGriglia(griglia, onSave, onFailed);
}
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSaved, RunnableArgs<Exception> onFailed) {
pvOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> {
if (dto.getGrigliaAcquistiChild().size() <= 0) { if (dto.getGrigliaAcquistiChild().size() <= 0) {
onFailed.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli")); onFailed.run(new Exception("La griglia selezionata (" + codAlis + ") non esiste o non presenta articoli"));
return; return;
} }
griglia.setDescrLisa(dto.getDescrLisa()); mGriglia = new Griglia();
griglia.setDescrDepo(dto.getDescrDepo()); mGriglia.setCodAlis(codAlis);
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size()); mGriglia.setDescrLisa(dto.getDescrLisa());
mGriglia.setDescrDepo(dto.getDescrDepo());
grigliaRepository.saveGriglia(griglia, id -> { mListArticoli = dto.getGrigliaAcquistiChild();
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFailed); this.dismiss();
}, onFailed);
}, onFailed); }, onFailed);
} }
private void saveLisAToGriglia(List<ArticoloDTO> articoli, Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
List<ArticoloGriglia> articoliGriglia = new ArrayList<>();
for (ArticoloDTO articolo : articoli) {
ArticoloGriglia toSave = articolo.toArticoloGriglia();
toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave);
}
articoloGrigliaRepository.saveArticoliToGriglia(articoliGriglia, griglia, () -> onSave.run(griglia), onFail);
}
} }

View File

@ -101,7 +101,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h; final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h;
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), ordine.getOrdineId(), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.numArts.setText(Html.fromHtml(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli())))); holder.binding.numArts.setText(Html.fromHtml(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli()))));

View File

@ -9,7 +9,7 @@
<string name="loading">Caricamento</string> <string name="loading">Caricamento</string>
<string name="completed">Completato</string> <string name="completed">Completato</string>
<string name="success">Successo</string> <string name="success">Successo</string>
<string name="ord_acq_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string> <string name="ord_acq_testata"><![CDATA[N° <b>%d</b> del <b>%s</b>]]></string>
<string name="ord_ven_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string> <string name="ord_ven_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
<string name="ord_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string> <string name="ord_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>
<string name="doc_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string> <string name="doc_testata"><![CDATA[N° <b>%s</b> del <b>%s</b>]]></string>

View File

@ -49,7 +49,7 @@
<string name="search">Search&#8230;</string> <string name="search">Search&#8230;</string>
<string name="login">Login</string> <string name="login">Login</string>
<string name="permission_request_message">Permissions are required for app to work properly</string> <string name="permission_request_message">Permissions are required for app to work properly</string>
<string name="ord_acq_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string> <string name="ord_acq_testata"><![CDATA[#<b>%d</b> of <b>%s</b>]]></string>
<string name="ord_ven_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string> <string name="ord_ven_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
<string name="ord_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string> <string name="ord_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
<string name="doc_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string> <string name="doc_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>