bugfix e ottimizzazioni gestione ordini acquisto
This commit is contained in:
parent
f967514f97
commit
ae8db5791e
@ -2,7 +2,7 @@
|
||||
"formatVersion": 1,
|
||||
"database": {
|
||||
"version": 12,
|
||||
"identityHash": "1fbbe769d42f5fb33a56580bea8b11c6",
|
||||
"identityHash": "a3c4983a84b2d615e548dcceba15ecf0",
|
||||
"entities": [
|
||||
{
|
||||
"tableName": "articoli_griglia",
|
||||
@ -192,7 +192,7 @@
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
{
|
||||
"fieldPath": "ordineId",
|
||||
@ -253,6 +253,12 @@
|
||||
"columnName": "id_griglia",
|
||||
"affinity": "INTEGER",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "codAlis",
|
||||
"columnName": "cod_alis",
|
||||
"affinity": "TEXT",
|
||||
"notNull": true
|
||||
}
|
||||
],
|
||||
"primaryKey": {
|
||||
@ -868,7 +874,7 @@
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
{
|
||||
"fieldPath": "id",
|
||||
@ -972,6 +978,12 @@
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "zona",
|
||||
"columnName": "zona",
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "remoteSyncDate",
|
||||
"columnName": "remote_sync_date",
|
||||
@ -1006,12 +1018,139 @@
|
||||
}
|
||||
],
|
||||
"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": [],
|
||||
"setupQueries": [
|
||||
"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')"
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
|
||||
InventarioRoomDTO.class,
|
||||
InventarioRowRoomDTO.class
|
||||
},
|
||||
version = 11,
|
||||
version = 12,
|
||||
exportSchema = true)
|
||||
@TypeConverters({
|
||||
DateConverter.class,
|
||||
@ -63,7 +63,8 @@ public abstract class AppDatabase extends RoomDatabase {
|
||||
if (sInstance == null) {
|
||||
var builder = Room.databaseBuilder(applicationContext,
|
||||
AppDatabase.class, "integry_wms")
|
||||
.addMigrations(MIGRATION_10_11);
|
||||
.addMigrations(MIGRATION_10_11)
|
||||
.addMigrations(MIGRATION_11_12);
|
||||
|
||||
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)");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
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;");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ import androidx.room.Update;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.ArticoloOrdineWrapper;
|
||||
|
||||
@Dao
|
||||
public interface ArticoloOrdineDao {
|
||||
@ -33,17 +32,10 @@ public interface ArticoloOrdineDao {
|
||||
@Update
|
||||
void update(ArticoloOrdine articolo);
|
||||
|
||||
@Query("SELECT articoli_ordine.*," +
|
||||
"articoli_griglia.gg_scadenza," +
|
||||
"articoli_griglia.giacenza," +
|
||||
"articoli_griglia.qta_prevista_vendita," +
|
||||
"articoli_griglia.qta_proposta " +
|
||||
@Query("SELECT *" +
|
||||
"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")
|
||||
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")
|
||||
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
|
||||
|
||||
@ -9,15 +9,14 @@ import androidx.room.Update;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
|
||||
|
||||
@Dao
|
||||
public interface GrigliaDao {
|
||||
@Query("SELECT * from griglie")
|
||||
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")
|
||||
GrigliaWrapper findByCodAlis(String codAlis);
|
||||
@Query("SELECT * from griglie where cod_alis = :codAlis")
|
||||
Griglia findByCodAlis(String codAlis);
|
||||
|
||||
@Insert
|
||||
long insert(Griglia griglia);
|
||||
|
||||
@ -9,12 +9,9 @@ import androidx.room.Update;
|
||||
import java.util.Date;
|
||||
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.view_model.OrdineWithGriglia;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||
|
||||
|
||||
@Dao
|
||||
public interface MtbColtDao {
|
||||
@Query("SELECT * from mtb_colt")
|
||||
|
||||
@ -9,7 +9,6 @@ import androidx.room.Update;
|
||||
import java.util.List;
|
||||
|
||||
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;
|
||||
|
||||
@Dao
|
||||
@ -17,11 +16,11 @@ public interface OrdineDao {
|
||||
@Query("SELECT * from ordini ")
|
||||
List<Ordine> getAll();
|
||||
|
||||
@Query("SELECT ordini.*, griglie.* from ordini inner join griglie ON id_griglia = griglie.griglia_id where ordini.transmitted = 1")
|
||||
List<OrdineWithGriglia> getAllTrasnmitted();
|
||||
@Query("SELECT ordini.* from ordini where ordini.transmitted = 1")
|
||||
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")
|
||||
List<OrdineWrapper> getAllOpenOrdersByGriglia(int idGriglia);
|
||||
@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(String codAlis);
|
||||
|
||||
@Insert
|
||||
Long insert(Ordine ordine);
|
||||
|
||||
@ -6,13 +6,6 @@ import androidx.room.ForeignKey;
|
||||
import androidx.room.Index;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
|
||||
@Entity(
|
||||
tableName = "articoli_griglia",
|
||||
indices = {
|
||||
@ -215,38 +208,4 @@ public class ArticoloGriglia {
|
||||
public void setQtaOrd(float 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,11 +2,10 @@ package it.integry.integrywmsnative.core.data_store.db.entity;
|
||||
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.Ignore;
|
||||
import androidx.room.Index;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@Entity(tableName ="griglie",
|
||||
@Entity(tableName = "griglie",
|
||||
indices = {
|
||||
@Index(value = "cod_alis", unique = true)
|
||||
}
|
||||
@ -22,8 +21,6 @@ public class Griglia {
|
||||
private String descrLisa;
|
||||
@ColumnInfo(name = "descr_depo")
|
||||
private String descrDepo;
|
||||
@Ignore
|
||||
private int countArticoli = 0;
|
||||
|
||||
|
||||
public int getGrigliaId() {
|
||||
@ -58,11 +55,4 @@ public class Griglia {
|
||||
this.descrDepo = descrDepo;
|
||||
}
|
||||
|
||||
public int getCountArticoli() {
|
||||
return countArticoli;
|
||||
}
|
||||
|
||||
public void setCountArticoli(int countArticoli) {
|
||||
this.countArticoli = countArticoli;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.data_store.db.entity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
@ -47,15 +48,16 @@ public class Ordine {
|
||||
@Nullable
|
||||
private String codMdep;
|
||||
|
||||
@Ignore
|
||||
private int countArticoli = 0;
|
||||
|
||||
@Ignore
|
||||
private boolean orderNewProducts = false;
|
||||
|
||||
@ColumnInfo(name = "id_griglia")
|
||||
private int idGriglia;
|
||||
|
||||
@ColumnInfo(name = "cod_alis")
|
||||
@NonNull
|
||||
private String codAlis;
|
||||
|
||||
public int getOrdineId() {
|
||||
return ordineId;
|
||||
}
|
||||
@ -105,14 +107,6 @@ public class Ordine {
|
||||
this.transmissionDate = transmissionDate;
|
||||
}
|
||||
|
||||
public int getCountArticoli() {
|
||||
return countArticoli;
|
||||
}
|
||||
|
||||
public void setCountArticoli(int countArticoli) {
|
||||
this.countArticoli = countArticoli;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getGestione() {
|
||||
return gestione;
|
||||
@ -157,8 +151,15 @@ public class Ordine {
|
||||
return orderNewProducts;
|
||||
}
|
||||
|
||||
public Ordine setOrderNewProducts(boolean orderNewProducts) {
|
||||
public void setOrderNewProducts(boolean orderNewProducts) {
|
||||
this.orderNewProducts = orderNewProducts;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getCodAlis() {
|
||||
return codAlis;
|
||||
}
|
||||
|
||||
public void setCodAlis(String codAlis) {
|
||||
this.codAlis = codAlis;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,16 +3,15 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||
import java.util.List;
|
||||
|
||||
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;
|
||||
|
||||
public interface GrigliaRepository {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -3,12 +3,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||
import java.util.Date;
|
||||
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.view_model.OrdineWithGriglia;
|
||||
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;
|
||||
|
||||
public interface MtbColtRepository {
|
||||
|
||||
@ -2,9 +2,7 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
|
||||
|
||||
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.view_model.OrdineWithGriglia;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
|
||||
@ -12,9 +10,9 @@ public interface OrdineRepository {
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@ -2,8 +2,6 @@ package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
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.Ordine;
|
||||
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;
|
||||
|
||||
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) {
|
||||
executorService.execute(() -> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
execute(() -> mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()), onSuccess, onError);
|
||||
}
|
||||
|
||||
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
|
||||
|
||||
@ -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.entity.Griglia;
|
||||
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;
|
||||
|
||||
public class GrigliaDataSource extends BaseDataSource implements GrigliaRepository {
|
||||
@ -29,7 +28,7 @@ public class GrigliaDataSource extends BaseDataSource implements GrigliaReposito
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@ -8,10 +8,8 @@ import java.util.concurrent.ExecutorService;
|
||||
import javax.inject.Inject;
|
||||
|
||||
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.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.expansion.RunnableArgs;
|
||||
|
||||
@ -31,12 +29,12 @@ public class OrdineDataSource extends BaseDataSource implements OrdineRepository
|
||||
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);
|
||||
}
|
||||
|
||||
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
||||
execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()), onSuccess, onError);
|
||||
public void selectAllOpenOrders(String codAlis, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
|
||||
execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(codAlis), onSuccess, onError);
|
||||
}
|
||||
|
||||
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
|
||||
|
||||
@ -1,6 +1,14 @@
|
||||
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 {
|
||||
|
||||
@ -161,24 +169,50 @@ public class ArticoloDTO {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArticoloGriglia toArticoloGriglia() {
|
||||
ArticoloGriglia result = new ArticoloGriglia();
|
||||
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);
|
||||
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
|
||||
ArticoloOrdine articolo = new ArticoloOrdine();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.rest.consumers;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
@ -9,6 +10,7 @@ import java.util.List;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
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.rest.RESTBuilder;
|
||||
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);
|
||||
service.<T>saveTerminalino(saveDTO)
|
||||
service.saveOrdine(saveDTO)
|
||||
.enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<T>> call, Response<ServiceRESTResponse<T>> response) {
|
||||
analyzeAnswer(response, "saveTerminalino", onComplete, onFailed);
|
||||
public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {
|
||||
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
|
||||
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));
|
||||
}
|
||||
});
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
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.gest.contab_doc_interni.dto.SaveDTO;
|
||||
import retrofit2.Call;
|
||||
@ -9,6 +14,9 @@ import retrofit2.http.POST;
|
||||
public interface MagazzinoRESTConsumerService {
|
||||
|
||||
@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);
|
||||
|
||||
}
|
||||
|
||||
@ -12,12 +12,10 @@ import java.util.List;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
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.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
|
||||
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.model.ServiceRESTResponse;
|
||||
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) {
|
||||
|
||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
|
||||
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class, 300);
|
||||
ordiniARestService
|
||||
.getArticoliListino(codAlis)
|
||||
.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();
|
||||
OrdineDTO ordineDTO = new OrdineDTO();
|
||||
List<ArtDTO> artRows = new ArrayList<>();
|
||||
@ -98,15 +96,15 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
|
||||
artRows.add(convertArtToDTO(art, i));
|
||||
}
|
||||
|
||||
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
|
||||
ordineDTO.setChiaveGriglia(ordine.getCodAlis());
|
||||
ordineDTO.setDataCons(UtilityDate.getDateInstance());
|
||||
ordineDTO.setArtRows(artRows);
|
||||
saveDTO.setGestione("O");
|
||||
saveDTO.setOrdineDTO(ordineDTO);
|
||||
|
||||
|
||||
magazzinoRESTConsumer.<DtbOrdt>saveTerminalino(saveDTO, data -> {
|
||||
if(data == null) {
|
||||
magazzinoRESTConsumer.saveOrdine(saveDTO, data -> {
|
||||
if (data == null) {
|
||||
onFailed.run(new Exception("Nessun ordine generato"));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -35,11 +35,11 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
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.MainListAccettazioneClienteListModel;
|
||||
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.ui.ElevatedToolbar;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
@ -86,12 +86,11 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
|
||||
if(savedInstanceState != null && savedInstanceState.containsKey("mToolbar"))
|
||||
if (savedInstanceState != null && savedInstanceState.containsKey("mToolbar"))
|
||||
mToolbar = DataCache.retrieveItem(savedInstanceState.getString("mToolbar"));
|
||||
|
||||
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() {
|
||||
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x->{
|
||||
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), x -> {
|
||||
this.refreshList(getFilteredList(mTextFilter));
|
||||
});
|
||||
|
||||
@ -198,7 +197,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
|
||||
|
||||
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)
|
||||
.filter(y -> y.getBarcode().equals(x.getBarcode()))
|
||||
@ -243,7 +242,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
|
||||
@Override
|
||||
public boolean onQueryTextChange(String newText) {
|
||||
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
|
||||
if(originalList == null || originalList.isEmpty()) return false;
|
||||
if (originalList == null || originalList.isEmpty()) return false;
|
||||
mTextFilter = newText;
|
||||
List<OrdineAccettazioneInevasoDTO> filteredOrders = getFilteredList(newText);
|
||||
|
||||
@ -254,9 +253,9 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
|
||||
private List<OrdineAccettazioneInevasoDTO> getFilteredList(String newText) {
|
||||
List<OrdineAccettazioneInevasoDTO> filteredOrders = new ArrayList<>();
|
||||
List<OrdineAccettazioneInevasoDTO> originalList = this.mViewModel.getOrderList().getValue();
|
||||
if(originalList == null || originalList.isEmpty() || newText == null) return originalList;
|
||||
for(int i = 0; i < originalList.size(); i++){
|
||||
if(originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())){
|
||||
if (originalList == null || originalList.isEmpty() || newText == null) return originalList;
|
||||
for (int i = 0; i < originalList.size(); i++) {
|
||||
if (originalList.get(i).getRagSocOrd().toLowerCase().contains(newText.toLowerCase())) {
|
||||
filteredOrders.add(originalList.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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._BaseRESTConsumer;
|
||||
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.SaveDTO;
|
||||
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
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) {
|
||||
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
|
||||
service.retrieveProducts(codDtip,codMgrp,"L").enqueue(new Callback<>() {
|
||||
service.retrieveProducts(codDtip, codMgrp, "L").enqueue(new Callback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<GrigliaArticoliDTO>> call, Response<ServiceRESTResponse<GrigliaArticoliDTO>> response) {
|
||||
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){
|
||||
magazzinoRESTConsumer.saveTerminalino(saveDTO, onComplete, onFailed);
|
||||
public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed) {
|
||||
magazzinoRESTConsumer.saveTerminalinoWMS(saveDTO, onComplete, onFailed);
|
||||
}
|
||||
}
|
||||
|
||||
@ -310,7 +310,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
|
||||
|
||||
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)
|
||||
.filter(y -> y.getBarcode().equals(x.getBarcode()))
|
||||
|
||||
@ -8,6 +8,7 @@ import android.text.SpannableString;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
@ -15,6 +16,8 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import com.ravikoradiya.liveadapter.LiveAdapter;
|
||||
import com.ravikoradiya.liveadapter.Type;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
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_store.db.entity.ArticoloOrdine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseActivity;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
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 {
|
||||
|
||||
private static String DATA_KEY_ORDER = "keyOrdine";
|
||||
|
||||
private Ordine mOrdine;
|
||||
private static String DATA_LIST_ARTS = "listArts";
|
||||
private ActivityPvOrdineAcquistoEditBinding mBinding;
|
||||
|
||||
private int barcodeScannerIstanceID;
|
||||
|
||||
@Inject
|
||||
PVOrdineAcquistoEditViewModel mViewModel;
|
||||
|
||||
|
||||
public static Intent newInstance(Context context, Ordine ordine) {
|
||||
public static Intent newInstance(Context context, Ordine ordine, List<ArticoloDTO> listArts) {
|
||||
Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class);
|
||||
String keyOrdine = DataCache.addItem(ordine);
|
||||
String keyListArts = DataCache.addItem(listArts);
|
||||
myIntent.putExtra(DATA_KEY_ORDER, keyOrdine);
|
||||
myIntent.putExtra(DATA_LIST_ARTS, keyListArts);
|
||||
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.setViewModel(this);
|
||||
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_ORDER));
|
||||
Ordine ordine = DataCache.retrieveItem(getIntent().getStringExtra(DATA_KEY_ORDER));
|
||||
setSupportActionBar(mBinding.toolbar);
|
||||
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();
|
||||
close();
|
||||
}
|
||||
if (mOrdine.isTransmitted()) {
|
||||
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));
|
||||
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), ordine.getOrdineId(), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
|
||||
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
|
||||
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.getCurrentGriglia().observe(this, griglia -> {
|
||||
mBinding.codAlis.setText(griglia.getCodAlis());
|
||||
});
|
||||
mBinding.codAlis.setText(ordine.getCodAlis());
|
||||
|
||||
this.mViewModel.getArticoli().observe(this, articoli -> {
|
||||
mBinding.countArtOrd.setText(String.valueOf(articoli.size()));
|
||||
@ -104,16 +109,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
mBinding.closeActivityFab.close(false);
|
||||
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();
|
||||
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
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
@ -148,7 +153,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
|
||||
}
|
||||
|
||||
|
||||
private void selectAction(ArticoloOrdine articoloOrdine) {
|
||||
mBinding.closeActivityFab.close(false);
|
||||
BarcodeManager.disable();
|
||||
@ -156,7 +160,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
DialogAskActionView.newInstance(articoloOrdine.getDescrizione(),
|
||||
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
|
||||
() -> {
|
||||
this.mViewModel.checkArticolo(mOrdine, articoloOrdine.getCodMart(),
|
||||
this.mViewModel.checkArticolo(articoloOrdine.getCodMart(),
|
||||
artOrd -> {
|
||||
this.onItemDispatched(artOrd);
|
||||
BarcodeManager.enable();
|
||||
@ -184,6 +188,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
|
||||
mBinding.closeActivityFab.close(false);
|
||||
this.onLoadingStarted();
|
||||
BarcodeManager.disable();
|
||||
|
||||
this.mViewModel.processBarcodeDTO(data, this::onLoadingEnded);
|
||||
|
||||
@ -191,19 +196,16 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
|
||||
@Override
|
||||
public void onItemDispatched(ArticoloOrdine articoloOrdine) {
|
||||
|
||||
BarcodeManager.disable();
|
||||
DialogEditArticoloView
|
||||
.newInstance(articoloOrdine, articolo -> {
|
||||
runOnUiThread(() -> {
|
||||
if (articolo != null) {
|
||||
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
this.mViewModel.saveArticolo(articolo);
|
||||
this.mViewModel.refreshListArticoli();
|
||||
});
|
||||
}, () -> {
|
||||
|
||||
}).show(this.getSupportFragmentManager(), "tag");
|
||||
}, null).show(this.getSupportFragmentManager(), "tag");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -211,7 +213,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
return getResources().getColor(resId);
|
||||
}
|
||||
|
||||
|
||||
public void exportOrdine() {
|
||||
this.mViewModel.exportOrdine(() -> {
|
||||
runOnUiThread(() -> {
|
||||
@ -221,7 +222,6 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void close() {
|
||||
onBackPressed();
|
||||
}
|
||||
@ -236,7 +236,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
|
||||
BarcodeManager.disable();
|
||||
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> {
|
||||
this.onLoadingStarted();
|
||||
this.mViewModel.checkArticolo(mOrdine, codice,
|
||||
this.mViewModel.checkArticolo(codice,
|
||||
articoloOrdine -> {
|
||||
this.onItemDispatched(articoloOrdine);
|
||||
this.onLoadingEnded();
|
||||
|
||||
@ -4,16 +4,16 @@ import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
|
||||
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.Griglia;
|
||||
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.GrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||
@ -49,7 +50,7 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
private Listener mListener;
|
||||
|
||||
|
||||
private final MutableLiveData<Griglia> mCurrentGriglia = new MutableLiveData<>();
|
||||
private List<ArticoloDTO> mArticoliGriglia = new ArrayList<>();
|
||||
private final MutableLiveData<List<ArticoloOrdine>> mArticoli = new MutableLiveData<>();
|
||||
|
||||
|
||||
@ -65,83 +66,52 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer;
|
||||
}
|
||||
|
||||
public void init(Ordine ordine) {
|
||||
public void init(Ordine ordine, List<ArticoloDTO> articoliGriglia) {
|
||||
this.mCurrentOrdine = ordine;
|
||||
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.loadGriglia(ordine.getIdGriglia(), griglia -> {
|
||||
mCurrentGriglia.postValue(griglia);
|
||||
this.loadArticoli(mCurrentOrdine, articoli -> {
|
||||
articoli = Stream.of(articoli).map(this::setBgTint).toList();
|
||||
this.mArticoli.postValue(articoli);
|
||||
this.sendOnLoadingEnded();
|
||||
});
|
||||
mArticoliGriglia.clear();
|
||||
mArticoliGriglia.addAll(articoliGriglia);
|
||||
this.refreshListArticoli();
|
||||
}
|
||||
|
||||
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) {
|
||||
int chk = art.checkQtaProposta();
|
||||
switch (chk) {
|
||||
case -1:
|
||||
art.setBgTint(this.mListener.getColorFromResource(R.color.red_600));
|
||||
break;
|
||||
case 1:
|
||||
art.setBgTint(this.mListener.getColorFromResource(R.color.orange_600));
|
||||
break;
|
||||
default:
|
||||
art.setBgTint(this.mListener.getColorFromResource(R.color.colorPrimary));
|
||||
}
|
||||
private ArticoloOrdine completeDataArticoli(ArticoloOrdine art) {
|
||||
art.setBgTint(getBgTint(art));
|
||||
ArticoloDTO artGrid = Stream.of(mArticoliGriglia).filter(x -> art.getCodMart().equalsIgnoreCase(x.getCodMart())).findFirstOrElse(new ArticoloDTO());
|
||||
art.setGgScadenza(artGrid.getGgScadenza());
|
||||
art.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza()));
|
||||
art.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()));
|
||||
art.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()));
|
||||
return art;
|
||||
}
|
||||
|
||||
public MutableLiveData<Griglia> getCurrentGriglia() {
|
||||
return mCurrentGriglia;
|
||||
private int getBgTint(ArticoloOrdine art) {
|
||||
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() {
|
||||
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) {
|
||||
this.checkArticolo(
|
||||
mCurrentOrdine,
|
||||
barcodeScanDTO.getStringValue(),
|
||||
articoloOrdine -> {
|
||||
this.sendOnItemDispatched(articoloOrdine);
|
||||
@ -151,7 +121,6 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
private void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad) {
|
||||
try {
|
||||
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 {
|
||||
mArticoloGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
|
||||
if (artGrid != null) {
|
||||
mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
|
||||
if (articolo != null) {
|
||||
articolo
|
||||
.setQtaPrevistaVendita(BigDecimal.valueOf(artGrid.getQtaPrevistaVendita()))
|
||||
.setQtaProposta(BigDecimal.valueOf(artGrid.getQtaProposta()))
|
||||
.setGiacenza(BigDecimal.valueOf(artGrid.getGiacenza()))
|
||||
.setMediaSett(artGrid.getMediaSett());
|
||||
if (mArticoliGriglia == null || mArticoliGriglia.isEmpty()) {
|
||||
onFail.run(new Exception("Nessun articolo è presente nella griglia"));
|
||||
return;
|
||||
}
|
||||
ArticoloDTO art = Stream.of(mArticoliGriglia).filter(articolo ->
|
||||
articolo.getCodMart().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().equalsIgnoreCase(barcode) ||
|
||||
articolo.getBarcode().equalsIgnoreCase(StringUtils.leftPad(barcode, 13, "0"))
|
||||
).sortBy(x -> x.getSortByBarcodeCondition(barcode)).findFirst().orElse(null);
|
||||
|
||||
articolo.setQtaMinOrdinabile(artGrid.getQtaMinOrdinabile());
|
||||
articolo.setMerceDaRic(artGrid.getMerceDaRic());
|
||||
articolo.setNewNoPromo(artGrid.isNewNoPromo());
|
||||
articolo.setFlagQtaMultipla(artGrid.getFlagQtaMultipla());
|
||||
articolo.setSystemNote(artGrid.generateSystemNote());
|
||||
if (art == null) {
|
||||
onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
|
||||
return;
|
||||
}
|
||||
|
||||
onSuccess.run(articolo);
|
||||
} else {
|
||||
ArticoloOrdine art = artGrid.convertToArticoloOrdine(ordine);
|
||||
if (isAutoOrderOnScan()) {
|
||||
art.setQtaOrd(art.getQtaCnf());
|
||||
mArticoliOrdineRepository.saveArticoloToOrdine(art, () -> {
|
||||
saveArticolo(art);
|
||||
this.sendOnLoadingEnded();
|
||||
mArticoliOrdineRepository.findArticoloByScanAndOrdine(mCurrentOrdine, art.codMart, (articolo) -> {
|
||||
|
||||
}, this::sendError);
|
||||
} else {
|
||||
onSuccess.run(art);
|
||||
}
|
||||
}
|
||||
}, onFail);
|
||||
if (articolo != null) {
|
||||
articolo
|
||||
.setQtaPrevistaVendita(BigDecimal.valueOf(art.getQtaPrevistaVendita()))
|
||||
.setQtaProposta(BigDecimal.valueOf(art.getQtaProposta()))
|
||||
.setGiacenza(BigDecimal.valueOf(art.getGiacenza()))
|
||||
.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 {
|
||||
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);
|
||||
|
||||
@ -217,43 +191,38 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
return SettingsManager.iDB().isFlagOrdinaArticoliOnScan();
|
||||
}
|
||||
|
||||
private void getNewArticoli(int idGrigla, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) {
|
||||
mArticoloGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError);
|
||||
private List<ArticoloDTO> getNewArticoli() {
|
||||
return Stream.of(mArticoliGriglia).filter(x -> x.getQtaOrd() > 0f).toList();
|
||||
}
|
||||
|
||||
public void orderNewProducts() {
|
||||
this.sendOnLoadingStarted();
|
||||
|
||||
this.getNewArticoli(mCurrentOrdine.getIdGriglia(), articoli -> {
|
||||
if (articoli != null && !articoli.isEmpty()) {
|
||||
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
|
||||
List<ArticoloDTO> newArts = getNewArticoli();
|
||||
if (!newArts.isEmpty()) {
|
||||
List<ArticoloOrdine> articoliToSave = new ArrayList<>();
|
||||
|
||||
Stream.of(articoli).forEach(articolo -> {
|
||||
if (
|
||||
Stream.of(mArticoli.getValue())
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirst()
|
||||
.isEmpty()
|
||||
Stream.of(newArts).forEach(articolo -> {
|
||||
if (
|
||||
Stream.of(mArticoli.getValue())
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirst()
|
||||
.isEmpty()
|
||||
|
||||
&& Stream.of(articoliToSave)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirst()
|
||||
.isEmpty()
|
||||
) {
|
||||
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
|
||||
articoliToSave.add(dto);
|
||||
}
|
||||
});
|
||||
if (!articoliToSave.isEmpty()) {
|
||||
mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, () -> {
|
||||
this.saveArticoli(articoliToSave);
|
||||
this.sendOnLoadingEnded();
|
||||
&& Stream.of(articoliToSave)
|
||||
.filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart()))
|
||||
.findFirst()
|
||||
.isEmpty()
|
||||
) {
|
||||
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
|
||||
articoliToSave.add(dto);
|
||||
}
|
||||
});
|
||||
if (!articoliToSave.isEmpty()) {
|
||||
mArticoliOrdineRepository.saveArticoliToOrdine(articoliToSave, this::refreshListArticoli, this::sendError);
|
||||
|
||||
}, this::sendError);
|
||||
|
||||
} else this.sendOnLoadingEnded();
|
||||
} else this.sendOnLoadingEnded();
|
||||
}, this::sendError);
|
||||
} else this.sendOnLoadingEnded();
|
||||
}
|
||||
|
||||
public void deleteArticolo(ArticoloOrdine articoloOrdine) {
|
||||
@ -265,7 +234,7 @@ public class PVOrdineAcquistoEditViewModel {
|
||||
|
||||
public void exportOrdine(Runnable onComplete) {
|
||||
this.sendOnLoadingStarted();
|
||||
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), mCurrentGriglia.getValue(), (ordine) -> {
|
||||
pvOrdiniAcquistoRESTConsumer.saveOrdine(mCurrentOrdine, mArticoli.getValue(), (ordine) -> {
|
||||
|
||||
mOrdineRepository.updateOrder(ordine, ord -> {
|
||||
this.sendOnLoadingEnded();
|
||||
|
||||
@ -24,6 +24,8 @@ import javax.inject.Inject;
|
||||
|
||||
import it.integry.integrywmsnative.MainApplication;
|
||||
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.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
@ -46,6 +48,7 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
|
||||
|
||||
private DialogPvEditArticoloBinding mBindings;
|
||||
private boolean mEnableDataCallback = true;
|
||||
private int barcodeScannerIstanceID;
|
||||
|
||||
public static DialogEditArticoloView newInstance(ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onComplete, Runnable onAbort) {
|
||||
return new DialogEditArticoloView(articolo, onComplete, onAbort);
|
||||
@ -96,6 +99,7 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
initBarcodeReader();
|
||||
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
|
||||
}
|
||||
|
||||
@ -108,10 +112,21 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
|
||||
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
this.mOnAbort.run();
|
||||
if (this.mOnAbort != null) {
|
||||
this.mOnAbort.run();
|
||||
}
|
||||
super.onDismiss(dialog);
|
||||
}
|
||||
|
||||
private void initBarcodeReader() {
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessful((barcodeScanDTO) -> {
|
||||
})
|
||||
.setOnScanFailed(this::onError));
|
||||
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
|
||||
private void initBindings() {
|
||||
|
||||
UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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.GrigliaRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
|
||||
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
|
||||
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
|
||||
import it.integry.integrywmsnative.core.expansion.BaseFragment;
|
||||
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.SimpleDividerItemDecoration;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
|
||||
public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITitledFragment, IScrollableFragment {
|
||||
@ -49,8 +49,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
private FragmentPvOrdiniAcquistoBinding mBinding;
|
||||
private Griglia mGriglia;
|
||||
private OrdineAcquistoPvOpenListAdapter mAdapter;
|
||||
private DialogProgressView mCurrentProgress;
|
||||
private final List<OrdineWrapper> mRenderedOrderList = new ArrayList<>();
|
||||
private final List<ArticoloDTO> mListArticoli = new ArrayList<>();
|
||||
private boolean mRedirectToNewOrder = true;
|
||||
|
||||
private final List<Runnable> mOnPreDestroyList = new ArrayList<>();
|
||||
@ -99,11 +99,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
|
||||
private void init() {
|
||||
BarcodeManager.enable();
|
||||
DialogScanGrigliaAcquistoView.newInstance(griglia -> {
|
||||
DialogScanGrigliaAcquistoView.newInstance((griglia, listArticoli) -> {
|
||||
if (griglia == null) {
|
||||
((IPoppableActivity) requireActivity()).pop();
|
||||
} else {
|
||||
setGriglia(griglia);
|
||||
setGriglia(griglia, listArticoli);
|
||||
}
|
||||
}).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());
|
||||
}
|
||||
|
||||
private void setGriglia(Griglia griglia) {
|
||||
private void setGriglia(Griglia griglia, List<ArticoloDTO> listArticoli) {
|
||||
mGriglia = griglia;
|
||||
mListArticoli.clear();
|
||||
mListArticoli.addAll(listArticoli);
|
||||
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
|
||||
mBinding.codAlis.setText(griglia.getCodAlis());
|
||||
mBinding.descrLis.setText(griglia.getDescrLisa());
|
||||
mBinding.descrDepo.setText(griglia.getDescrDepo());
|
||||
mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli()));
|
||||
mBinding.countArtLis.setText(String.valueOf(listArticoli.size()));
|
||||
|
||||
fetchOrders();
|
||||
}
|
||||
@ -128,9 +130,8 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
private void fetchOrders() {
|
||||
this.onLoadingStarted();
|
||||
|
||||
mOrdineRepository.selectAllOpenOrders(mGriglia, ordini -> {
|
||||
mOrdineRepository.selectAllOpenOrders(mGriglia.getCodAlis(), ordini -> {
|
||||
this.onLoadingEnded();
|
||||
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
setOrdini(ordini);
|
||||
});
|
||||
@ -149,9 +150,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
}
|
||||
}
|
||||
|
||||
public Griglia getGriglia() {
|
||||
return mGriglia;
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
mBinding.ordiniAApertiMainList.setHasFixedSize(true);
|
||||
@ -165,13 +163,13 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
|
||||
}
|
||||
|
||||
private void editOrdine(Ordine ordine) {
|
||||
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine));
|
||||
requireActivity().startActivity(PVOrdineAcquistoEditActivity.newInstance(requireActivity(), ordine, mListArticoli));
|
||||
}
|
||||
|
||||
|
||||
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(),
|
||||
ordine.getCountArticoli() + " articoli",
|
||||
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(),
|
||||
mListArticoli.size() + " articoli",
|
||||
() -> this.editOrdine(ordine),
|
||||
() -> this.deleteOrdine(ordine))
|
||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
|
||||
@ -33,6 +33,7 @@ public class PVOrdiniAcquistoGrigliaViewModel {
|
||||
Ordine ordine = new Ordine();
|
||||
ordine.setDataIns(UtilityDate.getDateInstance());
|
||||
ordine.setIdGriglia(griglia.getGrigliaId());
|
||||
ordine.setCodAlis(griglia.getCodAlis());
|
||||
ordine.setOrderNewProducts(true);
|
||||
ordineRepository.insert(ordine, id -> {
|
||||
ordine.setOrdineId(id);
|
||||
|
||||
@ -11,7 +11,6 @@ import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@ -21,13 +20,11 @@ import it.integry.integrywmsnative.MainApplication;
|
||||
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.ArticoloGriglia;
|
||||
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.expansion.BaseDialogFragment;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
|
||||
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
|
||||
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
|
||||
|
||||
@ -36,25 +33,20 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
private DialogScanCodiceGrigliaBinding mBinding;
|
||||
private int mBarcodeScannerIstanceID;
|
||||
|
||||
private final RunnableArgs<Griglia> mOnDialogDismiss;
|
||||
private final RunnableArgss<Griglia, List<ArticoloDTO>> mOnDialogDismiss;
|
||||
|
||||
@Inject
|
||||
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
|
||||
|
||||
@Inject
|
||||
ArticoloGrigliaRepository articoloGrigliaRepository;
|
||||
|
||||
@Inject
|
||||
GrigliaRepository grigliaRepository;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private DialogScanGrigliaAcquistoView(RunnableArgs<Griglia> onDialogDismiss) {
|
||||
private DialogScanGrigliaAcquistoView(RunnableArgss<Griglia, List<ArticoloDTO>> onDialogDismiss) {
|
||||
super();
|
||||
mOnDialogDismiss = onDialogDismiss;
|
||||
}
|
||||
@ -93,75 +85,38 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
|
||||
@Override
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
|
||||
mOnDialogDismiss.run(mGriglia);
|
||||
mOnDialogDismiss.run(mGriglia, mListArticoli);
|
||||
|
||||
super.onDismiss(dialog);
|
||||
}
|
||||
|
||||
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
BarcodeManager.disable();
|
||||
this.onLoadingStarted();
|
||||
|
||||
RunnableArgs<Exception> mOnError = exception -> {
|
||||
this.onError(exception);
|
||||
BarcodeManager.enable();
|
||||
};
|
||||
|
||||
RunnableArgs<Griglia> onGrigliaAvailable = griglia -> {
|
||||
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);
|
||||
fetchArticoli(data.getStringValue(), mOnError);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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 -> {
|
||||
|
||||
public void fetchArticoli(String codAlis, RunnableArgs<Exception> onFailed) {
|
||||
this.onLoadingStarted();
|
||||
pvOrdiniAcquistoRESTConsumer.getArticoliListino(codAlis, dto -> {
|
||||
this.onLoadingEnded();
|
||||
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;
|
||||
}
|
||||
|
||||
griglia.setDescrLisa(dto.getDescrLisa());
|
||||
griglia.setDescrDepo(dto.getDescrDepo());
|
||||
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
|
||||
|
||||
grigliaRepository.saveGriglia(griglia, id -> {
|
||||
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFailed);
|
||||
}, onFailed);
|
||||
mGriglia = new Griglia();
|
||||
mGriglia.setCodAlis(codAlis);
|
||||
mGriglia.setDescrLisa(dto.getDescrLisa());
|
||||
mGriglia.setDescrDepo(dto.getDescrDepo());
|
||||
mListArticoli = dto.getGrigliaAcquistiChild();
|
||||
this.dismiss();
|
||||
}, 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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
|
||||
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()))));
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<string name="loading">Caricamento</string>
|
||||
<string name="completed">Completato</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_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>
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
<string name="search">Search…</string>
|
||||
<string name="login">Login</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_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||
<string name="doc_testata"><![CDATA[#<b>%s</b> of <b>%s</b>]]></string>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user