diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 00000000..4a53bee8
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 930fe09a..5fb0453b 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 9ac7891b..555788d7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
- def appVersionCode = 481
- def appVersionName = '1.44.12'
+ def appVersionCode = 482
+ def appVersionName = '1.45.00'
signingConfigs {
release {
@@ -192,7 +192,8 @@ dependencies {
implementation 'org.greenrobot:eventbus:3.3.1'
//Barcode generator
- implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
+// implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
+ implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
}
repositories {
diff --git a/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json
new file mode 100644
index 00000000..f62dface
--- /dev/null
+++ b/app/schemas/it.integry.integrywmsnative.core.data_store.db.AppDatabase/18.json
@@ -0,0 +1,1338 @@
+{
+ "formatVersion": 1,
+ "database": {
+ "version": 18,
+ "identityHash": "720c67adcc3f947a0c0ce04d4d04fbe9",
+ "entities": [
+ {
+ "tableName": "articoli_griglia",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`articolo_griglia_id` INTEGER PRIMARY KEY AUTOINCREMENT, `cod_mart` TEXT, `descrizione` TEXT, `unt_mis` TEXT, `qta_cnf` REAL NOT NULL, `bar_code` TEXT, `merce_da_ric` REAL NOT NULL, `media_sett` REAL NOT NULL, `flag_qta_multipla` TEXT, `qta_min_ordinabile` REAL NOT NULL, `gg_scadenza` INTEGER NOT NULL, `giacenza` REAL NOT NULL, `qta_prevista_vendita` REAL NOT NULL, `qta_proposta` REAL NOT NULL, `qta_ord` REAL NOT NULL, `id_griglia` INTEGER NOT NULL, `new_no_promo` INTEGER NOT NULL, FOREIGN KEY(`id_griglia`) REFERENCES `griglie`(`griglia_id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
+ "fields": [
+ {
+ "fieldPath": "articoloGrigliaId",
+ "columnName": "articolo_griglia_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMart",
+ "columnName": "cod_mart",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrizione",
+ "columnName": "descrizione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "untMis",
+ "columnName": "unt_mis",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaCnf",
+ "columnName": "qta_cnf",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "barCode",
+ "columnName": "bar_code",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "merceDaRic",
+ "columnName": "merce_da_ric",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "mediaSett",
+ "columnName": "media_sett",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "flagQtaMultipla",
+ "columnName": "flag_qta_multipla",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaMinOrdinabile",
+ "columnName": "qta_min_ordinabile",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "ggScadenza",
+ "columnName": "gg_scadenza",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "giacenza",
+ "columnName": "giacenza",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "qtaPrevistaVendita",
+ "columnName": "qta_prevista_vendita",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "qtaProposta",
+ "columnName": "qta_proposta",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "qtaOrd",
+ "columnName": "qta_ord",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "idGriglia",
+ "columnName": "id_griglia",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "newNoPromo",
+ "columnName": "new_no_promo",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "articolo_griglia_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_articoli_griglia_id_griglia",
+ "unique": false,
+ "columnNames": [
+ "id_griglia"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_articoli_griglia_id_griglia` ON `${TABLE_NAME}` (`id_griglia`)"
+ }
+ ],
+ "foreignKeys": [
+ {
+ "table": "griglie",
+ "onDelete": "CASCADE",
+ "onUpdate": "NO ACTION",
+ "columns": [
+ "id_griglia"
+ ],
+ "referencedColumns": [
+ "griglia_id"
+ ]
+ }
+ ]
+ },
+ {
+ "tableName": "griglie",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`griglia_id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `cod_alis` TEXT, `descr_lisa` TEXT, `descr_depo` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "grigliaId",
+ "columnName": "griglia_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "codAlis",
+ "columnName": "cod_alis",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrLisa",
+ "columnName": "descr_lisa",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrDepo",
+ "columnName": "descr_depo",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "griglia_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_griglie_cod_alis",
+ "unique": true,
+ "columnNames": [
+ "cod_alis"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_griglie_cod_alis` ON `${TABLE_NAME}` (`cod_alis`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "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, `cod_alis` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "ordineId",
+ "columnName": "ordine_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "dataIns",
+ "columnName": "data_ins",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "annotazioni",
+ "columnName": "annotazioni",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "transmitted",
+ "columnName": "transmitted",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "transmissionDate",
+ "columnName": "transmission_date",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gestione",
+ "columnName": "gestione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataOrd",
+ "columnName": "data_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numOrd",
+ "columnName": "num_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMdep",
+ "columnName": "cod_mdep",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "idGriglia",
+ "columnName": "id_griglia",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codAlis",
+ "columnName": "cod_alis",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "ordine_id"
+ ]
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "articoli_ordine",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`articolo_ordine_id` INTEGER PRIMARY KEY AUTOINCREMENT, `cod_mart` TEXT, `descrizione` TEXT, `unt_mis` TEXT, `qta_cnf` REAL NOT NULL, `bar_code` TEXT, `merce_da_ric` REAL NOT NULL, `media_sett` REAL NOT NULL, `flag_qta_multipla` TEXT, `qta_min_ordinabile` REAL NOT NULL, `id_ordine` INTEGER NOT NULL, `qta_ord` REAL NOT NULL, `data_ins` INTEGER, `new_no_promo` INTEGER NOT NULL, `system_note` TEXT, `cod_alis` TEXT, FOREIGN KEY(`id_ordine`) REFERENCES `ordini`(`ordine_id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
+ "fields": [
+ {
+ "fieldPath": "articoloOrdineId",
+ "columnName": "articolo_ordine_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMart",
+ "columnName": "cod_mart",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrizione",
+ "columnName": "descrizione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "untMis",
+ "columnName": "unt_mis",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaCnf",
+ "columnName": "qta_cnf",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "barCode",
+ "columnName": "bar_code",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "merceDaRic",
+ "columnName": "merce_da_ric",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "mediaSett",
+ "columnName": "media_sett",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "flagQtaMultipla",
+ "columnName": "flag_qta_multipla",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaMinOrdinabile",
+ "columnName": "qta_min_ordinabile",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "idOrdine",
+ "columnName": "id_ordine",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "qtaOrd",
+ "columnName": "qta_ord",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "dataIns",
+ "columnName": "data_ins",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "newNoPromo",
+ "columnName": "new_no_promo",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "systemNote",
+ "columnName": "system_note",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codAlis",
+ "columnName": "cod_alis",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "articolo_ordine_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_articoli_ordine_id_ordine",
+ "unique": false,
+ "columnNames": [
+ "id_ordine"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_articoli_ordine_id_ordine` ON `${TABLE_NAME}` (`id_ordine`)"
+ },
+ {
+ "name": "index_articoli_ordine_id_ordine_cod_mart",
+ "unique": true,
+ "columnNames": [
+ "id_ordine",
+ "cod_mart"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_articoli_ordine_id_ordine_cod_mart` ON `${TABLE_NAME}` (`id_ordine`, `cod_mart`)"
+ }
+ ],
+ "foreignKeys": [
+ {
+ "table": "ordini",
+ "onDelete": "CASCADE",
+ "onUpdate": "NO ACTION",
+ "columns": [
+ "id_ordine"
+ ],
+ "referencedColumns": [
+ "ordine_id"
+ ]
+ }
+ ]
+ },
+ {
+ "tableName": "mtb_colt",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `username` TEXT, `gestione` TEXT, `data_collo` INTEGER, `ser_collo` TEXT, `num_collo` INTEGER, `rif_ord` TEXT, `cod_anag` TEXT, `cod_vdes` TEXT, `cod_mdep` TEXT, `cod_vlis` TEXT, `cod_dtip` TEXT, `cod_tcol` TEXT, `ser_doc` TEXT, `annotazioni` TEXT, `posizione` TEXT, `cod_dtip_provv` TEXT, `ser_doc_provv` TEXT, `cod_jfas` TEXT, `data_ord` INTEGER, `data_doc` INTEGER, `data_doc_provv` INTEGER, `cod_mgrp` TEXT, `data_vers` INTEGER, `segno` INTEGER, `num_ord` INTEGER, `num_doc` INTEGER, `num_doc_provv` INTEGER)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "username",
+ "columnName": "username",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gestione",
+ "columnName": "gestione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataCollo",
+ "columnName": "data_collo",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serCollo",
+ "columnName": "ser_collo",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numCollo",
+ "columnName": "num_collo",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "rifOrd",
+ "columnName": "rif_ord",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codAnag",
+ "columnName": "cod_anag",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codVdes",
+ "columnName": "cod_vdes",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMdep",
+ "columnName": "cod_mdep",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codVlis",
+ "columnName": "cod_vlis",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codDtip",
+ "columnName": "cod_dtip",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codTcol",
+ "columnName": "cod_tcol",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serDoc",
+ "columnName": "ser_doc",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "annotazioni",
+ "columnName": "annotazioni",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "posizione",
+ "columnName": "posizione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codDtipProvv",
+ "columnName": "cod_dtip_provv",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serDocProvv",
+ "columnName": "ser_doc_provv",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codJfas",
+ "columnName": "cod_jfas",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataOrd",
+ "columnName": "data_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataDoc",
+ "columnName": "data_doc",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataDocProvv",
+ "columnName": "data_doc_provv",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMgrp",
+ "columnName": "cod_mgrp",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataVers",
+ "columnName": "data_vers",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "segno",
+ "columnName": "segno",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numOrd",
+ "columnName": "num_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numDoc",
+ "columnName": "num_doc",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numDocProvv",
+ "columnName": "num_doc_provv",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_mtb_colt_data_collo_ser_collo_num_collo_gestione",
+ "unique": true,
+ "columnNames": [
+ "data_collo",
+ "ser_collo",
+ "num_collo",
+ "gestione"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_mtb_colt_data_collo_ser_collo_num_collo_gestione` ON `${TABLE_NAME}` (`data_collo`, `ser_collo`, `num_collo`, `gestione`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "mtb_colr",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id_collo` INTEGER NOT NULL, `data_collo` INTEGER, `gestione` TEXT, `ser_collo` TEXT, `descrizione` TEXT, `num_collo` INTEGER, `riga` INTEGER, `riga_ord` INTEGER, `cod_mart` TEXT, `cod_barre` TEXT, `cod_col` TEXT, `cod_tagl` TEXT, `partita_mag` TEXT, `gestione_rif` TEXT, `ser_collo_rif` TEXT, `note` TEXT, `data_ord` INTEGER, `data_collo_rif` INTEGER, `qta_cnf` REAL, `qta_col` REAL, `num_ord` INTEGER, `num_etich` INTEGER, `num_collo_rif` INTEGER, `datetime_row` INTEGER, `cod_jcom` TEXT, `num_cnf` REAL, `causale` TEXT, `utente` TEXT, `cod_anag_doc` TEXT, `cod_dtip_doc` TEXT, `data_doc` INTEGER, `ser_doc` TEXT, `num_doc` INTEGER, `id_riga_doc` INTEGER, `unt_mis` TEXT, `data_scad` INTEGER, FOREIGN KEY(`id_collo`) REFERENCES `mtb_colt`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "idCollo",
+ "columnName": "id_collo",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "dataCollo",
+ "columnName": "data_collo",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gestione",
+ "columnName": "gestione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serCollo",
+ "columnName": "ser_collo",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrizione",
+ "columnName": "descrizione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numCollo",
+ "columnName": "num_collo",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "riga",
+ "columnName": "riga",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "rigaOrd",
+ "columnName": "riga_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMart",
+ "columnName": "cod_mart",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codBarre",
+ "columnName": "cod_barre",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codCol",
+ "columnName": "cod_col",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codTagl",
+ "columnName": "cod_tagl",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "partitaMag",
+ "columnName": "partita_mag",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "gestioneRif",
+ "columnName": "gestione_rif",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serColloRif",
+ "columnName": "ser_collo_rif",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "note",
+ "columnName": "note",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataOrd",
+ "columnName": "data_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataColloRif",
+ "columnName": "data_collo_rif",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaCnf",
+ "columnName": "qta_cnf",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaCol",
+ "columnName": "qta_col",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numOrd",
+ "columnName": "num_ord",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numEtich",
+ "columnName": "num_etich",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numColloRif",
+ "columnName": "num_collo_rif",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "datetimeRow",
+ "columnName": "datetime_row",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codJcom",
+ "columnName": "cod_jcom",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numCnf",
+ "columnName": "num_cnf",
+ "affinity": "REAL",
+ "notNull": false
+ },
+ {
+ "fieldPath": "causale",
+ "columnName": "causale",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "utente",
+ "columnName": "utente",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codAnagDoc",
+ "columnName": "cod_anag_doc",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codDtipDoc",
+ "columnName": "cod_dtip_doc",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataDoc",
+ "columnName": "data_doc",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "serDoc",
+ "columnName": "ser_doc",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "numDoc",
+ "columnName": "num_doc",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "idRigaDoc",
+ "columnName": "id_riga_doc",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "untMis",
+ "columnName": "unt_mis",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataScad",
+ "columnName": "data_scad",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_mtb_colr_data_collo_ser_collo_num_collo_gestione_riga",
+ "unique": true,
+ "columnNames": [
+ "data_collo",
+ "ser_collo",
+ "num_collo",
+ "gestione",
+ "riga"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_mtb_colr_data_collo_ser_collo_num_collo_gestione_riga` ON `${TABLE_NAME}` (`data_collo`, `ser_collo`, `num_collo`, `gestione`, `riga`)"
+ },
+ {
+ "name": "index_mtb_colr_id_collo",
+ "unique": false,
+ "columnNames": [
+ "id_collo"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_mtb_colr_id_collo` ON `${TABLE_NAME}` (`id_collo`)"
+ }
+ ],
+ "foreignKeys": [
+ {
+ "table": "mtb_colt",
+ "onDelete": "CASCADE",
+ "onUpdate": "NO ACTION",
+ "columns": [
+ "id_collo"
+ ],
+ "referencedColumns": [
+ "id"
+ ]
+ }
+ ]
+ },
+ {
+ "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, `zona` TEXT, `new` INTEGER, `remote_sync_date` INTEGER)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "idInventario",
+ "columnName": "id_inventario",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMdep",
+ "columnName": "cod_mdep",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "dataInventario",
+ "columnName": "data_inventario",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataReg",
+ "columnName": "data_reg",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataVer",
+ "columnName": "data_ver",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "filtro",
+ "columnName": "filtro",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "flagStato",
+ "columnName": "flag_stato",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "flagOperazione",
+ "columnName": "flag_operazione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codAnag",
+ "columnName": "cod_anag",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codDtip",
+ "columnName": "cod_dtip",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "inseritoDa",
+ "columnName": "inserito_da",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "registratoDa",
+ "columnName": "registrato_da",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "verificatoDa",
+ "columnName": "verificato_da",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataOraInizio",
+ "columnName": "data_ora_inizio",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "dataOraFine",
+ "columnName": "data_ora_fine",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "causale",
+ "columnName": "causale",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "zona",
+ "columnName": "zona",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "isNew",
+ "columnName": "new",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "remoteSyncDate",
+ "columnName": "remote_sync_date",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_inventari__id",
+ "unique": false,
+ "columnNames": [
+ "_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_inventari__id` ON `${TABLE_NAME}` (`_id`)"
+ },
+ {
+ "name": "index_inventari_id_inventario",
+ "unique": false,
+ "columnNames": [
+ "id_inventario"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_inventari_id_inventario` ON `${TABLE_NAME}` (`id_inventario`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "inventario_rows",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`parent_id` INTEGER, `cod_mart` TEXT, `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, `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `remote_sync_date` INTEGER, FOREIGN KEY(`parent_id`) REFERENCES `inventari`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
+ "fields": [
+ {
+ "fieldPath": "parentId",
+ "columnName": "parent_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "codMart",
+ "columnName": "cod_mart",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "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": "id",
+ "columnName": "_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "remoteSyncDate",
+ "columnName": "remote_sync_date",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "_id"
+ ]
+ },
+ "indices": [
+ {
+ "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`)"
+ },
+ {
+ "name": "index_inventario_rows__id",
+ "unique": false,
+ "columnNames": [
+ "_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_inventario_rows__id` ON `${TABLE_NAME}` (`_id`)"
+ }
+ ],
+ "foreignKeys": [
+ {
+ "table": "inventari",
+ "onDelete": "CASCADE",
+ "onUpdate": "NO ACTION",
+ "columns": [
+ "parent_id"
+ ],
+ "referencedColumns": [
+ "_id"
+ ]
+ }
+ ]
+ },
+ {
+ "tableName": "verifica_giacenze",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`cod_mdep` TEXT NOT NULL, `data` INTEGER, `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `remote_sync_date` INTEGER)",
+ "fields": [
+ {
+ "fieldPath": "codMdep",
+ "columnName": "cod_mdep",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "data",
+ "columnName": "data",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "remoteSyncDate",
+ "columnName": "remote_sync_date",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_verifica_giacenze__id",
+ "unique": false,
+ "columnNames": [
+ "_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_verifica_giacenze__id` ON `${TABLE_NAME}` (`_id`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "verifica_giacenze_rows",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`parent_id` INTEGER, `created_at` INTEGER DEFAULT CURRENT_TIMESTAMP, `cod_mart` TEXT, `partita_mag` TEXT, `descrizione` TEXT, `qta_in_giacenza` REAL NOT NULL DEFAULT 0, `qta` REAL NOT NULL DEFAULT 0, `num_cnf` REAL NOT NULL DEFAULT 0, `qta_cnf` REAL NOT NULL DEFAULT 0, `scan_cod_barre` TEXT, `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `remote_sync_date` INTEGER, FOREIGN KEY(`parent_id`) REFERENCES `verifica_giacenze`(`_id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
+ "fields": [
+ {
+ "fieldPath": "parentId",
+ "columnName": "parent_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "createdAt",
+ "columnName": "created_at",
+ "affinity": "INTEGER",
+ "notNull": false,
+ "defaultValue": "CURRENT_TIMESTAMP"
+ },
+ {
+ "fieldPath": "codMart",
+ "columnName": "cod_mart",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "partitaMag",
+ "columnName": "partita_mag",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "descrizione",
+ "columnName": "descrizione",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "qtaInGiacenza",
+ "columnName": "qta_in_giacenza",
+ "affinity": "REAL",
+ "notNull": true,
+ "defaultValue": "0"
+ },
+ {
+ "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": "scanCodBarre",
+ "columnName": "scan_cod_barre",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "_id",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "remoteSyncDate",
+ "columnName": "remote_sync_date",
+ "affinity": "INTEGER",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "autoGenerate": true,
+ "columnNames": [
+ "_id"
+ ]
+ },
+ "indices": [
+ {
+ "name": "index_verifica_giacenze_rows_parent_id",
+ "unique": false,
+ "columnNames": [
+ "parent_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_verifica_giacenze_rows_parent_id` ON `${TABLE_NAME}` (`parent_id`)"
+ },
+ {
+ "name": "index_verifica_giacenze_rows__id",
+ "unique": false,
+ "columnNames": [
+ "_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE INDEX IF NOT EXISTS `index_verifica_giacenze_rows__id` ON `${TABLE_NAME}` (`_id`)"
+ }
+ ],
+ "foreignKeys": [
+ {
+ "table": "verifica_giacenze",
+ "onDelete": "CASCADE",
+ "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, '720c67adcc3f947a0c0ce04d4d04fbe9')"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
index 758f5e87..7e32be22 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
@@ -89,6 +89,8 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArt
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
+import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeComponent;
+import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeModule;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.settings.MainSettingsComponent;
@@ -114,6 +116,8 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.ask_commessa.DialogAskCommessaComponent;
+import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoComponent;
+import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoModule;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneComponent;
@@ -136,6 +140,8 @@ import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBat
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtComponent;
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtModule;
+import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoComponent;
+import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUComponent;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUModule;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
@@ -239,7 +245,10 @@ import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAva
DialogSwitchUserDepoModule.class,
DialogUpdateAvailableModule.class,
DialogAskPositionOfLUModule.class,
- DialogAskLivelloPosizioneModule.class
+ DialogAskLivelloPosizioneModule.class,
+ VerificaGiacenzeModule.class,
+ DialogExtraInfoModule.class,
+ DialogAskDepositoModule.class
})
public interface MainApplicationComponent {
@@ -402,6 +411,11 @@ public interface MainApplicationComponent {
DialogAskLivelloPosizioneComponent.Factory dialogAskLivelloPosizioneComponent();
+ VerificaGiacenzeComponent.Factory verificaGiacenzeComponent();
+
+ DialogExtraInfoComponent.Factory dialogExtraInfoComponent();
+
+ DialogAskDepositoComponent.Factory dialogAskDepositoComponent();
void inject(MainApplication mainApplication);
diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
index 8d774307..83e05b10 100644
--- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
@@ -33,6 +33,7 @@ import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
@@ -162,8 +163,8 @@ public class MainApplicationModule {
@Provides
@Singleton
- ArticoloRESTConsumer provideArticoloRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
- return new ArticoloRESTConsumer(restBuilder, systemRESTConsumer);
+ ArticoloRESTConsumer provideArticoloRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
+ return new ArticoloRESTConsumer(restBuilder, executorService, systemRESTConsumer);
}
@Provides
@@ -238,8 +239,8 @@ public class MainApplicationModule {
@Provides
@Singleton
- SystemRESTConsumer provideSystemRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
- return new SystemRESTConsumer(executorService, restBuilder);
+ SystemRESTConsumer provideSystemRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
+ return new SystemRESTConsumer(restBuilder, executorService);
}
@Provides
@@ -268,8 +269,14 @@ public class MainApplicationModule {
@Provides
@Singleton
- GiacenzaRESTConsumer provideGiacenzaRESTConsumer(RESTBuilder restBuilder, ArticoloRESTConsumer articoloRESTConsumer) {
- return new GiacenzaRESTConsumer(restBuilder, articoloRESTConsumer);
+ GiacenzaRESTConsumer provideGiacenzaRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, ArticoloRESTConsumer articoloRESTConsumer) {
+ return new GiacenzaRESTConsumer(restBuilder, executorService, articoloRESTConsumer);
+ }
+
+ @Provides
+ @Singleton
+ GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
+ return new GiacenzaPvRESTConsumer(restBuilder, executorService);
}
@Provides
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
index f5319e45..51baf9e8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/class_router/configs/MenuConfiguration.java
@@ -19,6 +19,7 @@ import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposi
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
+import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloView;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteFragment;
@@ -242,6 +243,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance))
+
.addItem(new MenuItem()
.setCodMenu("MG058")
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
@@ -250,6 +252,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setDrawerIcon(R.drawable.ic_documents_outline)
.setFragmentFactory(DocInterniFragment::newInstance))
+ .addItem(new MenuItem()
+ .setCodMenu("MG075")
+ .setID(it.integry.integrywmsnative.R.id.nav_pv_verifica_giacenze)
+ .setTitleText(R.string.verifica_giacenze_menu)
+ .setTitleIcon(R.drawable.ic_dashboard_verifica_giacenze)
+ .setDrawerIcon(R.drawable.ic_drawer_verifica_giacenze)
+ .setFragmentFactory(VerificaGiacenzeFragment::newInstance))
+
// .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders)
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
index 36812bd0..42d3fe1b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java
@@ -49,14 +49,14 @@ public class MainContext {
//this.initAuthSession(() -> {
- this.initDeviceId(() -> {
+// this.initDeviceId(() -> {
this.initDBData(() -> {
this.initMenu(() -> {
if (mListener != null) mListener.onContextInitialized();
});
});
- });
+// });
//});
@@ -96,9 +96,9 @@ public class MainContext {
SettingsManager.i().getUserSession().setDeviceId(fid.getResult());
SettingsManager.update();
- systemRESTConsumer.registerDevice(onComplete, ex -> {
- if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
- });
+// systemRESTConsumer.registerDevice(onComplete, ex -> {
+// if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
+// });
});
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java
index 9d829bee..f95d568b 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java
@@ -22,14 +22,18 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
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.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
@Database(entities = {
ArticoloGriglia.class,
@@ -38,10 +42,12 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
ArticoloOrdine.class,
SqlMtbColt.class,
SqlMtbColr.class,
- InventarioRoomDTO.class,
- InventarioRowRoomDTO.class
+ InventarioEntity.class,
+ InventarioRowRoomDTO.class,
+ VerificaGiacenzeEntity.class,
+ VerificaGiacenzeRowEntity.class
},
- version = 17)
+ version = 18)
@TypeConverters({
DateConverter.class,
BigDecimalConverter.class,
@@ -70,7 +76,8 @@ public abstract class AppDatabase extends RoomDatabase {
.addMigrations(MIGRATION_13_14)
.addMigrations(MIGRATION_14_15)
.addMigrations(MIGRATION_15_16)
- .addMigrations(MIGRATION_16_17);
+ .addMigrations(MIGRATION_16_17)
+ .addMigrations(MIGRATION_17_18);
sInstance = builder.build();
}
@@ -95,6 +102,10 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract InventarioRowDao inventarioRowDao();
+ public abstract VerificaGiacenzeDao verificaGiacenzeDao();
+
+ public abstract VerificaGiacenzeRowDao verificaGiacenzeRowDao();
+
static final Migration MIGRATION_10_11 = new Migration(10, 11) {
@@ -182,4 +193,28 @@ public abstract class AppDatabase extends RoomDatabase {
database.execSQL("DROP TABLE _inventario_rows_old;");
}
};
+ static final Migration MIGRATION_17_18 = new Migration(17, 18) {
+ @Override
+ public void migrate(@NonNull SupportSQLiteDatabase database) {
+ database.execSQL("CREATE TABLE IF NOT EXISTS verifica_giacenze (_id INTEGER PRIMARY KEY AUTOINCREMENT, cod_mdep TEXT NOT NULL, data INTEGER, remote_sync_date INTEGER);");
+ database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze__id ON verifica_giacenze (_id);");
+
+ database.execSQL("CREATE TABLE IF NOT EXISTS verifica_giacenze_rows (" +
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
+ "parent_id INTEGER, " +
+ "created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
+ "cod_mart TEXT, " +
+ "partita_mag TEXT, " +
+ "descrizione TEXT, " +
+ "qta_in_giacenza REAL NOT NULL DEFAULT 0, " +
+ "qta REAL NOT NULL DEFAULT 0, " +
+ "num_cnf REAL NOT NULL DEFAULT 0, " +
+ "qta_cnf REAL NOT NULL DEFAULT 0, " +
+ "scan_cod_barre TEXT, " +
+ "remote_sync_date INTEGER, " +
+ "FOREIGN KEY(parent_id) REFERENCES verifica_giacenze(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
+ database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze_rows__id ON verifica_giacenze_rows (_id)");
+ database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze_rows_parent_id ON verifica_giacenze_rows (parent_id)");
+ }
+ };
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java
index 2c1e84dd..d1237f81 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/RoomModule.java
@@ -18,6 +18,8 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
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;
@@ -32,10 +34,17 @@ import it.integry.integrywmsnative.core.data_store.db.repository.datasource.SqlM
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.SqlMtbColtDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioRowLocalDataSource;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeLocalDataSource;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeRowLocalDataSource;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.mapper.InventarioRowMapper;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
@Module
@@ -108,6 +117,11 @@ public class RoomModule {
return appDatabase.inventarioRowDao();
}
+ @Singleton
+ @Provides
+ InventarioMapper providesInventarioMapper(InventarioRowMapper inventarioRowMapper) {
+ return new InventarioMapper(inventarioRowMapper);
+ }
@Singleton
@Provides
@@ -117,8 +131,26 @@ public class RoomModule {
@Singleton
@Provides
- InventarioMapper providesInventarioMapper(InventarioRowMapper inventarioRowMapper) {
- return new InventarioMapper(inventarioRowMapper);
+ VerificaGiacenzeDao providesVerificaGiacenzeDao(AppDatabase appDatabase) {
+ return appDatabase.verificaGiacenzeDao();
+ }
+
+ @Singleton
+ @Provides
+ VerificaGiacenzeRowDao providesVerificaGiacenzeRowDao(AppDatabase appDatabase) {
+ return appDatabase.verificaGiacenzeRowDao();
+ }
+
+ @Singleton
+ @Provides
+ VerificaGiacenzeMapper providesVerificaGiacenzeMapper(VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
+ return new VerificaGiacenzeMapper(verificaGiacenzeRowMapper);
+ }
+
+ @Singleton
+ @Provides
+ VerificaGiacenzeRowMapper providesVerificaGiacenzeRowMapper() {
+ return new VerificaGiacenzeRowMapper();
}
@@ -182,4 +214,20 @@ public class RoomModule {
return new InventarioRowRepository(inventarioRowLocalDataSource, inventarioRESTConsumer, inventarioRowMapper, handler);
}
+ @Provides
+ VerificaGiacenzeRepository providesVerificaGiacenzeRepository(ExecutorService executorService, Handler handler,
+ VerificaGiacenzeLocalDataSource verificaGiacenzeLocalDataSource,
+ GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
+ VerificaGiacenzeMapper verificaGiacenzeMapper) {
+ return new VerificaGiacenzeRepository(verificaGiacenzeLocalDataSource, giacenzaPvRESTConsumer, verificaGiacenzeMapper, handler, executorService);
+ }
+
+ @Provides
+ VerificaGiacenzeRowRepository providesVerificaGiacenzeRowRepository(ExecutorService executorService, Handler handler,
+ VerificaGiacenzeRowLocalDataSource verificaGiacenzeRowLocalDataSource,
+ GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
+ VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
+ return new VerificaGiacenzeRowRepository(verificaGiacenzeRowLocalDataSource, giacenzaPvRESTConsumer, verificaGiacenzeRowMapper, handler, executorService);
+ }
+
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/InventarioDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/InventarioDao.java
index 79d345d3..a58227db 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/InventarioDao.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/InventarioDao.java
@@ -7,21 +7,21 @@ import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
-public interface InventarioDao extends EntityDaoInterface {
+public interface InventarioDao extends EntityDaoInterface {
- @Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
+ @Query("SELECT * FROM " + InventarioEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
- List selectAll(boolean toBeSync);
+ List selectAll(boolean toBeSync);
- @Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
+ @Query("SELECT * FROM " + InventarioEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
- " ORDER BY " + InventarioRoomDTO.Columns.DATA_INVENTARIO + " DESC")
- Flowable> selectAllFlowable(boolean toBeSync);
+ " ORDER BY " + InventarioEntity.Columns.DATA_INVENTARIO + " DESC")
+ Flowable> selectAllFlowable(boolean toBeSync);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeDao.java
new file mode 100644
index 00000000..dae67d43
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeDao.java
@@ -0,0 +1,42 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Query;
+import androidx.room.Transaction;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Flowable;
+import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.VerificaGiacenzeWithRowsWrapper;
+
+@Dao
+public interface VerificaGiacenzeDao extends EntityDaoInterface {
+
+
+ @Transaction
+ @Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
+ " WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
+ List selectAll(boolean toBeSync);
+
+ @Transaction
+ @Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
+ " WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
+ " ORDER BY " + VerificaGiacenzeEntity.Columns.DATA + " DESC")
+ Flowable> selectAllFlowable(boolean toBeSync);
+
+ @Transaction
+ @Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
+ " WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
+ " ORDER BY " + VerificaGiacenzeEntity.Columns.DATA + " DESC" +
+ " LIMIT 1")
+ VerificaGiacenzeWithRowsWrapper selectLast(boolean toBeSync);
+
+ @Query("SELECT COALESCE(strftime('%s', 'now') - MAX(" + VerificaGiacenzeRowEntity.Columns.CREATED_AT + ") < :maxMinutes * 60, 0) as any_verifica_to_be_recovered" +
+ " FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
+ " WHERE (" + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL)")
+ boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeRowDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeRowDao.java
new file mode 100644
index 00000000..dbef866a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/VerificaGiacenzeRowDao.java
@@ -0,0 +1,25 @@
+package it.integry.integrywmsnative.core.data_store.db.dao;
+
+import androidx.room.Dao;
+import androidx.room.Query;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Flowable;
+import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
+
+@Dao
+public interface VerificaGiacenzeRowDao extends EntityDaoInterface {
+
+
+ @Query("SELECT * FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
+ " WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
+ List selectAll(boolean toBeSync);
+
+ @Query("SELECT * FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
+ " WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
+ Flowable> selectAllFlowable(boolean toBeSync);
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRoomDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioEntity.java
similarity index 97%
rename from app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRoomDTO.java
rename to app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioEntity.java
index 74011456..f64e1ea1 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRoomDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioEntity.java
@@ -12,8 +12,8 @@ import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
-@Entity(tableName = InventarioRoomDTO.TABLE_NAME)
-public class InventarioRoomDTO extends BaseSyncDTO implements EntityModelInterface {
+@Entity(tableName = InventarioEntity.TABLE_NAME)
+public class InventarioEntity extends BaseSyncDTO implements EntityModelInterface {
public static final String TABLE_NAME = "inventari";
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRowRoomDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRowRoomDTO.java
index 5b21ce9b..6509c8b3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRowRoomDTO.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/InventarioRowRoomDTO.java
@@ -4,7 +4,6 @@ import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
-import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -12,10 +11,11 @@ import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(
+ inheritSuperIndices = true,
tableName = InventarioRowRoomDTO.TABLE_NAME,
foreignKeys = {
@ForeignKey(
- entity = InventarioRoomDTO.class,
+ entity = InventarioEntity.class,
parentColumns = {BaseSyncDTO.Columns.ID},
childColumns = {InventarioRowRoomDTO.Columns.PARENT_ID},
onDelete = ForeignKey.CASCADE
@@ -40,13 +40,6 @@ public class InventarioRowRoomDTO extends BaseSyncDTO implements EntityModelInte
public static final String ZONA = "zona";
}
- /**
- * The unique ID
- */
- @PrimaryKey(autoGenerate = true)
- @ColumnInfo(index = true, name = BaseSyncDTO.Columns.ID)
- private Long id;
-
@ColumnInfo(index = true, name = Columns.PARENT_ID)
private Long parentId;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeEntity.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeEntity.java
new file mode 100644
index 00000000..adc50821
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeEntity.java
@@ -0,0 +1,78 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+import androidx.annotation.NonNull;
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.Ignore;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Objects;
+
+import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
+
+@Entity(
+ inheritSuperIndices = true,
+ tableName = VerificaGiacenzeEntity.TABLE_NAME
+)
+public class VerificaGiacenzeEntity extends BaseSyncDTO implements EntityModelInterface {
+
+ public static final String TABLE_NAME = "verifica_giacenze";
+
+ public static class Columns {
+ public static final String COD_MDEP = "cod_mdep";
+ public static final String DATA = "data";
+ }
+
+ @NonNull
+ @ColumnInfo(name = VerificaGiacenzeEntity.Columns.COD_MDEP)
+ private String codMdep;
+
+ @ColumnInfo(name = VerificaGiacenzeEntity.Columns.DATA)
+ private LocalDateTime data;
+
+ @Ignore
+ private List verificaGiacenzeRowList;
+
+ @NonNull
+ public String getCodMdep() {
+ return codMdep;
+ }
+
+ public void setCodMdep(@NonNull String codMdep) {
+ this.codMdep = codMdep;
+ }
+
+ public LocalDateTime getData() {
+ return data;
+ }
+
+ public void setData(LocalDateTime data) {
+ this.data = data;
+ }
+
+ public List getVerificaGiacenzeRowList() {
+ return verificaGiacenzeRowList;
+ }
+
+ public void setVerificaGiacenzeRowList(List verificaGiacenzeRowList) {
+ this.verificaGiacenzeRowList = verificaGiacenzeRowList;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+
+ VerificaGiacenzeEntity that = (VerificaGiacenzeEntity) o;
+ return getId().equals(that.getId()) && getCodMdep().equals(that.getCodMdep()) && Objects.equals(getData(), that.getData()) && Objects.equals(getVerificaGiacenzeRowList(), that.getVerificaGiacenzeRowList());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getId().hashCode();
+ result = 31 * result + getCodMdep().hashCode();
+ result = 31 * result + Objects.hashCode(getData());
+ result = 31 * result + Objects.hashCode(getVerificaGiacenzeRowList());
+ return result;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java
new file mode 100644
index 00000000..4267420b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/VerificaGiacenzeRowEntity.java
@@ -0,0 +1,211 @@
+package it.integry.integrywmsnative.core.data_store.db.entity;
+
+
+import androidx.annotation.NonNull;
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.ForeignKey;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Objects;
+
+import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
+
+@Entity(
+ inheritSuperIndices = true,
+ tableName = VerificaGiacenzeRowEntity.TABLE_NAME,
+ foreignKeys = {
+ @ForeignKey(
+ entity = VerificaGiacenzeEntity.class,
+ parentColumns = {BaseSyncDTO.Columns.ID},
+ childColumns = {VerificaGiacenzeRowEntity.Columns.PARENT_ID},
+ onDelete = ForeignKey.CASCADE
+ )
+ }
+)
+public class VerificaGiacenzeRowEntity extends BaseSyncDTO implements EntityModelInterface, Cloneable {
+ public static final String TABLE_NAME = "verifica_giacenze_rows";
+
+ public static class Columns {
+ public static final String PARENT_ID = "parent_id";
+ public static final String CREATED_AT = "created_at";
+ public static final String COD_MART = "cod_mart";
+ public static final String PARTITA_MAG = "partita_mag";
+ public static final String DESCRIZIONE = "descrizione";
+ public static final String QTA_IN_GIACENZA = "qta_in_giacenza";
+ public static final String QTA = "qta";
+ public static final String NUM_CNF = "num_cnf";
+ public static final String QTA_CNF = "qta_cnf";
+ public static final String SCAN_COD_BARRE = "scan_cod_barre";
+ }
+
+ @ColumnInfo(index = true, name = Columns.PARENT_ID)
+ private Long parentId;
+
+ @ColumnInfo(name = Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
+ private LocalDateTime createdAt = LocalDateTime.now();
+
+ @ColumnInfo(name = Columns.COD_MART)
+ private String codMart;
+
+ @ColumnInfo(name = Columns.PARTITA_MAG)
+ private String partitaMag;
+
+ @ColumnInfo(name = Columns.DESCRIZIONE)
+ private String descrizione;
+
+ @NonNull
+ @ColumnInfo(name = Columns.QTA_IN_GIACENZA, defaultValue = "0")
+ private BigDecimal qtaInGiacenza;
+
+ @NonNull
+ @ColumnInfo(name = Columns.QTA, defaultValue = "0")
+ private BigDecimal qta;
+
+ @NonNull
+ @ColumnInfo(name = Columns.NUM_CNF, defaultValue = "0")
+ private BigDecimal numConf;
+
+ @NonNull
+ @ColumnInfo(name = Columns.QTA_CNF, defaultValue = "0")
+ private BigDecimal qtaConf;
+
+ @ColumnInfo(name = Columns.SCAN_COD_BARRE)
+ private String scanCodBarre;
+
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Long parentId) {
+ this.parentId = parentId;
+ }
+
+ public LocalDateTime getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(LocalDateTime createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public void setCodMart(String codMart) {
+ this.codMart = codMart;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public void setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public void setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ }
+
+ @NonNull
+ public BigDecimal getQtaInGiacenza() {
+ return qtaInGiacenza;
+ }
+
+ public void setQtaInGiacenza(@NonNull BigDecimal qtaInGiacenza) {
+ this.qtaInGiacenza = qtaInGiacenza;
+ }
+
+ @NonNull
+ public BigDecimal getQta() {
+ return qta;
+ }
+
+ public void setQta(@NonNull BigDecimal qta) {
+ this.qta = qta;
+ }
+
+ @NonNull
+ public BigDecimal getNumConf() {
+ return numConf;
+ }
+
+ public void setNumConf(@NonNull BigDecimal numConf) {
+ this.numConf = numConf;
+ }
+
+ @NonNull
+ public BigDecimal getQtaConf() {
+ return qtaConf;
+ }
+
+ public void setQtaConf(@NonNull BigDecimal qtaConf) {
+ this.qtaConf = qtaConf;
+ }
+
+ public String getScanCodBarre() {
+ return scanCodBarre;
+ }
+
+ public void setScanCodBarre(String scanCodBarre) {
+ this.scanCodBarre = scanCodBarre;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+
+ VerificaGiacenzeRowEntity that = (VerificaGiacenzeRowEntity) o;
+ return getId().equals(that.getId()) && getParentId().equals(that.getParentId()) && getCodMart().equals(that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && getQta().equals(that.getQta()) && getNumConf().equals(that.getNumConf()) && getQtaConf().equals(that.getQtaConf()) && Objects.equals(getScanCodBarre(), that.getScanCodBarre());
+ }
+
+ @Override
+ public int hashCode() {
+ int result = getId().hashCode();
+ result = 31 * result + getParentId().hashCode();
+ result = 31 * result + getCodMart().hashCode();
+ result = 31 * result + Objects.hashCode(getPartitaMag());
+ result = 31 * result + getQta().hashCode();
+ result = 31 * result + getNumConf().hashCode();
+ result = 31 * result + getQtaConf().hashCode();
+ result = 31 * result + Objects.hashCode(getScanCodBarre());
+ return result;
+ }
+
+
+
+ @NonNull
+ @Override
+ public VerificaGiacenzeRowEntity clone() throws CloneNotSupportedException {
+ try {
+ VerificaGiacenzeRowEntity clone = (VerificaGiacenzeRowEntity) super.clone();
+
+ // Clona ID
+ clone.setId(getId() != null ? new Long(getId()) : null);
+ clone.setParentId(getParentId() != null ? new Long(getParentId()) : null);
+
+ // Clona le stringhe
+ clone.setCodMart(getCodMart() != null ? new String(getCodMart()) : null);
+ clone.setPartitaMag(getPartitaMag() != null ? new String(getPartitaMag()) : null);
+ clone.setDescrizione(getDescrizione() != null ? new String(getDescrizione()) : null);
+ clone.setScanCodBarre(getScanCodBarre() != null ? new String(getScanCodBarre()) : null);
+
+ // Clona i BigDecimal
+ clone.setQta(getQta() != null ? new BigDecimal(getQta().toString()) : null);
+ clone.setNumConf(getNumConf() != null ? new BigDecimal(getNumConf().toString()) : null);
+ clone.setQtaConf(getQtaConf() != null ? new BigDecimal(getQtaConf().toString()) : null);
+
+ return clone;
+ } catch (CloneNotSupportedException e) {
+ throw new AssertionError(); // Can't happen
+ }
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/InventarioRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/InventarioRepository.java
index cc005c21..7038f5c6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/InventarioRepository.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/InventarioRepository.java
@@ -15,7 +15,7 @@ import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import io.reactivex.rxjava3.schedulers.Schedulers;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
@@ -24,13 +24,13 @@ import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
-public class InventarioRepository extends _BaseRepository {
+public class InventarioRepository extends _BaseRepository {
private final ExecutorService executorService;
private final Handler handler;
- private final MutableLiveData> internalLiveData = new MutableLiveData<>();
+ private final MutableLiveData> internalLiveData = new MutableLiveData<>();
@Inject
public InventarioRepository(InventarioLocalDataSource localDataSource,
@@ -44,7 +44,7 @@ public class InventarioRepository extends _BaseRepository> retrieve(Runnable onComplete, RunnableArgs onError) {
+ public LiveData> retrieve(Runnable onComplete, RunnableArgs onError) {
localDataSource.makeSynchronousRetrieveAllLive(false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
@@ -84,13 +84,13 @@ public class InventarioRepository extends _BaseRepository onError) {
+ public void insert(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs onError) {
localDataSource.makeInsertRequest(inventarioDTO, localResult -> {
if (onComplete != null) handler.post(onComplete);
}, onError);
}
- public void export(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs onError) {
+ public void export(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs onError) {
remoteDataSource.makeInsertRequest(dataMapper.mapRoomToRest(inventarioDTO), () -> {
inventarioDTO.setRemoteSyncDate(new Date());
@@ -100,7 +100,7 @@ public class InventarioRepository extends _BaseRepository onError) {
+ public void delete(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs onError) {
localDataSource.makeDeleteRequest(inventarioDTO, onComplete, onError);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRepository.java
new file mode 100644
index 00000000..8a876d09
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRepository.java
@@ -0,0 +1,59 @@
+package it.integry.integrywmsnative.core.data_store.db.respository_new;
+
+import android.os.Handler;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeLocalDataSource;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeDTO;
+
+public class VerificaGiacenzeRepository extends _BaseRepository {
+
+ private final ExecutorService executorService;
+ private final Handler handler;
+
+
+ public VerificaGiacenzeRepository(VerificaGiacenzeLocalDataSource localDataSource,
+ GiacenzaPvRESTConsumer remoteDataSource,
+ VerificaGiacenzeMapper dataMapper,
+ Handler handler,
+ ExecutorService executorService) {
+ super(dataMapper, localDataSource, remoteDataSource);
+ this.handler = handler;
+ this.executorService = executorService;
+ }
+
+
+ public List retrieve() {
+ return localDataSource.makeSynchronousRetrieveAllRequest(false);
+ }
+
+ public VerificaGiacenzeEntity retrieveLast() {
+ return localDataSource.makeSynchronousRetrieveLastRequest(false);
+ }
+
+
+ public boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes) {
+ return localDataSource.isAnotherVerificaGiacenzeInProgress(maxMinutes);
+ }
+
+ public void clearPreviousSessions() {
+ var entities = retrieve();
+ for (var entity : entities) {
+ localDataSource.makeSynchronousDeleteRequest(entity);
+ }
+ }
+
+
+ public void insert(VerificaGiacenzeEntity entity) {
+ localDataSource.makeSynchronousInsertRequest(entity);
+ }
+
+ public void delete(VerificaGiacenzeEntity entity) {
+ localDataSource.makeSynchronousDeleteRequest(entity);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRowRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRowRepository.java
new file mode 100644
index 00000000..bddbcfd2
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/VerificaGiacenzeRowRepository.java
@@ -0,0 +1,55 @@
+package it.integry.integrywmsnative.core.data_store.db.respository_new;
+
+import android.os.Handler;
+
+import java.util.concurrent.ExecutorService;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeRowLocalDataSource;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeRowDTO;
+
+public class VerificaGiacenzeRowRepository extends _BaseRepository {
+
+ private final ExecutorService executorService;
+ private final Handler handler;
+
+
+ public VerificaGiacenzeRowRepository(VerificaGiacenzeRowLocalDataSource localDataSource,
+ GiacenzaPvRESTConsumer remoteDataSource,
+ VerificaGiacenzeRowMapper dataMapper,
+ Handler handler,
+ ExecutorService executorService) {
+ super(dataMapper, localDataSource, remoteDataSource);
+ this.handler = handler;
+ this.executorService = executorService;
+ }
+
+
+
+ public void insertSynchronized(VerificaGiacenzeRowEntity entity) {
+ localDataSource.makeSynchronousInsertRequest(entity);
+ }
+
+ public void insert(VerificaGiacenzeRowEntity entity, RunnableArgs onComplete, RunnableArgs onFailed) {
+ localDataSource.makeInsertRequest(entity, onComplete, onFailed);
+ }
+
+ public void updateSynchronized(VerificaGiacenzeRowEntity entity) {
+ localDataSource.makeSynchronousUpdateRequest(entity);
+ }
+
+ public void update(VerificaGiacenzeRowEntity entity, RunnableArgs onComplete, RunnableArgs onFailed) {
+ localDataSource.makeUpdateRequest(entity, onComplete, onFailed);
+ }
+
+ public void deleteSynchronized(VerificaGiacenzeRowEntity entity) {
+ localDataSource.makeSynchronousDeleteRequest(entity);
+ }
+
+ public void delete(VerificaGiacenzeRowEntity entity, Runnable onComplete, RunnableArgs onFailed) {
+ localDataSource.makeDeleteRequest(entity, onComplete, onFailed);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/InventarioLocalDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/InventarioLocalDataSource.java
index 4b9581e9..13f628e7 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/InventarioLocalDataSource.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/InventarioLocalDataSource.java
@@ -8,24 +8,24 @@ import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioDao;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
@Singleton
-public class InventarioLocalDataSource extends _BaseRoomDataSource {
+public class InventarioLocalDataSource extends _BaseRoomDataSource {
@Inject
public InventarioLocalDataSource(ExecutorService executorService, InventarioDao entityDao) {
- super(executorService, entityDao, InventarioRoomDTO.TABLE_NAME);
+ super(executorService, entityDao, InventarioEntity.TABLE_NAME);
}
@Override
- public List makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
+ public List makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
return entityDao
.selectAll(onlyToBeSync);
}
@Override
- public Flowable> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
+ public Flowable> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(onlyToBeSync);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeLocalDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeLocalDataSource.java
new file mode 100644
index 00000000..19685c5e
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeLocalDataSource.java
@@ -0,0 +1,63 @@
+package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import io.reactivex.rxjava3.core.Flowable;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.wrappers.VerificaGiacenzeWithRowsWrapper;
+
+@Singleton
+public class VerificaGiacenzeLocalDataSource extends _BaseRoomDataSource {
+
+ @Inject
+ public VerificaGiacenzeLocalDataSource(ExecutorService executorService, VerificaGiacenzeDao entityDao) {
+ super(executorService, entityDao, VerificaGiacenzeEntity.TABLE_NAME);
+ }
+
+ @Override
+ public List makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
+ var data = entityDao
+ .selectAll(onlyToBeSync);
+
+ return data.stream()
+ .map(x -> {
+ x.verificaGiacenze.setVerificaGiacenzeRowList(x.verificaGiacenzeRowList);
+ return x.verificaGiacenze;
+ })
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public Flowable> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
+ Flowable> listFlowable = entityDao
+ .selectAllFlowable(onlyToBeSync);
+
+ return listFlowable.map(x ->
+ x.stream()
+ .map(y -> {
+ y.verificaGiacenze.setVerificaGiacenzeRowList(y.verificaGiacenzeRowList);
+ return y.verificaGiacenze;
+ })
+ .collect(Collectors.toList())
+ );
+ }
+
+ public VerificaGiacenzeEntity makeSynchronousRetrieveLastRequest(boolean onlyToBeSync) {
+ var lastEntity = entityDao
+ .selectLast(onlyToBeSync);
+
+ lastEntity.verificaGiacenze.setVerificaGiacenzeRowList(lastEntity.verificaGiacenzeRowList);
+
+ return lastEntity.verificaGiacenze;
+ }
+
+ public boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes) {
+ return entityDao.isAnotherVerificaGiacenzeInProgress(maxMinutes);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeRowLocalDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeRowLocalDataSource.java
new file mode 100644
index 00000000..23fd305d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/respository_new/data_source/VerificaGiacenzeRowLocalDataSource.java
@@ -0,0 +1,34 @@
+package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import io.reactivex.rxjava3.core.Flowable;
+import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+
+@Singleton
+public class VerificaGiacenzeRowLocalDataSource extends _BaseRoomDataSource {
+
+ @Inject
+ public VerificaGiacenzeRowLocalDataSource(ExecutorService executorService, VerificaGiacenzeRowDao entityDao) {
+ super(executorService, entityDao, VerificaGiacenzeRowEntity.TABLE_NAME);
+ }
+
+ @Override
+ public List makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
+ var data = entityDao
+ .selectAll(onlyToBeSync);
+ return data;
+ }
+
+ @Override
+ public Flowable> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
+ return entityDao
+ .selectAllFlowable(onlyToBeSync);
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/VerificaGiacenzeWithRowsWrapper.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/VerificaGiacenzeWithRowsWrapper.java
new file mode 100644
index 00000000..1bedba78
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/wrappers/VerificaGiacenzeWithRowsWrapper.java
@@ -0,0 +1,24 @@
+package it.integry.integrywmsnative.core.data_store.db.wrappers;
+
+import androidx.room.DatabaseView;
+import androidx.room.Embedded;
+import androidx.room.Relation;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+
+@DatabaseView
+public class VerificaGiacenzeWithRowsWrapper {
+
+ @Embedded
+ public VerificaGiacenzeEntity verificaGiacenze;
+
+ @Relation(
+ parentColumn = BaseSyncDTO.Columns.ID,
+ entityColumn = VerificaGiacenzeRowEntity.Columns.PARENT_ID
+ )
+ public List verificaGiacenzeRowList;
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepBarcodeException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepBarcodeException.java
new file mode 100644
index 00000000..8ea4be96
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepBarcodeException.java
@@ -0,0 +1,8 @@
+package it.integry.integrywmsnative.core.exception;
+
+public class InvalidCodMdepBarcodeException extends RuntimeException {
+
+ public InvalidCodMdepBarcodeException(String message) {
+ super(message);
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java
deleted file mode 100644
index 82d3d8a4..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package it.integry.integrywmsnative.core.exception;
-
-import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.utility.UtilityResources;
-
-public final class InvalidCodMdepException extends Exception {
- public InvalidCodMdepException() {
- super(UtilityResources.getString(R.string.invalid_codmdep));
- }
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepLUException.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepLUException.java
new file mode 100644
index 00000000..f4ee1b97
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/InvalidCodMdepLUException.java
@@ -0,0 +1,16 @@
+package it.integry.integrywmsnative.core.exception;
+
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.utility.UtilityResources;
+
+public final class InvalidCodMdepLUException extends Exception {
+
+ public InvalidCodMdepLUException() {
+ super(UtilityResources.getString(R.string.invalid_codmdep_error_message));
+ }
+
+ public InvalidCodMdepLUException(String codMdep) {
+ super(UtilityResources.getString(R.string.invalid_codmdep_error_message) + "(" + codMdep + ")");
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
index b3b79372..ef260694 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/BaseFragment.java
@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.expansion;
import android.os.Bundle;
+import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -30,6 +31,9 @@ public abstract class BaseFragment extends Fragment {
@Inject
public ExecutorService executorService;
+ @Inject
+ public Handler handler;
+
protected ElevatedToolbar mToolbar;
protected final List mOnPreDestroyList = new ArrayList<>();
@@ -79,7 +83,7 @@ public abstract class BaseFragment extends Fragment {
}
public void onError(Exception ex) {
- requireActivity().runOnUiThread(() -> {
+ handler.post(() -> {
this.closeProgress();
UtilityExceptions.defaultException(getActivity(), ex);
BarcodeManager.enable();
@@ -102,7 +106,7 @@ public abstract class BaseFragment extends Fragment {
protected void popMe() {
if (requireActivity() instanceof IPoppableActivity) {
- requireActivity().runOnUiThread(() -> {
+ handler.post(() -> {
((IPoppableActivity) requireActivity()).pop();
});
} else {
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioMapper.java
index 038fad40..8c76b441 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioMapper.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/InventarioMapper.java
@@ -2,11 +2,11 @@ package it.integry.integrywmsnative.core.mapper;
import javax.inject.Singleton;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.model.MtbInvent;
@Singleton
-public class InventarioMapper extends BaseMapper {
+public class InventarioMapper extends BaseMapper {
private final InventarioRowMapper inventarioRowMapper;
@@ -15,10 +15,10 @@ public class InventarioMapper extends BaseMapper {
}
@Override
- public InventarioRoomDTO mapRestToRoom(MtbInvent inputData) {
+ public InventarioEntity mapRestToRoom(MtbInvent inputData) {
if(inputData == null) return null;
- var data = new InventarioRoomDTO();
+ var data = new InventarioEntity();
data.setIdInventario(inputData.getIdInventario());
data.setCodMdep(inputData.getCodMdep());
data.setDataInventario(inputData.getDataInventario());
@@ -42,7 +42,7 @@ public class InventarioMapper extends BaseMapper {
}
@Override
- public MtbInvent mapRoomToRest(InventarioRoomDTO inputData) {
+ public MtbInvent mapRoomToRest(InventarioEntity inputData) {
if(inputData == null) return null;
var data = new MtbInvent();
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeMapper.java
new file mode 100644
index 00000000..93ee36a8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeMapper.java
@@ -0,0 +1,44 @@
+package it.integry.integrywmsnative.core.mapper;
+
+import javax.inject.Singleton;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeDTO;
+
+@Singleton
+public class VerificaGiacenzeMapper extends BaseMapper {
+
+ private final VerificaGiacenzeRowMapper verificaGiacenzeRowMapper;
+
+ public VerificaGiacenzeMapper(VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
+ this.verificaGiacenzeRowMapper = verificaGiacenzeRowMapper;
+ }
+
+
+ @Override
+ public VerificaGiacenzeEntity mapRestToRoom(VerificaGiacenzeDTO inputData) {
+ if(inputData == null) return null;
+
+ var data = new VerificaGiacenzeEntity();
+ data.setCodMdep(inputData.getCodMdep());
+ data.setData(inputData.getDataVerifica());
+
+ data.setVerificaGiacenzeRowList(verificaGiacenzeRowMapper.mapRestsToRooms(inputData.getRows()));
+
+ return data;
+ }
+
+ @Override
+ public VerificaGiacenzeDTO mapRoomToRest(VerificaGiacenzeEntity inputData) {
+ if(inputData == null) return null;
+
+ var data = new VerificaGiacenzeDTO();
+ data.setCodMdep(inputData.getCodMdep());
+ data.setDataVerifica(inputData.getData());
+
+ data.setRows(verificaGiacenzeRowMapper.mapRoomsToRests(inputData.getVerificaGiacenzeRowList()));
+
+
+ return data;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java
new file mode 100644
index 00000000..dccfad7d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/mapper/VerificaGiacenzeRowMapper.java
@@ -0,0 +1,40 @@
+package it.integry.integrywmsnative.core.mapper;
+
+import javax.inject.Singleton;
+
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeRowDTO;
+
+@Singleton
+public class VerificaGiacenzeRowMapper extends BaseMapper {
+
+ @Override
+ public VerificaGiacenzeRowEntity mapRestToRoom(VerificaGiacenzeRowDTO inputData) {
+ if(inputData == null) return null;
+
+ var data = new VerificaGiacenzeRowEntity();
+ data.setCodMart(inputData.getCodMart());
+ data.setPartitaMag(inputData.getPartitaMag());
+ data.setQtaInGiacenza(inputData.getQtaInGiacenza());
+ data.setQta(inputData.getQta());
+ data.setNumConf(inputData.getNumCnf());
+ data.setQtaConf(inputData.getQtaCnf());
+ data.setScanCodBarre(inputData.getBarcode());
+ return data;
+ }
+
+ @Override
+ public VerificaGiacenzeRowDTO mapRoomToRest(VerificaGiacenzeRowEntity inputData) {
+ if(inputData == null) return null;
+
+ var data = new VerificaGiacenzeRowDTO();
+ data.setCodMart(inputData.getCodMart());
+ data.setPartitaMag(inputData.getPartitaMag());
+ data.setQtaInGiacenza(inputData.getQtaInGiacenza());
+ data.setQta(inputData.getQta());
+ data.setNumCnf(inputData.getNumConf());
+ data.setQtaCnf(inputData.getQtaConf());
+ data.setBarcode(inputData.getScanCodBarre());
+ return data;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbDepo.java b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbDepo.java
index 2c55daee..11ee83e3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/model/MtbDepo.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/model/MtbDepo.java
@@ -5,7 +5,7 @@ import android.os.Parcelable;
import java.math.BigDecimal;
-public class MtbDepo extends EntityBase implements Parcelable {
+public class MtbDepo extends EntityBase {
private String codMdep;
@@ -41,79 +41,6 @@ public class MtbDepo extends EntityBase implements Parcelable {
type = "mtb_depo";
}
- protected MtbDepo(Parcel in) {
- codMdep = in.readString();
- descrizione = in.readString();
- flagVal = in.readString();
- codAnag = in.readString();
- indirizzo = in.readString();
- cap = in.readString();
- citta = in.readString();
- prov = in.readString();
- tel = in.readString();
- nazione = in.readString();
- fax = in.readString();
- eMail = in.readString();
- sitoWeb = in.readString();
- codVdes = in.readString();
- serie = in.readString();
- flagMovimentabile = in.readString();
- codJfas = in.readString();
- codVlis = in.readString();
- codCcau = in.readString();
- codCcon = in.readString();
- codDtip = in.readString();
- codDtipFat = in.readString();
- flagContoVendita = in.readString();
- flagTipoNegozio = in.readString();
- codMdepReso = in.readString();
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(codMdep);
- dest.writeString(descrizione);
- dest.writeString(flagVal);
- dest.writeString(codAnag);
- dest.writeString(indirizzo);
- dest.writeString(cap);
- dest.writeString(citta);
- dest.writeString(prov);
- dest.writeString(tel);
- dest.writeString(nazione);
- dest.writeString(fax);
- dest.writeString(eMail);
- dest.writeString(sitoWeb);
- dest.writeString(codVdes);
- dest.writeString(serie);
- dest.writeString(flagMovimentabile);
- dest.writeString(codJfas);
- dest.writeString(codVlis);
- dest.writeString(codCcau);
- dest.writeString(codCcon);
- dest.writeString(codDtip);
- dest.writeString(codDtipFat);
- dest.writeString(flagContoVendita);
- dest.writeString(flagTipoNegozio);
- dest.writeString(codMdepReso);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- public static final Creator CREATOR = new Creator<>() {
- @Override
- public MtbDepo createFromParcel(Parcel in) {
- return new MtbDepo(in);
- }
-
- @Override
- public MtbDepo[] newArray(int size) {
- return new MtbDepo[size];
- }
- };
public String getCodMdep() {
return codMdep;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
index 24f4e4c4..9a8a1749 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
@@ -52,9 +52,12 @@ public class RESTBuilder {
public T getService(final Class service, String protocol, String host, int port, boolean addInterceptors, boolean addEmsApi, int timeout) {
OkHttpClient.Builder clientBuilder = getDefaultHttpClient();
+ timeout = 0;
+
clientBuilder.connectTimeout(timeout, TimeUnit.SECONDS);
clientBuilder.readTimeout(timeout, TimeUnit.SECONDS);
clientBuilder.writeTimeout(timeout, TimeUnit.SECONDS);
+ clientBuilder.callTimeout(timeout, TimeUnit.SECONDS);
clientBuilder.retryOnConnectionFailure(true);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
index 3f1cf2a4..17a960b3 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
@@ -10,6 +10,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.ExecutorService;
+import java.util.stream.Collectors;
import javax.inject.Singleton;
@@ -26,7 +29,6 @@ import it.integry.integrywmsnative.core.rest.model.articolo.RetrieveArticoloByCo
import it.integry.integrywmsnative.core.rest.model.articolo.SaveArticoloRequestDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SaveArticoloResponseDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeRequestDTO;
-import it.integry.integrywmsnative.core.rest.model.articolo.SearchArticoloByBarcodeResponseDTO;
import it.integry.integrywmsnative.core.rest.model.articolo.UpdateBarcodeImballoRequestDTO;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
import retrofit2.Call;
@@ -36,10 +38,12 @@ import retrofit2.Response;
public class ArticoloRESTConsumer extends _BaseRESTConsumer {
private final RESTBuilder restBuilder;
+ private final ExecutorService executorService;
private final SystemRESTConsumer systemRESTConsumer;
- public ArticoloRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
+ public ArticoloRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
this.restBuilder = restBuilder;
+ this.executorService = executorService;
this.systemRESTConsumer = systemRESTConsumer;
}
@@ -78,28 +82,30 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
- public void searchByBarcode(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public List searchByBarcodeSynchronized(String barcodeProd) throws Exception {
ArticoloRESTConsumerService articoloRESTConsumerService = restBuilder.getService(ArticoloRESTConsumerService.class);
var request = new SearchArticoloByBarcodeRequestDTO()
.setBarcode(barcodeProd)
.setOnlyActive(true);
- articoloRESTConsumerService
+ var response = articoloRESTConsumerService
.searchByBarcode(request)
- .enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- analyzeAnswer(response, "searchByBarcode", (m) -> {
- onComplete.run(response.body().getDto().getArts());
- }, onFailed);
- }
+ .execute();
- @Override
- public void onFailure(Call> call, @NonNull final Exception e) {
- onFailed.run(e);
- }
- });
+ analyzeAnswer(response, "searchByBarcode");
+ return response.body().getDto().getArts();
+ }
+
+ public void searchByBarcode(String barcodeProd, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ executorService.execute(() -> {
+ try {
+ var mtbAarts = searchByBarcodeSynchronized(barcodeProd);
+ if (onComplete != null) onComplete.run(mtbAarts);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
+ }
+ });
}
public void findIfIsKit(MtbAart mtbAart, RunnableArgs onComplete, RunnableArgs onFailed){
@@ -122,45 +128,48 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
- public void getByCodMarts(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
- var codMarts = Stream.of(codMartToFind)
- .withoutNulls()
- .distinct().toList();
-
+ public List getByCodMartsSynchronized(List codMartToFind) throws Exception {
+ var codMarts = codMartToFind.parallelStream()
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toUnmodifiableList());
ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class);
- articoloRESTConsumer
+ var response = articoloRESTConsumer
.getByCodMart(new RetrieveArticoloByCodMartRequestDTO()
.setCodMarts(codMarts))
- .enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call>> call, Response>> response) {
- analyzeAnswer(response, "getByCodMart", onComplete, onFailed);
- }
+ .execute();
+ return analyzeAnswer(response, "getByCodMart");
+ }
- @Override
- public void onFailure(Call>> call, @NonNull final Exception e) {
- onFailed.run(e);
- }
- });
+ public void getByCodMarts(List codMartToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ executorService.execute(() -> {
+ try {
+ var mtbAarts = getByCodMartsSynchronized(codMartToFind);
+ if (onComplete != null) onComplete.run(mtbAarts);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
+ }
+ });
+ }
+ public List getStatoPartitaSynchronized(String codMart, String partitaMag) throws Exception {
+ ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class);
+ var response = articoloRESTConsumer.getStatoPartita(codMart, partitaMag).execute();
+
+ var data = analyzeAnswer(response, "getStatoPartita");
+ return data;
}
public void getStatoPartita(String codMart, String partitaMag, RunnableArgs> onComplete, RunnableArgs onFailed) {
-
- ArticoloRESTConsumerService articoloRESTConsumer = restBuilder.getService(ArticoloRESTConsumerService.class);
- articoloRESTConsumer.getStatoPartita(codMart, partitaMag).enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call>> call, Response>> response) {
- analyzeAnswer(response, "getStatoPartita", onComplete, onFailed);
- }
-
- @Override
- public void onFailure(Call>> call, @NonNull final Exception e) {
- onFailed.run(e);
+ executorService.execute(() -> {
+ try {
+ var response = getStatoPartitaSynchronized(codMart, partitaMag);
+ if (onComplete != null) onComplete.run(response);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
}
});
-
}
@@ -172,7 +181,7 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
}
- public void getArtsGroups(List groupsToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public List getArtsGroupsSynchronized(List groupsToFind) throws Exception {
var whereCondMap = Stream.of(groupsToFind)
.map(x -> {
HashMap vars = new HashMap<>();
@@ -186,7 +195,18 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
Type typeOfObjectsList = new TypeToken>() {
}.getType();
- this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
+ return this.systemRESTConsumer.processSqlSynchronized("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList);
+ }
+
+ public void getArtsGroups(List groupsToFind, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ executorService.execute(() -> {
+ try {
+ var data = getArtsGroupsSynchronized(groupsToFind);
+ if (onComplete != null) onComplete.run(data);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
+ }
+ });
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
index 51474031..cb781a56 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/BarcodeRESTConsumer.java
@@ -16,6 +16,10 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
this.ean128Service = ean128Service;
}
+ public Ean128Model decodeEan128Synchronized(BarcodeScanDTO barcodeScanDTO) throws Exception {
+ return this.ean128Service.decode(barcodeScanDTO);
+ }
+
public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs onComplete, RunnableArgs onFailed) {
try {
onComplete.run(this.ean128Service.decode(barcodeObj));
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumer.java
new file mode 100644
index 00000000..e755444a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumer.java
@@ -0,0 +1,41 @@
+package it.integry.integrywmsnative.core.rest.consumers;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+
+import it.integry.integrywmsnative.core.rest.RESTBuilder;
+import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
+import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
+
+public class GiacenzaPvRESTConsumer extends _BaseRESTConsumer {
+
+
+ private final RESTBuilder restBuilder;
+ private final ExecutorService executorService;
+
+ public GiacenzaPvRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
+ this.restBuilder = restBuilder;
+ this.executorService = executorService;
+ }
+
+
+ public List retrieveGiacenzeSynchronized(String codMdep) throws Exception {
+ GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 120);
+ var response = giacenzaPvRESTConsumerService.retrieve(codMdep)
+ .execute();
+
+ var giacenzeList = analyzeAnswer(response, "retrieve-giacenze-pv");
+
+ return giacenzeList != null ? giacenzeList : new ArrayList<>();
+ }
+
+ public void saveNewVerificaSynchronized(SaveNewVerificaRequestDTO saveNewVerificaRequest) throws Exception {
+ GiacenzaPvRESTConsumerService giacenzaPvRESTConsumerService = restBuilder.getService(GiacenzaPvRESTConsumerService.class, 0);
+ var response = giacenzaPvRESTConsumerService.saveNewVerifica(saveNewVerificaRequest)
+ .execute();
+
+ analyzeAnswer(response, "save-verifica-pv");
+ }
+
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumerService.java
new file mode 100644
index 00000000..4bb86b7c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumerService.java
@@ -0,0 +1,22 @@
+package it.integry.integrywmsnative.core.rest.consumers;
+
+import java.util.List;
+
+import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
+import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
+import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+public interface GiacenzaPvRESTConsumerService {
+
+ @GET("giacenza/retrieve")
+ Call>> retrieve(@Query("codMdep") String codMdep);
+
+
+ @POST("wms/pv/verifica_giacenze/save_new_verifica")
+ Call> saveNewVerifica(@Body SaveNewVerificaRequestDTO saveNewVerificaRequest);
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
index 8754f409..83506ee8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
@@ -7,6 +7,8 @@ import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.stream.Collectors;
import javax.inject.Singleton;
@@ -28,52 +30,55 @@ import retrofit2.Response;
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
private final RESTBuilder restBuilder;
+ private final ExecutorService executorService;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
- public GiacenzaRESTConsumer(RESTBuilder restBuilder, ArticoloRESTConsumer articoloRESTConsumer) {
+ public GiacenzaRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, ArticoloRESTConsumer articoloRESTConsumer) {
this.restBuilder = restBuilder;
+ this.executorService = executorService;
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
- public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ public List getGiacenzeInPosizioneSynchronized(MtbDepoPosizione posizione) throws Exception {
GiacenzaRESTConsumerService giacenzaRESTConsumerService = restBuilder.getService(GiacenzaRESTConsumerService.class);
- giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione()).enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call>> call, Response>> response) {
- analyzeAnswer(response, "getGiacenzeInPosizione", inventarioList -> {
+ var response = giacenzaRESTConsumerService.retrieveAvailableItems(posizione.getPosizione())
+ .execute();
- if(inventarioList != null && !inventarioList.isEmpty()){
- List codMarts = Stream.of(inventarioList)
- .map(x -> x.getCodMart().trim())
- .toList();
+ var inventarioList = analyzeAnswer(response, "getGiacenzeInPosizione");
- mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
- for (var row : inventarioList) {
+ if (inventarioList != null && !inventarioList.isEmpty()) {
+ List codMarts = inventarioList.stream()
+ .map(x -> x.getCodMart().trim())
+ .collect(Collectors.toList());
- MtbAart foundMtbAart = null;
- Optional mtbAartOpt = Stream.of(mtbAarts)
- .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
- .findFirst();
+ var mtbAarts = mArticoloRESTConsumer.getByCodMartsSynchronized(codMarts);
+ for (var row : inventarioList) {
+ MtbAart foundMtbAart = null;
+ Optional mtbAartOpt = Stream.of(mtbAarts)
+ .filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
+ .findFirst();
- if (mtbAartOpt.isPresent()) {
- foundMtbAart = mtbAartOpt.get();
- }
+ if (mtbAartOpt.isPresent()) {
+ foundMtbAart = mtbAartOpt.get();
+ }
- row.setMtbAart(foundMtbAart);
- }
-
- onComplete.run(inventarioList);
- }, onFailed);
- }else{
- onComplete.run(new ArrayList<>());
- }
- }, onFailed);
+ row.setMtbAart(foundMtbAart);
}
- @Override
- public void onFailure(Call>> call, @NonNull final Exception e) {
- onFailed.run(e);
+ return inventarioList;
+ }
+
+ return new ArrayList<>();
+ }
+
+ public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs> onComplete, RunnableArgs onFailed) {
+ executorService.execute(() -> {
+ try {
+ var result = getGiacenzeInPosizioneSynchronized(posizione);
+ if (onComplete != null) onComplete.run(result);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
}
});
}
@@ -92,8 +97,8 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var articoli : inventarioList) {
List mvwSitArtUdcDetInventario = articoli.getMvwSitArtUdcDetInventarioDTO();
- if (mvwSitArtUdcDetInventario != null && !mvwSitArtUdcDetInventario.isEmpty()){
- for (var row : mvwSitArtUdcDetInventario){
+ if (mvwSitArtUdcDetInventario != null && !mvwSitArtUdcDetInventario.isEmpty()) {
+ for (var row : mvwSitArtUdcDetInventario) {
MtbAart foundMtbAart = null;
Optional mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java
index 5bcf2c54..f42791d7 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java
@@ -27,7 +27,6 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.system.LatestAppVersionInfoDTO;
-import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityGson;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -40,9 +39,9 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
private final ExecutorService executorService;
private final RESTBuilder restBuilder;
- public SystemRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
- this.executorService = executorService;
+ public SystemRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
this.restBuilder = restBuilder;
+ this.executorService = executorService;
}
public LatestAppVersionInfoDTO retrieveUpdatesInfoSynchronized(boolean betaVersion) throws Exception {
@@ -57,56 +56,37 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
return analyzeAnswerGeneric(response, "updates");
}
-
- public void registerDevice(final Runnable onSuccess, final RunnableArgs onFailed) {
- RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO()
- .setApp("WMS");
-
- SystemRESTConsumerService systemRESTConsumerService = restBuilder.getService(SystemRESTConsumerService.class);
- systemRESTConsumerService.registerDevice(registerDeviceRequestDTO)
- .enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed);
- }
-
- @Override
- public void onFailure(Call> call, @NonNull final Exception e) {
- onFailed.run(e);
- }
- });
-
- }
-
- public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) {
+ public T processSqlSynchronized(String nativeSql, final Type clazz) throws Exception {
NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO()
.setNativeSql(nativeSql);
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
- service
+ var response = service
.processSql(nativeSqlDTO)
- .enqueue(new ManagedErrorCallback<>() {
- @Override
- public void onResponse(Call> call, Response> response) {
- analyzeAnswer(response, "ProcessSql", o -> {
- Gson gson = UtilityGson.createObject();
+ .execute();
+
+ var data = analyzeAnswer(response, "processSql");
+
+ Gson gson = UtilityGson.createObject();
+ String json = gson.toJson(data);
+
+ InputStream ims = new ByteArrayInputStream(json.getBytes());
+ Reader reader = new InputStreamReader(ims);
+ T gsonObj = gson.fromJson(reader, clazz);
+
+ return gsonObj;
+ }
- String json = gson.toJson(o);
-
- InputStream ims = new ByteArrayInputStream(json.getBytes());
- Reader reader = new InputStreamReader(ims);
- T gsonObj = gson.fromJson(reader, clazz);
-
- onComplete.run(gsonObj);
- }, onFailed);
- }
-
- @Override
- public void onFailure(Call> call, @NonNull final Exception e) {
- onFailed.run(e);
- }
- });
+ public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) {
+ executorService.execute(() -> {
+ try {
+ T result = processSqlSynchronized(nativeSql, clazz);
+ if (onComplete != null) onComplete.run(result);
+ } catch (Exception ex) {
+ if (onFailed != null) onFailed.run(ex);
+ }
+ });
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java
index 97e88112..bafaed7a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java
@@ -7,7 +7,6 @@ import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.system.LatestAppVersionInfoDTO;
-import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
@@ -19,9 +18,6 @@ public interface SystemRESTConsumerService {
@GET("wms/currentVersion")
Call retrieveUpdatesInfo(@Query("suffix") String suffix);
- @POST("device/register")
- Call> registerDevice(@Body RegisterDeviceRequestDTO registerDeviceRequestDTO);
-
@POST("processSql")
Call> processSql(@Body NativeSqlRequestDTO nativeSqlDTO);
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
index daadfc14..13a0f4e8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/Ean128Model.java
@@ -337,7 +337,7 @@ public class Ean128Model {
public String Internal3; //Cod-Jfas
///Informazioni interne
- public String Internal4;
+ public String Internal4; //Cod-Mdep
///Informazioni interne
public String Internal5;
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/GiacenzaPvDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/GiacenzaPvDTO.java
new file mode 100644
index 00000000..5baee5ba
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/GiacenzaPvDTO.java
@@ -0,0 +1,69 @@
+package it.integry.integrywmsnative.core.rest.model.pv;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class GiacenzaPvDTO {
+
+ private String codMart;
+ private String descrizione;
+ private BigDecimal qtaInv;
+ private Date dtaInventario;
+ private String codMdep;
+ private BigDecimal incomingStock;
+
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public GiacenzaPvDTO setCodMart(String codMart) {
+ this.codMart = codMart;
+ return this;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public GiacenzaPvDTO setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ return this;
+ }
+
+ public BigDecimal getQtaInv() {
+ return qtaInv;
+ }
+
+ public GiacenzaPvDTO setQtaInv(BigDecimal qtaInv) {
+ this.qtaInv = qtaInv;
+ return this;
+ }
+
+ public Date getDtaInventario() {
+ return dtaInventario;
+ }
+
+ public GiacenzaPvDTO setDtaInventario(Date dtaInventario) {
+ this.dtaInventario = dtaInventario;
+ return this;
+ }
+
+ public String getCodMdep() {
+ return codMdep;
+ }
+
+ public GiacenzaPvDTO setCodMdep(String codMdep) {
+ this.codMdep = codMdep;
+ return this;
+ }
+
+ public BigDecimal getIncomingStock() {
+ return incomingStock;
+ }
+
+ public GiacenzaPvDTO setIncomingStock(BigDecimal incomingStock) {
+ this.incomingStock = incomingStock;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/SaveNewVerificaRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/SaveNewVerificaRequestDTO.java
new file mode 100644
index 00000000..54e13263
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/SaveNewVerificaRequestDTO.java
@@ -0,0 +1,15 @@
+package it.integry.integrywmsnative.core.rest.model.pv;
+
+public class SaveNewVerificaRequestDTO {
+
+ private VerificaGiacenzeDTO data;
+
+ public VerificaGiacenzeDTO getData() {
+ return data;
+ }
+
+ public SaveNewVerificaRequestDTO setData(VerificaGiacenzeDTO data) {
+ this.data = data;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeDTO.java
new file mode 100644
index 00000000..3380bc34
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeDTO.java
@@ -0,0 +1,41 @@
+package it.integry.integrywmsnative.core.rest.model.pv;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import it.integry.integrywmsnative.core.model.BaseRestDTO;
+
+public class VerificaGiacenzeDTO extends BaseRestDTO {
+
+ private String codMdep;
+ private LocalDateTime dataVerifica;
+
+ private List rows;
+
+ public String getCodMdep() {
+ return codMdep;
+ }
+
+ public VerificaGiacenzeDTO setCodMdep(String codMdep) {
+ this.codMdep = codMdep;
+ return this;
+ }
+
+ public LocalDateTime getDataVerifica() {
+ return dataVerifica;
+ }
+
+ public VerificaGiacenzeDTO setDataVerifica(LocalDateTime dataVerifica) {
+ this.dataVerifica = dataVerifica;
+ return this;
+ }
+
+ public List getRows() {
+ return rows;
+ }
+
+ public VerificaGiacenzeDTO setRows(List rows) {
+ this.rows = rows;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java
new file mode 100644
index 00000000..be97510a
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/VerificaGiacenzeRowDTO.java
@@ -0,0 +1,78 @@
+package it.integry.integrywmsnative.core.rest.model.pv;
+
+import java.math.BigDecimal;
+
+import it.integry.integrywmsnative.core.model.BaseRestDTO;
+
+public class VerificaGiacenzeRowDTO extends BaseRestDTO {
+
+ private String codMart;
+ private String partitaMag;
+ private BigDecimal qtaInGiacenza;
+ private BigDecimal qta;
+ private BigDecimal qtaCnf;
+ private BigDecimal numCnf;
+ private String barcode;
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public VerificaGiacenzeRowDTO setCodMart(String codMart) {
+ this.codMart = codMart;
+ return this;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public VerificaGiacenzeRowDTO setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ return this;
+ }
+
+ public BigDecimal getQtaInGiacenza() {
+ return qtaInGiacenza;
+ }
+
+ public void setQtaInGiacenza(BigDecimal qtaInGiacenza) {
+ this.qtaInGiacenza = qtaInGiacenza;
+ }
+
+ public BigDecimal getQta() {
+ return qta;
+ }
+
+ public VerificaGiacenzeRowDTO setQta(BigDecimal qta) {
+ this.qta = qta;
+ return this;
+ }
+
+ public BigDecimal getQtaCnf() {
+ return qtaCnf;
+ }
+
+ public VerificaGiacenzeRowDTO setQtaCnf(BigDecimal qtaCnf) {
+ this.qtaCnf = qtaCnf;
+ return this;
+ }
+
+ public BigDecimal getNumCnf() {
+ return numCnf;
+ }
+
+ public VerificaGiacenzeRowDTO setNumCnf(BigDecimal numCnf) {
+ this.numCnf = numCnf;
+ return this;
+ }
+
+ public String getBarcode() {
+ return barcode;
+ }
+
+ public VerificaGiacenzeRowDTO setBarcode(String barcode) {
+ this.barcode = barcode;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java
deleted file mode 100644
index c7b75a62..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package it.integry.integrywmsnative.core.rest.model.system;
-
-public class RegisterDeviceRequestDTO {
-
- private String app;
-
- public String getApp() {
- return app;
- }
-
- public RegisterDeviceRequestDTO setApp(String app) {
- this.app = app;
- return this;
- }
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
index febdf753..2884f6ba 100644
--- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
+++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBarcode.java
@@ -1,14 +1,17 @@
package it.integry.integrywmsnative.core.utility;
import android.graphics.Bitmap;
-import android.graphics.Color;
import com.annimon.stream.Stream;
import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
+import com.journeyapps.barcodescanner.BarcodeEncoder;
import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
@@ -17,6 +20,7 @@ import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UtilityBarcode {
+ public static final char FNC1 = 0x00f1;
public static boolean isBarcodeOrdineV(BarcodeScanDTO barcodeScanDTO) {
return (isEan13(barcodeScanDTO) || isEtichetta128(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("3");
@@ -161,15 +165,15 @@ public class UtilityBarcode {
}
public static Bitmap generateBarcodeImage(String barcode, int width, int height) throws Exception {
- if(barcode == null) return null;
+ if (barcode == null) return null;
BarcodeType barcodeType;
- if(barcode.length() == 8)
+ if (barcode.length() == 8)
barcodeType = BarcodeType.EAN8;
- else if(barcode.length() == 13)
+ else if (barcode.length() == 13)
barcodeType = BarcodeType.EAN13;
- else if(barcode.length() == 14)
+ else if (barcode.length() == 14)
barcodeType = BarcodeType.INTERLEAVED_2OF5;
else throw new Exception("Barcode " + barcode + " non valido");
@@ -177,25 +181,49 @@ public class UtilityBarcode {
}
public static Bitmap generateBarcodeImage(String barcode, BarcodeType type, int width, int height) throws Exception {
- // Genera la matrice del codice a barre
- MultiFormatWriter writer = new MultiFormatWriter();
- BarcodeFormat barcodeFormat = switch (type) {
- case EAN8 -> BarcodeFormat.EAN_8;
- case EAN13 -> BarcodeFormat.EAN_13;
- case INTERLEAVED_2OF5 -> BarcodeFormat.ITF;
- case CODE128 -> BarcodeFormat.CODE_128;
- default -> throw new Exception("Barcode " + barcode + " non valido (tipo: " + type + ")");
- };
+ if (barcode == null) return null;
- BitMatrix bitMatrix = writer.encode(barcode, barcodeFormat, width, height);
+ Bitmap bitmap = null;
- // Crea un bitmap a partire dalla matrice
- Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- bitmap.setPixel(x, y, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE);
+ if (type == BarcodeType.EAN128) {
+ if(barcode.charAt(0) != FNC1) {
+ barcode = FNC1 + barcode;
}
+
+ Map hints = new HashMap<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "ISO-8859-1");
+ hints.put(EncodeHintType.MARGIN, 10); // Quiet zone
+
+ // Crea il codice a barre
+ MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
+ BitMatrix bitMatrix = multiFormatWriter.encode(
+ barcode,
+ BarcodeFormat.CODE_128,
+ width, // Larghezza
+ height, // Altezza
+ hints
+ );
+
+ // Converti in bitmap
+ BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
+ bitmap = barcodeEncoder.createBitmap(bitMatrix);
+ } else {
+ BarcodeFormat barcodeFormat = switch (type) {
+ case EAN8 -> BarcodeFormat.EAN_8;
+ case EAN13 -> BarcodeFormat.EAN_13;
+ case INTERLEAVED_2OF5 -> BarcodeFormat.ITF;
+ case CODE128 -> BarcodeFormat.CODE_128;
+ default ->
+ throw new Exception("Barcode " + barcode + " non valido (tipo: " + type + ")");
+ };
+
+ MultiFormatWriter writer = new MultiFormatWriter();
+ BitMatrix bitMatrix = writer.encode(barcode, barcodeFormat, width, height);
+
+
+ BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
+ bitmap = barcodeEncoder.createBitmap(bitMatrix);
}
return bitmap;
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java
index 948a3540..e734ffb4 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariFragment.java
@@ -20,7 +20,7 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
@@ -94,7 +94,7 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
mBinding.emptyView.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
});
- var itemType = new Type(R.layout.fragment_elenco_inventario_list_single_item, BR.item);
+ var itemType = new Type(R.layout.fragment_elenco_inventario_list_single_item, BR.item);
itemType.onClick(x -> {
var item = x.getBinding().getItem();
@@ -123,7 +123,7 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
});
new LiveAdapter(mViewModel.getInventarioList(), this)
- .map(InventarioRoomDTO.class, itemType)
+ .map(InventarioEntity.class, itemType)
.into(this.mBinding.inventarioList);
@@ -152,8 +152,8 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
}
@Override
- public void onInventarioLoaded(InventarioRoomDTO inventarioRoomDTO, List listaArts) {
- startPicking(inventarioRoomDTO, listaArts);
+ public void onInventarioLoaded(InventarioEntity inventarioEntity, List listaArts) {
+ startPicking(inventarioEntity, listaArts);
}
@Override
@@ -173,8 +173,8 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
}
- private void startPicking(InventarioRoomDTO inventarioRoomDTO, List listArts) {
- PickingInventarioActivity.startActivity(requireContext(), inventarioRoomDTO, listArts);
+ private void startPicking(InventarioEntity inventarioEntity, List listArts) {
+ PickingInventarioActivity.startActivity(requireContext(), inventarioEntity, listArts);
}
@Override
@@ -196,13 +196,13 @@ public class ElencoInventariFragment extends BaseFragment implements ITitledFrag
.show(requireActivity().getSupportFragmentManager(), "tag");
}
- public void deleteInventarioRequest(InventarioRoomDTO inventarioRoomDTO) {
+ public void deleteInventarioRequest(InventarioEntity inventarioEntity) {
DialogYesNoView
.newInstance(null, "Vuoi cancellare l'inventario?",
dialogResponse -> {
switch (dialogResponse) {
case YES:
- this.mViewModel.deleteInventario(inventarioRoomDTO);
+ this.mViewModel.deleteInventario(inventarioEntity);
break;
case NO:
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariViewModel.java
index 26587640..4340a177 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/ElencoInventariViewModel.java
@@ -7,7 +7,7 @@ import com.annimon.stream.Stream;
import java.util.List;
import java.util.Objects;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
@@ -25,7 +25,7 @@ public class ElencoInventariViewModel {
private final SettingsManager settingsManager;
private Listener listener;
- private LiveData> inventarioList;
+ private LiveData> inventarioList;
private final String codMdep;
@@ -52,7 +52,7 @@ public class ElencoInventariViewModel {
inventarioList = null;
}
- public LiveData> getInventarioList() {
+ public LiveData> getInventarioList() {
return inventarioList;
}
@@ -101,12 +101,12 @@ public class ElencoInventariViewModel {
}
- public void createNewInventario(long inventoryId, String zone, RunnableArgss> onComplete) {
+ public void createNewInventario(long inventoryId, String zone, RunnableArgss> onComplete) {
this.sendOnLoadingStarted();
var codMdep = settingsManager.getSettings().getUserSession().getDepo().getCodMdep();
- var createdInventario = new InventarioRoomDTO();
+ var createdInventario = new InventarioEntity();
createdInventario.setIdInventario(inventoryId);
createdInventario.setZona(zone);
createdInventario.setCodMdep(codMdep);
@@ -121,8 +121,8 @@ public class ElencoInventariViewModel {
});
}
- public void deleteInventario(InventarioRoomDTO inventarioRoomDTO) {
- inventarioRepository.delete(inventarioRoomDTO, null, this::sendOnError);
+ public void deleteInventario(InventarioEntity inventarioEntity) {
+ inventarioRepository.delete(inventarioEntity, null, this::sendOnError);
}
@@ -134,8 +134,8 @@ public class ElencoInventariViewModel {
if (listener != null) listener.onInventarioInfoRequest(onComplete);
}
- private void sendOnInventarioLoaded(InventarioRoomDTO inventarioRoomDTO, List listaArts) {
- if (listener != null) listener.onInventarioLoaded(inventarioRoomDTO, listaArts);
+ private void sendOnInventarioLoaded(InventarioEntity inventarioEntity, List listaArts) {
+ if (listener != null) listener.onInventarioLoaded(inventarioEntity, listaArts);
}
private void sendCreateInventarioRequest(long inventoryId, String zone) {
@@ -170,7 +170,7 @@ public class ElencoInventariViewModel {
void onInventarioInfoRequest(RunnableArgss onComplete);
- void onInventarioLoaded(InventarioRoomDTO inventarioRoomDTO, List listaArts);
+ void onInventarioLoaded(InventarioEntity inventarioEntity, List listaArts);
void onInventoriesLoadingStarted();
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsView.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsView.java
index 96283ccc..9e39b533 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsView.java
@@ -14,7 +14,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.databinding.BottomSheetInventarioActionsViewBinding;
public class BottomSheetInventarioActionsView extends BottomSheetDialogFragment {
@@ -28,9 +28,9 @@ public class BottomSheetInventarioActionsView extends BottomSheetDialogFragment
private BottomSheetInventarioActionsViewBinding mBinding;
private Listener mListener;
- private final InventarioRoomDTO inputItem;
+ private final InventarioEntity inputItem;
- public BottomSheetInventarioActionsView(InventarioRoomDTO inputItem) {
+ public BottomSheetInventarioActionsView(InventarioEntity inputItem) {
this.inputItem = inputItem;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsViewModel.java
index c1d14ab1..0bc091b8 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/bottom_sheet__inventario_actions/BottomSheetInventarioActionsViewModel.java
@@ -2,17 +2,17 @@ package it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_act
import androidx.lifecycle.MutableLiveData;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
public class BottomSheetInventarioActionsViewModel {
- private final MutableLiveData mCurrentItem = new MutableLiveData<>();
+ private final MutableLiveData mCurrentItem = new MutableLiveData<>();
- public void init(InventarioRoomDTO item) {
+ public void init(InventarioEntity item) {
this.mCurrentItem.postValue(item);
}
- public MutableLiveData getCurrentItem() {
+ public MutableLiveData getCurrentItem() {
return mCurrentItem;
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java
index 7f65b7a4..43a6895f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioActivity.java
@@ -25,7 +25,7 @@ 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_cache.DataCache;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -64,10 +64,10 @@ public class PickingInventarioActivity extends BaseActivity implements PickingIn
private int barcodeScannerIstanceID;
//Pass here all external parameters
- public static void startActivity(Context context, InventarioRoomDTO inventarioRoomDTO, List inventarioArts) {
+ public static void startActivity(Context context, InventarioEntity inventarioEntity, List inventarioArts) {
Intent myIntent = new Intent(context, PickingInventarioActivity.class);
- String keyExtraItem = DataCache.addItem(inventarioRoomDTO);
+ String keyExtraItem = DataCache.addItem(inventarioEntity);
myIntent.putExtra(KEY_INVENTARIO, keyExtraItem);
String keyExtraArtsItem = DataCache.addItem(inventarioArts);
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java
index 4cc4d50c..3378ad08 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java
@@ -12,7 +12,7 @@ import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository;
@@ -41,7 +41,7 @@ public class PickingInventarioViewModel extends ViewModel {
private final BarcodeRESTConsumer barcodeRESTConsumer;
private final InventarioRepository inventarioRepository;
private final InventarioRowRepository inventarioRowRepository;
- public MutableLiveData currentInventario = new MutableLiveData<>();
+ public MutableLiveData currentInventario = new MutableLiveData<>();
public LiveData> currentInventarioRows = new MutableLiveData<>();
private boolean canAddUnknownItems;
private boolean flagShouldAskToCreateOrUpdateRowInventario;
@@ -56,14 +56,14 @@ public class PickingInventarioViewModel extends ViewModel {
this.barcodeRESTConsumer = barcodeRESTConsumer;
}
- public void init(InventarioRoomDTO inventarioRoomDTO, List inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) {
+ public void init(InventarioEntity inventarioEntity, List inventarioArts, boolean canAddUnknownItems, boolean flagShouldAskToCreateOrUpdateRowInventario) {
this.canAddUnknownItems = canAddUnknownItems;
this.flagShouldAskToCreateOrUpdateRowInventario = flagShouldAskToCreateOrUpdateRowInventario;
this.sendOnLoadingStarted();
- this.currentInventario.postValue(inventarioRoomDTO);
- this.currentInventarioRows = inventarioRowRepository.retrieve(inventarioRoomDTO.getId());
+ this.currentInventario.postValue(inventarioEntity);
+ this.currentInventarioRows = inventarioRowRepository.retrieve(inventarioEntity.getId());
this.availableInventarioArts = inventarioArts == null ? new ArrayList<>() : inventarioArts;
UtilityLiveData.observeOnce(this.currentInventarioRows, data -> {
@@ -73,7 +73,7 @@ public class PickingInventarioViewModel extends ViewModel {
this.sendOnLoadingEnded();
}
- public LiveData getCurrentInventario() {
+ public LiveData getCurrentInventario() {
return currentInventario;
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java
index a3d51bb5..4d1b416c 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/main/MainActivity.java
@@ -49,6 +49,7 @@ import it.integry.integrywmsnative.databinding.ActivityMainBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
+import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoView;
public class MainActivity extends BaseActivity
implements NavigationView.OnNavigationItemSelectedListener, IPoppableActivity {
@@ -185,6 +186,10 @@ public class MainActivity extends BaseActivity
} else {
if (id == R.id.nav_home) {
this.pop();
+ } else if (id == R.id.nav_extra_info) {
+
+ this.showExtraInfoDialog();
+
} else if (id == R.id.nav_settings) {
fragment = new MainSettingsFragment();
this.adaptViewToFragment(fragment);
@@ -203,6 +208,11 @@ public class MainActivity extends BaseActivity
return true;
}
+ private void showExtraInfoDialog() {
+ DialogExtraInfoView.newInstance()
+ .show(getSupportFragmentManager(), "extra-info");
+ }
+
private void initGestMenu() {
Menu menu = mBinding.navView.getMenu();
@@ -236,6 +246,8 @@ public class MainActivity extends BaseActivity
SubMenu subMenu = menu.addSubMenu(R.string.other);
+ subMenu.add(R.id.nav_extra_info, R.id.nav_extra_info, 0, R.string.informations)
+ .setIcon(R.drawable.ic_information_outline_24dp);
subMenu.add(R.id.nav_home, R.id.nav_settings, 0, R.string.general_settings)
.setIcon(R.drawable.ic_settings_24dp);
subMenu.add(R.id.nav_logout, R.id.nav_logout, 0, R.string.logout)
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
index 164c4d32..3a72013a 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
@@ -17,7 +17,7 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
-import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepLUException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
@@ -252,7 +252,7 @@ public class PickingLiberoViewModel {
if (codMdepIsValid) {
pickMerceULtoUL(mtbColt, articolo, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}, this::sendError);
} else {
@@ -283,7 +283,7 @@ public class PickingLiberoViewModel {
if (codMdepIsValid) {
pickMerceULtoUL(mtbColtScanned, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
} else {
this.sendError(new NoLUFoundException());
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java
index b4484c1a..bd75077e 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java
@@ -14,7 +14,7 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepLUException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
@@ -116,7 +116,7 @@ public class ProdVersamentoMaterialeViewModel {
if (codMdepIsValid) {
this.onLUOpened(mtbColt);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}, this::sendError);
} else {
@@ -135,7 +135,7 @@ public class ProdVersamentoMaterialeViewModel {
if (codMdepIsValid) {
this.onLUOpened(mtbColt);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}, this::sendError);
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeComponent.java
new file mode 100644
index 00000000..51c9eecc
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.gest.pv_verifica_giacenze;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface VerificaGiacenzeComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ VerificaGiacenzeComponent create();
+ }
+
+ void inject(VerificaGiacenzeFragment VerificaGiacenzeFragment);
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java
new file mode 100644
index 00000000..5b2c6f19
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeFragment.java
@@ -0,0 +1,349 @@
+package it.integry.integrywmsnative.gest.pv_verifica_giacenze;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.appcompat.widget.AppCompatTextView;
+
+import com.ravikoradiya.liveadapter.LiveAdapter;
+import com.ravikoradiya.liveadapter.Type;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.BR;
+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.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.expansion.BaseFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.utility.UtilityExceptions;
+import it.integry.integrywmsnative.databinding.FragmentVerificaGiacenzeBinding;
+import it.integry.integrywmsnative.databinding.ListaVerificaGiacenzePickedItemListModelBinding;
+import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
+import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemDTO;
+import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditView;
+import it.integry.integrywmsnative.view.dialogs.DialogConsts;
+import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoView;
+import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
+import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
+import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
+
+public class VerificaGiacenzeFragment extends BaseFragment implements ITitledFragment, VerificaGiacenzeViewModel.Listener, BottomSheetItemEditView.Listener {
+
+ @Inject
+ VerificaGiacenzeViewModel mViewModel;
+
+ @Inject
+ DialogInputQuantityV2View dialogInputQuantityV2View;
+
+ @Inject
+ VerificaGiacenzeRowMapper verificaGiacenzeRowMapper;
+
+ private FragmentVerificaGiacenzeBinding mBindings;
+ private int barcodeScannerIstanceID = -1;
+
+
+ public VerificaGiacenzeFragment() {
+ // Required empty public constructor
+ }
+
+ public static VerificaGiacenzeFragment newInstance() {
+ return new VerificaGiacenzeFragment();
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ setRetainInstance(true);
+
+ mBindings = FragmentVerificaGiacenzeBinding.inflate(inflater, container, false);
+ mBindings.setLifecycleOwner(this);
+
+ MainApplication.appComponent
+ .verificaGiacenzeComponent()
+ .create()
+ .inject(this);
+
+ mBindings.setView(this);
+ mBindings.setViewModel(mViewModel);
+
+ mViewModel.setListener(this);
+
+ this.init();
+
+ return mBindings.getRoot();
+ }
+
+ private void init() {
+
+ executorService.execute(() -> {
+
+ boolean recoveredSession = false;
+ String codMdep = null;
+
+ try {
+
+ if (mViewModel.isAnotherVerificaGiacenzeInProgress()) {
+ boolean recover = askToRecoverPrevious();
+
+ if (recover) {
+ // Recover data
+ var latestVerifica = mViewModel.recoverLast();
+ codMdep = latestVerifica.getCodMdep();
+ recoveredSession = true;
+ } else {
+ // Start new
+ mViewModel.clearPreviousSessions();
+ codMdep = this.askDeposito();
+ }
+ } else {
+ //Clear to be sure everything is clean
+ mViewModel.clearPreviousSessions();
+ codMdep = this.askDeposito();
+ }
+ } catch (Exception e) {
+ this.onError(e);
+ }
+
+ if (codMdep == null) {
+ popMe();
+ return;
+ }
+
+
+ try {
+ this.onLoadingStarted();
+ mViewModel.loadDeposito(codMdep);
+
+ if (!recoveredSession) mViewModel.createNew(codMdep);
+
+ this.onLoadingEnded();
+ } catch (Exception e) {
+ this.onError(e);
+ popMe();
+ }
+
+ this.initRecyclerView();
+ this.initBarcodeReader();
+
+
+ this.onLoadingStarted();
+ executorService.execute(() -> {
+ mViewModel.randomizeElements(2000);
+ this.onLoadingEnded();
+ });
+ });
+ }
+
+ private boolean askToRecoverPrevious() throws InterruptedException {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ AtomicReference response = new AtomicReference<>();
+
+ DialogYesNoView.newInstance("Recupero verifica", "Vuoi recuperare la verifica precedente?", result -> {
+ response.set(result == DialogConsts.Results.YES);
+ countDownLatch.countDown();
+ })
+ .show(getChildFragmentManager(), "ask-recover");
+
+ countDownLatch.await();
+ return response.get();
+ }
+
+ private String askDeposito() throws InterruptedException {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ AtomicReference codMdepAtomic = new AtomicReference<>();
+
+
+ DialogAskDepositoView.newInstance(codMdep -> {
+ codMdepAtomic.set(codMdep);
+ countDownLatch.countDown();
+ })
+ .show(getChildFragmentManager(), "ask-deposito");
+
+ countDownLatch.await();
+ return codMdepAtomic.get();
+ }
+
+
+ private void initRecyclerView() {
+ var itemType = new Type(R.layout.lista_verifica_giacenze_picked_item_list_model, BR.item);
+
+ itemType.areItemSame((item1, item2) -> item1.getId().equals(item2.getId()));
+ itemType.areContentsTheSame(VerificaGiacenzeRowEntity::equals);
+ itemType.onClick(x -> {
+ openItemAction(x.getBinding().getItem());
+ return null;
+ });
+
+ handler.post(() -> {
+ new LiveAdapter(mViewModel.getCurrentVerificaRows(), this)
+ .map(VerificaGiacenzeRowEntity.class, itemType)
+ .onNoData(isNoData -> {
+ this.mBindings.verificaGiacenzeList.setVisibility(isNoData ? View.GONE : View.VISIBLE);
+ this.mBindings.emptyView.setVisibility(isNoData ? View.VISIBLE : View.GONE);
+
+ return null;
+ })
+ .into(this.mBindings.verificaGiacenzeList);
+ });
+ }
+
+ private void initBarcodeReader() {
+ barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessful(onScanSuccessful)
+ .setOnScanFailed(ex -> UtilityExceptions.defaultException(requireContext(), ex, false)));
+ }
+
+ private final RunnableArgs onScanSuccessful = data -> {
+ this.onLoadingStarted();
+
+ executorService.execute(() -> {
+ try {
+ this.mViewModel.processBarcodeDTO(data);
+ this.onLoadingEnded();
+ } catch (Exception e) {
+ this.onError(e);
+ }
+ });
+
+ };
+
+
+ private void openItemAction(VerificaGiacenzeRowEntity item) {
+ var anagrafica = mViewModel.searchAnagraficaByCodMart(item.getCodMart());
+
+ var inputData = new BottomSheetItemDTO()
+ .setOriginalItem(item)
+ .setCodMart(item.getCodMart())
+ .setPartitaMag(item.getPartitaMag())
+ .setDescrizione(item.getDescrizione())
+ .setQta(item.getQta())
+ .setNumCnf(item.getNumConf())
+ .setUntMis(anagrafica.getUntMis());
+
+ new BottomSheetItemEditView(inputData)
+ .setListener(this)
+ .show(getParentFragmentManager(), "bottom-item-actions");
+ }
+
+ @Override
+ public void onItemEditRequest(VerificaGiacenzeRowEntity item) {
+ var anagrafica = mViewModel.searchAnagraficaByCodMart(item.getCodMart());
+
+ executorService.execute(() -> {
+ try {
+ mViewModel.loadArticolo(anagrafica);
+ } catch (Exception ex) {
+ onError(ex);
+ }
+ });
+ }
+
+ @Override
+ public void onItemDeleteRequest(VerificaGiacenzeRowEntity data) {
+ mViewModel.deleteRow(data);
+ }
+
+
+ public PickedQuantityDTO onItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal inWarehouseNumCnf,
+ BigDecimal inWarehouseQtaTot,
+ BigDecimal incomingNumCnf,
+ BigDecimal incomingQtaTot,
+ String partitaMag,
+ LocalDate dataScad) {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ AtomicReference result = new AtomicReference<>();
+
+ DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
+ .setMtbAart(mtbAart)
+ .setInitialNumCnf(initialNumCnf)
+ .setInitialQtaCnf(initialQtaCnf)
+ .setInitialQtaTot(initialQtaTot)
+ .setTotalNumCnfInWarehouse(inWarehouseNumCnf)
+ .setTotalQtaInWarehouse(inWarehouseQtaTot)
+ .setTotalQtaOrd(incomingQtaTot)
+ .setTotalNumCnfOrd(incomingNumCnf)
+ .setPartitaMag(partitaMag)
+ .setDataScad(dataScad)
+ .setCanLUBeClosed(false);
+
+ if (!dialogInputQuantityV2View.isVisible())
+ handler.post(() -> {
+ dialogInputQuantityV2View
+ .setDialogInputQuantityV2DTO(dialogInputQuantityV2DTO)
+ .setOnComplete((resultDTO, shouldCloseLU) -> {
+
+ PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
+ .setNumCnf(resultDTO.getNumCnf())
+ .setQtaCnf(resultDTO.getQtaCnf())
+ .setQtaTot(resultDTO.getQtaTot())
+ .setPartitaMag(resultDTO.getPartitaMag())
+ .setDataScad(resultDTO.getDataScad());
+
+ result.set(pickedQuantityDTO);
+ countDownLatch.countDown();
+
+ })
+ .setOnAbort(() -> {
+ result.set(null);
+ countDownLatch.countDown();
+ })
+ .show(requireActivity().getSupportFragmentManager(), "tag");
+ });
+
+ try {
+ countDownLatch.await();
+ } catch (InterruptedException e) {
+ this.onError(e);
+ }
+ return result.get();
+ }
+
+ public void saveAndClose() {
+ this.onLoadingStarted();
+
+ executorService.execute(() -> {
+ try {
+ mViewModel.save();
+ this.onLoadingEnded();
+
+ popMe();
+ } catch (Exception e) {
+ this.onError(e);
+ }
+ });
+ }
+
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+
+ BarcodeManager.removeCallback(barcodeScannerIstanceID);
+ }
+
+ @Override
+ public void onCreateActionBar(AppCompatTextView titleText, Context context) {
+ titleText.setText(R.string.verifica_giacenze_menu);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeModule.java
new file mode 100644
index 00000000..72d23a34
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeModule.java
@@ -0,0 +1,23 @@
+package it.integry.integrywmsnative.gest.pv_verifica_giacenze;
+
+import android.os.Handler;
+
+import java.util.concurrent.ExecutorService;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
+
+@Module(subcomponents = VerificaGiacenzeComponent.class)
+public class VerificaGiacenzeModule {
+
+ @Provides
+ VerificaGiacenzeViewModel providesVerificaGiacenzeViewModel(ExecutorService executorService, Handler handler, VerificaGiacenzeMapper verificaGiacenzeMapper, VerificaGiacenzeRepository verificaGiacenzeRepository, VerificaGiacenzeRowRepository verificaGiacenzeRowRepository, GiacenzaPvRESTConsumer giacenzaPvRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
+ return new VerificaGiacenzeViewModel(executorService, handler, verificaGiacenzeMapper, giacenzaPvRESTConsumer, verificaGiacenzeRepository, verificaGiacenzeRowRepository, articoloRESTConsumer);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java
new file mode 100644
index 00000000..7433c52b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_verifica_giacenze/VerificaGiacenzeViewModel.java
@@ -0,0 +1,377 @@
+package it.integry.integrywmsnative.gest.pv_verifica_giacenze;
+
+import android.os.Handler;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.ExecutorService;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
+import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
+import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
+import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
+import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
+import it.integry.integrywmsnative.core.model.MtbAart;
+import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
+import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
+import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
+import it.integry.integrywmsnative.core.rest.model.pv.GiacenzaPvDTO;
+import it.integry.integrywmsnative.core.rest.model.pv.SaveNewVerificaRequestDTO;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
+import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
+
+public class VerificaGiacenzeViewModel {
+
+ private final ExecutorService executorService;
+ private final Handler handler;
+ private final VerificaGiacenzeMapper verificaGiacenzeMapper;
+ private final GiacenzaPvRESTConsumer giacenzaPvRESTConsumer;
+ private final VerificaGiacenzeRepository verificaGiacenzeRepository;
+ private final VerificaGiacenzeRowRepository verificaGiacenzeRowRepository;
+ private final ArticoloRESTConsumer articoloRESTConsumer;
+
+ private Listener listener;
+
+ private MutableLiveData currentVerifica = new MutableLiveData<>();
+ private final MutableLiveData> currentVerificaRows = new MutableLiveData<>(new ArrayList<>());
+
+ private List currentLoadedGiacenza = null;
+ private List currentLoadedAnagrafiche = null;
+
+ @Inject
+ public VerificaGiacenzeViewModel(ExecutorService executorService,
+ Handler handler,
+ VerificaGiacenzeMapper verificaGiacenzeMapper,
+ GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
+ VerificaGiacenzeRepository verificaGiacenzeRepository,
+ VerificaGiacenzeRowRepository verificaGiacenzeRowRepository,
+ ArticoloRESTConsumer articoloRESTConsumer) {
+ this.executorService = executorService;
+ this.handler = handler;
+ this.verificaGiacenzeMapper = verificaGiacenzeMapper;
+ this.giacenzaPvRESTConsumer = giacenzaPvRESTConsumer;
+ this.verificaGiacenzeRepository = verificaGiacenzeRepository;
+ this.verificaGiacenzeRowRepository = verificaGiacenzeRowRepository;
+ this.articoloRESTConsumer = articoloRESTConsumer;
+ }
+
+ public boolean isAnotherVerificaGiacenzeInProgress() {
+ return verificaGiacenzeRepository.isAnotherVerificaGiacenzeInProgress(5);
+ }
+
+ public void clearPreviousSessions() {
+ verificaGiacenzeRepository.clearPreviousSessions();
+ }
+
+ public void delete() {
+ verificaGiacenzeRepository.delete(currentVerifica.getValue());
+
+ currentVerifica.postValue(null);
+ currentVerificaRows.postValue(new ArrayList<>());
+
+ currentLoadedGiacenza = null;
+ currentLoadedAnagrafiche = null;
+ }
+
+ public LiveData getCurrentVerifica() {
+ return currentVerifica;
+ }
+
+ public LiveData> getCurrentVerificaRows() {
+ return currentVerificaRows;
+ }
+
+ public void loadDeposito(String codMdep) throws Exception {
+ currentLoadedGiacenza = this.giacenzaPvRESTConsumer.retrieveGiacenzeSynchronized(codMdep);
+
+ if (currentLoadedGiacenza == null) {
+ throw new Exception("Errore nel recupero delle giacenze");
+ }
+
+ var codMartsToRetrieve = currentLoadedGiacenza.parallelStream()
+ .map(GiacenzaPvDTO::getCodMart)
+ .collect(Collectors.toUnmodifiableList());
+
+ currentLoadedAnagrafiche = this.articoloRESTConsumer.getByCodMartsSynchronized(codMartsToRetrieve);
+
+ if (currentLoadedAnagrafiche == null) {
+ throw new Exception("Errore nel recupero delle anagrafiche");
+ }
+
+ currentLoadedAnagrafiche.forEach(x -> x.setFlagTracciabilita("N"));
+ }
+
+ public void randomizeElements(int elementsCount) {
+
+ for(int i = 0; i < elementsCount; i++) {
+ var randomIndex = (int) (Math.random() * currentLoadedAnagrafiche.size());
+ var randomAnagrafica = currentLoadedAnagrafiche.get(randomIndex);
+
+ var foundGiacenza = currentLoadedGiacenza.parallelStream()
+ .filter(x -> x.getCodMart().equalsIgnoreCase(randomAnagrafica.getCodMart()))
+ .findFirst()
+ .orElse(null);
+ var qtaGiacenza = foundGiacenza != null ? foundGiacenza.getQtaInv() : BigDecimal.ZERO;
+
+ var rowToInsert = new VerificaGiacenzeRowEntity();
+ rowToInsert.setParentId(currentVerifica.getValue().getId());
+ rowToInsert.setCodMart(randomAnagrafica.getCodMart());
+ rowToInsert.setDescrizione(randomAnagrafica.getDescrizione());
+ rowToInsert.setScanCodBarre(randomAnagrafica.getBarCode());
+ rowToInsert.setNumConf(BigDecimal.valueOf((int) (Math.random() * 100)));
+ rowToInsert.setQtaConf(randomAnagrafica.getQtaCnf());
+ rowToInsert.setQta(UtilityBigDecimal.multiply(rowToInsert.getNumConf(), randomAnagrafica.getQtaCnf()));
+ rowToInsert.setQtaInGiacenza(qtaGiacenza);
+
+
+ insertRow(rowToInsert);
+
+ try {
+ Thread.sleep(50);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ }
+
+ public void createNew(String codMdep) {
+ var verificaGiacenzeEntity = new VerificaGiacenzeEntity();
+ verificaGiacenzeEntity.setCodMdep(codMdep);
+ verificaGiacenzeEntity.setData(LocalDateTime.now());
+ verificaGiacenzeEntity.setVerificaGiacenzeRowList(new ArrayList<>());
+
+ verificaGiacenzeRepository.insert(verificaGiacenzeEntity);
+ currentVerifica.postValue(verificaGiacenzeEntity);
+ }
+
+ public VerificaGiacenzeEntity recoverLast() {
+ var entity = verificaGiacenzeRepository.retrieveLast();
+ currentVerifica.postValue(entity);
+ currentVerificaRows.postValue(entity.getVerificaGiacenzeRowList());
+
+ return entity;
+ }
+
+
+ public void save() throws Exception {
+ if(currentVerificaRows.getValue().isEmpty()) {
+ delete();
+ return;
+ }
+
+ currentVerifica.getValue().setVerificaGiacenzeRowList(currentVerificaRows.getValue());
+
+ SaveNewVerificaRequestDTO saveRequest = new SaveNewVerificaRequestDTO()
+ .setData(verificaGiacenzeMapper.mapRoomToRest(currentVerifica.getValue()));
+
+ giacenzaPvRESTConsumer.saveNewVerificaSynchronized(saveRequest);
+
+ delete();
+ }
+
+ public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) throws Exception {
+
+ if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
+ var ean13 = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
+ this.loadArticolo(ean13.getPrecode());
+
+ } else {
+ this.loadArticolo(barcodeScanDTO.getStringValue());
+ }
+ }
+
+
+ private void loadArticolo(String barcodeProd) throws NoArtsFoundException, CloneNotSupportedException {
+ var foundMtbAart = searchAnagraficaByBarcode(barcodeProd);
+
+ if (foundMtbAart == null)
+ throw new NoArtsFoundException();
+
+ loadArticolo(foundMtbAart);
+ }
+
+ public void loadArticolo(MtbAart mtbAart) throws NoArtsFoundException, CloneNotSupportedException {
+ var foundGiacenza = currentLoadedGiacenza.parallelStream()
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
+ .findFirst()
+ .orElse(null);
+
+ var numCnfGiacenza = foundGiacenza != null ? UtilityBigDecimal.divide(foundGiacenza.getQtaInv(), mtbAart.getQtaCnf()) : BigDecimal.ZERO;
+ var qtaCnfGiacenza = mtbAart.getQtaCnf();
+ var qtaGiacenza = foundGiacenza != null ? foundGiacenza.getQtaInv() : BigDecimal.ZERO;
+
+
+ var incomingNumCnf = foundGiacenza != null && foundGiacenza.getIncomingStock() != null ? UtilityBigDecimal.divide(foundGiacenza.getIncomingStock(), mtbAart.getQtaCnf()) : null;
+ var incomingQta = foundGiacenza != null && foundGiacenza.getIncomingStock() != null ? foundGiacenza.getIncomingStock() : null;
+
+ var initialNumCnf = BigDecimal.ZERO;
+ var initialQtaTot = BigDecimal.ZERO;
+
+ boolean isNewRow = false;
+
+ var rowToSave = currentVerificaRows.getValue().parallelStream()
+ .filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
+ .findFirst()
+ .orElse(null);
+
+ if (rowToSave == null) {
+ isNewRow = true;
+
+ rowToSave = new VerificaGiacenzeRowEntity();
+ rowToSave.setParentId(currentVerifica.getValue().getId());
+ rowToSave.setCodMart(mtbAart.getCodMart());
+ rowToSave.setPartitaMag(null);
+ rowToSave.setDescrizione(mtbAart.getDescrizione());
+ rowToSave.setScanCodBarre(mtbAart.getBarCode());
+ } else {
+ rowToSave = rowToSave.clone();
+ initialNumCnf = rowToSave.getNumConf();
+ initialQtaTot = rowToSave.getQta();
+ }
+
+ var pickedQuantity = this.sendOnItemDispatched(mtbAart,
+ initialNumCnf,
+ qtaCnfGiacenza,
+ initialQtaTot,
+ numCnfGiacenza,
+ qtaGiacenza,
+ incomingNumCnf,
+ incomingQta,
+ null,
+ null
+ );
+
+ if (pickedQuantity == null)
+ return;
+
+
+ rowToSave.setNumConf(pickedQuantity.getNumCnf());
+ rowToSave.setQtaConf(pickedQuantity.getQtaCnf());
+ rowToSave.setQta(pickedQuantity.getQtaTot());
+ rowToSave.setQtaInGiacenza(qtaGiacenza);
+
+ if (isNewRow) {
+ insertRow(rowToSave);
+ } else {
+ updateRow(rowToSave);
+ }
+
+ }
+
+ public MtbAart searchAnagraficaByCodMart(String codMart) {
+ return currentLoadedAnagrafiche.parallelStream()
+ .filter(mtbAart -> codMart.equalsIgnoreCase(mtbAart.getCodMart()))
+ .findFirst()
+ .orElse(null);
+ }
+
+ public MtbAart searchAnagraficaByBarcode(String barcode) {
+ return currentLoadedAnagrafiche.parallelStream()
+ .filter(mtbAart -> barcode.equals(mtbAart.getBarCode()))
+ .findFirst()
+ .orElse(null);
+ }
+
+ public void insertRow(VerificaGiacenzeRowEntity rowEntity) {
+ verificaGiacenzeRowRepository.insert(rowEntity, insertedData -> {
+ handler.post(() -> {
+ currentVerificaRows.getValue().add(insertedData);
+ notifyRowChanged();
+ });
+ }, this::sendError);
+ }
+
+ public void updateRow(VerificaGiacenzeRowEntity rowEntity) {
+ var indexInList = -1;
+
+ List value = currentVerificaRows.getValue();
+ for (int i = 0; i < value.size(); i++) {
+ VerificaGiacenzeRowEntity entity = value.get(i);
+
+ if (Objects.equals(entity.getId(), rowEntity.getId())) {
+ indexInList = i;
+ break;
+ }
+ }
+
+ int finalIndexInList = indexInList;
+ verificaGiacenzeRowRepository.update(rowEntity, updatedData -> {
+ handler.post(() -> {
+ currentVerificaRows.getValue().set(finalIndexInList, updatedData);
+ notifyRowChanged();
+ });
+ }, this::sendError);
+ }
+
+ public void deleteRow(VerificaGiacenzeRowEntity rowEntity) {
+ verificaGiacenzeRowRepository.delete(rowEntity, () -> {
+
+ handler.post(() -> {
+ currentVerificaRows.getValue().remove(rowEntity);
+ notifyRowChanged();
+ });
+
+ }, this::sendError);
+ }
+
+ private void notifyRowChanged() {
+ currentVerificaRows.postValue(currentVerificaRows.getValue());
+ }
+
+ private PickedQuantityDTO sendOnItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal inWarehouseNumCnf,
+ BigDecimal inWarehouseQtaTot,
+ BigDecimal incomingNumCnf,
+ BigDecimal incomingQtaTot,
+ String partitaMag,
+ LocalDate dataScad) {
+ if (listener != null)
+ return this.listener.onItemDispatched(mtbAart,
+ initialNumCnf, initialQtaCnf, initialQtaTot,
+ inWarehouseNumCnf, inWarehouseQtaTot,
+ incomingNumCnf, incomingQtaTot,
+ partitaMag, dataScad);
+ return null;
+ }
+
+ public void setListener(Listener listener) {
+ this.listener = listener;
+ }
+
+ private void sendError(Exception ex) {
+ if (listener != null)
+ this.listener.onError(ex);
+ }
+
+ public interface Listener {
+ PickedQuantityDTO onItemDispatched(MtbAart mtbAart,
+ BigDecimal initialNumCnf,
+ BigDecimal initialQtaCnf,
+ BigDecimal initialQtaTot,
+ BigDecimal inWarehouseNumCnf,
+ BigDecimal inWarehouseQtaTot,
+ BigDecimal incomingNumCnf,
+ BigDecimal incomingQtaTot,
+ String partitaMag,
+ LocalDate dataScad);
+
+ void onError(Exception ex);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
index 0cbaddc5..0bea993f 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
@@ -22,7 +22,7 @@ import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.exception.EmptyLUException;
-import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepLUException;
import it.integry.integrywmsnative.core.exception.InvalidLUException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
@@ -576,7 +576,7 @@ public class SpedizioneViewModel {
if (codMdepIsValid) {
this.createNewLU(null, null, () -> searchArtFromUL(mtbColt, onComplete));
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}
@@ -621,7 +621,7 @@ public class SpedizioneViewModel {
if (codMdepIsValid) {
this.searchArtFromUL(mtbColt, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
} else {
this.sendError(new EmptyLUException());
@@ -644,7 +644,7 @@ public class SpedizioneViewModel {
if (codMdepIsValid) {
searchArtFromUL(mtbColt, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
} else {
this.sendError(new InvalidLUException());
diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java
index 62d37e55..82389768 100644
--- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceViewModel.java
@@ -14,7 +14,7 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
-import it.integry.integrywmsnative.core.exception.InvalidCodMdepException;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepLUException;
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
import it.integry.integrywmsnative.core.exception.NoArtsInLUException;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
@@ -141,7 +141,7 @@ public class VersamentoMerceViewModel {
if (codMdepIsValid) {
pickMerceULtoUL(mtbColt, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}, this::sendError);
} else {
@@ -198,7 +198,7 @@ public class VersamentoMerceViewModel {
if (codMdepIsValid) {
pickMerceULtoUL(mtbColt, onComplete);
- } else this.sendError(new InvalidCodMdepException());
+ } else this.sendError(new InvalidCodMdepLUException());
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemDTO.java
new file mode 100644
index 00000000..79b326e8
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemDTO.java
@@ -0,0 +1,79 @@
+package it.integry.integrywmsnative.view.bottom_sheet__item_edit;
+
+import java.math.BigDecimal;
+
+public class BottomSheetItemDTO {
+
+ private T originalItem;
+
+ private String codMart;
+ private String partitaMag;
+ private String descrizione;
+
+ private BigDecimal qta;
+ private BigDecimal numCnf;
+ private String untMis;
+
+ public T getOriginalItem() {
+ return originalItem;
+ }
+
+ public BottomSheetItemDTO setOriginalItem(T originalItem) {
+ this.originalItem = originalItem;
+ return this;
+ }
+
+ public String getCodMart() {
+ return codMart;
+ }
+
+ public BottomSheetItemDTO setCodMart(String codMart) {
+ this.codMart = codMart;
+ return this;
+ }
+
+ public String getPartitaMag() {
+ return partitaMag;
+ }
+
+ public BottomSheetItemDTO setPartitaMag(String partitaMag) {
+ this.partitaMag = partitaMag;
+ return this;
+ }
+
+ public String getDescrizione() {
+ return descrizione;
+ }
+
+ public BottomSheetItemDTO setDescrizione(String descrizione) {
+ this.descrizione = descrizione;
+ return this;
+ }
+
+ public BigDecimal getQta() {
+ return qta;
+ }
+
+ public BottomSheetItemDTO setQta(BigDecimal qta) {
+ this.qta = qta;
+ return this;
+ }
+
+ public BigDecimal getNumCnf() {
+ return numCnf;
+ }
+
+ public BottomSheetItemDTO setNumCnf(BigDecimal numCnf) {
+ this.numCnf = numCnf;
+ return this;
+ }
+
+ public String getUntMis() {
+ return untMis;
+ }
+
+ public BottomSheetItemDTO setUntMis(String untMis) {
+ this.untMis = untMis;
+ return this;
+ }
+}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditDTO.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditDTO.java
deleted file mode 100644
index 3d07199b..00000000
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditDTO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package it.integry.integrywmsnative.view.bottom_sheet__item_edit;
-
-import java.math.BigDecimal;
-
-public class BottomSheetItemEditDTO {
-
- private String codMart;
- private String descrizioneArticolo;
-
- private BigDecimal qta;
- private BigDecimal numCnf;
- private String untMis;
-
- public String getCodMart() {
- return codMart;
- }
-
- public BottomSheetItemEditDTO setCodMart(String codMart) {
- this.codMart = codMart;
- return this;
- }
-
- public String getDescrizioneArticolo() {
- return descrizioneArticolo;
- }
-
- public BottomSheetItemEditDTO setDescrizioneArticolo(String descrizioneArticolo) {
- this.descrizioneArticolo = descrizioneArticolo;
- return this;
- }
-
- public BigDecimal getQta() {
- return qta;
- }
-
- public BottomSheetItemEditDTO setQta(BigDecimal qta) {
- this.qta = qta;
- return this;
- }
-
- public BigDecimal getNumCnf() {
- return numCnf;
- }
-
- public BottomSheetItemEditDTO setNumCnf(BigDecimal numCnf) {
- this.numCnf = numCnf;
- return this;
- }
-
- public String getUntMis() {
- return untMis;
- }
-
- public BottomSheetItemEditDTO setUntMis(String untMis) {
- this.untMis = untMis;
- return this;
- }
-}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditView.java
index cfd2ca9c..df4a45b6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditView.java
@@ -1,18 +1,22 @@
package it.integry.integrywmsnative.view.bottom_sheet__item_edit;
-import android.content.Context;
-import android.util.AttributeSet;
+import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.databinding.ObservableField;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
+
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.databinding.BottomSheetItemEditViewBinding;
-import it.integry.integrywmsnative.view.bottom_sheet__base.BottomSheetFragmentBaseView;
-public class BottomSheetItemEditView extends BottomSheetFragmentBaseView {
+public class BottomSheetItemEditView extends BottomSheetDialogFragment {
@Inject
@@ -21,33 +25,41 @@ public class BottomSheetItemEditView extends BottomSheetFragmentBaseView {
public ObservableField enabledEditButton = new ObservableField<>(true);
public ObservableField enabledDeleteButton = new ObservableField<>(true);
- private final BottomSheetItemEditViewBinding mBinding;
+ private BottomSheetItemEditViewBinding mBinding;
private Listener mListener;
- public BottomSheetItemEditView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mBinding = BottomSheetItemEditViewBinding.inflate(LayoutInflater.from(context), this, true);
+ private final BottomSheetItemDTO> itemData;
+
+ public BottomSheetItemEditView(BottomSheetItemDTO> itemData) {
+ this.itemData = itemData;
+ }
+
+
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
MainApplication.appComponent
.bottomSheetItemEditComponent()
.create()
.inject(this);
-
-
- mBinding.setViewModel(mViewModel);
- mBinding.setView(this);
+ mViewModel.init(this.itemData);
}
- public BottomSheetItemEditView setItem(BottomSheetItemEditDTO item) {
- this.mBinding.invalidateAll();
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ mBinding = BottomSheetItemEditViewBinding.inflate(inflater, container, true);
- this.mViewModel.init(item);
+ mBinding.setLifecycleOwner(this);
+ mBinding.setView(this);
+ mBinding.setViewModel(mViewModel);
- this.mBinding.executePendingBindings();
- this.parentView.requestLayout();
+ mBinding.executePendingBindings();
- return this;
+ return mBinding.getRoot();
}
public BottomSheetItemEditView enableEditButton() {
@@ -73,36 +85,24 @@ public class BottomSheetItemEditView extends BottomSheetFragmentBaseView {
public void editItem() {
- if(this.mListener != null) this.mListener.onItemEdit();
- this.collapse();
+ if(this.mListener != null) this.mListener.onItemEditRequest(itemData.getOriginalItem());
+ this.dismiss();
}
public void deleteItem() {
- if(this.mListener != null) this.mListener.onItemDelete();
- this.collapse();
+ if(this.mListener != null) this.mListener.onItemDeleteRequest(itemData.getOriginalItem());
+ this.dismiss();
}
-
- @Override
- protected void onStateChangedCallback(State newState) {
- if(newState == State.COLLAPSED) this.mViewModel.init(null);
- }
-
- @Override
- protected void onSlideCallback(float slideOffset) {
-
- }
-
-
- public BottomSheetItemEditView setListener(Listener listener) {
+ public BottomSheetItemEditView setListener(Listener> listener) {
this.mListener = listener;
return this;
}
- public interface Listener {
- void onItemEdit();
+ public interface Listener {
+ void onItemEditRequest(U data);
- void onItemDelete();
+ void onItemDeleteRequest(U data);
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditViewModel.java
index 0b7395b6..cdfac6e5 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditViewModel.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__item_edit/BottomSheetItemEditViewModel.java
@@ -4,13 +4,13 @@ import androidx.lifecycle.MutableLiveData;
public class BottomSheetItemEditViewModel {
- private final MutableLiveData mCurrentItem = new MutableLiveData<>();
+ private final MutableLiveData> mCurrentItem = new MutableLiveData<>();
- public void init(BottomSheetItemEditDTO item) {
+ public void init(BottomSheetItemDTO> item) {
this.mCurrentItem.postValue(item);
}
- public MutableLiveData getCurrentItem() {
+ public MutableLiveData> getCurrentItem() {
return mCurrentItem;
}
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditModalView.java b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditModalView.java
index 18bd078c..38a6b5c6 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditModalView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__mtb_colr_edit/BottomSheetMtbColrEditModalView.java
@@ -35,6 +35,8 @@ public class BottomSheetMtbColrEditModalView extends BottomSheetDialogFragment {
}
+
+
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -103,4 +105,78 @@ public class BottomSheetMtbColrEditModalView extends BottomSheetDialogFragment {
void onMtbColrDelete(MtbColr mtbColr);
}
+
+// public static class Data {
+// private T originalItem;
+// private String codMart;
+// private String partitaMag;
+// private String descrizione;
+// private String untMis;
+//
+// private BigDecimal qta;
+// private BigDecimal numCnf;
+//
+// public T getOriginalItem() {
+// return originalItem;
+// }
+//
+// public Data setOriginalItem(T originalItem) {
+// this.originalItem = originalItem;
+// return this;
+// }
+//
+// public String getCodMart() {
+// return codMart;
+// }
+//
+// public Data setCodMart(String codMart) {
+// this.codMart = codMart;
+// return this;
+// }
+//
+// public String getPartitaMag() {
+// return partitaMag;
+// }
+//
+// public Data setPartitaMag(String partitaMag) {
+// this.partitaMag = partitaMag;
+// return this;
+// }
+//
+// public String getDescrizione() {
+// return descrizione;
+// }
+//
+// public Data setDescrizione(String descrizione) {
+// this.descrizione = descrizione;
+// return this;
+// }
+//
+// public String getUntMis() {
+// return untMis;
+// }
+//
+// public Data setUntMis(String untMis) {
+// this.untMis = untMis;
+// return this;
+// }
+//
+// public BigDecimal getQta() {
+// return qta;
+// }
+//
+// public Data setQta(BigDecimal qta) {
+// this.qta = qta;
+// return this;
+// }
+//
+// public BigDecimal getNumCnf() {
+// return numCnf;
+// }
+//
+// public Data setNumCnf(BigDecimal numCnf) {
+// this.numCnf = numCnf;
+// return this;
+// }
+// }
}
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoComponent.java
new file mode 100644
index 00000000..523ef83d
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.ask_deposito;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface DialogAskDepositoComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ DialogAskDepositoComponent create();
+ }
+
+ void inject(DialogAskDepositoView dialogAskDepositoView);
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoModule.java
new file mode 100644
index 00000000..6f071a8c
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoModule.java
@@ -0,0 +1,17 @@
+package it.integry.integrywmsnative.view.dialogs.ask_deposito;
+
+import android.os.Handler;
+
+import dagger.Module;
+import dagger.Provides;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+
+@Module(subcomponents = DialogAskDepositoComponent.class)
+public class DialogAskDepositoModule {
+
+ @Provides
+ DialogAskDepositoViewModel providesDialogAskDepositoViewModel(Handler handler, BarcodeRESTConsumer barcodeRESTConsumer) {
+ return new DialogAskDepositoViewModel(handler, barcodeRESTConsumer);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoView.java
new file mode 100644
index 00000000..664a97dd
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoView.java
@@ -0,0 +1,126 @@
+package it.integry.integrywmsnative.view.dialogs.ask_deposito;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
+import java.util.concurrent.ExecutorService;
+
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+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.expansion.BaseDialogFragment;
+import it.integry.integrywmsnative.core.expansion.RunnableArgs;
+import it.integry.integrywmsnative.databinding.DialogAskDepositoBinding;
+
+public class DialogAskDepositoView extends BaseDialogFragment implements DialogAskDepositoViewModel.Listener {
+
+
+ @Inject
+ DialogAskDepositoViewModel mViewModel;
+
+ @Inject
+ ExecutorService executorService;
+
+ private DialogAskDepositoBinding mBindings;
+ private Context mContext;
+
+ private int mBarcodeScannerIstanceID;
+
+ private final RunnableArgs onComplete;
+
+ //Pass here all external parameters
+ public static DialogAskDepositoView newInstance(RunnableArgs onComplete) {
+ return new DialogAskDepositoView(onComplete);
+ }
+
+ private DialogAskDepositoView(RunnableArgs onComplete) {
+ super();
+ this.onComplete = onComplete;
+
+ MainApplication.appComponent
+ .dialogAskDepositoComponent()
+ .create()
+ .inject(this);
+ }
+
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ this.mContext = requireContext();
+
+ mBindings = DialogAskDepositoBinding.inflate(LayoutInflater.from(this.mContext), null, false);
+ mBindings.setLifecycleOwner(this);
+
+ setCancelable(true);
+
+ var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
+ .setView(mBindings.getRoot())
+ .setCancelable(isCancelable())
+ .setNeutralButton(R.string.abort, null)
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(isCancelable());
+ alertDialog.setOnShowListener(this);
+ return alertDialog;
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ this.initBarcode();
+ mViewModel.setListener(this);
+ }
+
+ @Override
+ public void onDismiss(@NonNull DialogInterface dialog) {
+ super.onDismiss(dialog);
+ BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
+
+ if (onComplete != null) onComplete.run(mViewModel.getCodMdep().getValue());
+ }
+
+ @Override
+ public void dismiss() {
+ if (getDialog() != null) getDialog().dismiss();
+ }
+
+
+ private void initBarcode() {
+ mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
+ .setOnScanSuccessful(onScanSuccessful)
+ .setOnScanFailed(this::onError));
+ }
+
+
+ private final RunnableArgs onScanSuccessful = data -> {
+ this.onLoadingStarted();
+
+ executorService.execute(() -> {
+ try {
+ this.mViewModel.processBarcodeDTO(data);
+ this.onLoadingEnded();
+ } catch (Exception e) {
+ this.onError(e);
+ }
+ });
+ };
+
+ @Override
+ public void onDepositoLoaded() {
+ dismiss();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoViewModel.java
new file mode 100644
index 00000000..79e79f35
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_deposito/DialogAskDepositoViewModel.java
@@ -0,0 +1,78 @@
+package it.integry.integrywmsnative.view.dialogs.ask_deposito;
+
+import android.os.Handler;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+
+import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
+import it.integry.integrywmsnative.core.exception.InvalidCodMdepBarcodeException;
+import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
+import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.core.utility.UtilityString;
+
+public class DialogAskDepositoViewModel {
+
+ Handler handler;
+ BarcodeRESTConsumer barcodeRESTConsumer;
+
+ private MutableLiveData codMdep = new MutableLiveData<>();
+ private Listener listener;
+
+ public DialogAskDepositoViewModel(Handler handler, BarcodeRESTConsumer barcodeRESTConsumer) {
+ this.handler = handler;
+ this.barcodeRESTConsumer = barcodeRESTConsumer;
+ }
+
+ public LiveData getCodMdep() {
+ return codMdep;
+ }
+
+ public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO) throws Exception {
+ if (UtilityBarcode.isEan128(barcodeScanDTO)) {
+ this.executeEtichettaEan128(barcodeScanDTO);
+ } else
+ throw new NoResultFromBarcodeException(barcodeScanDTO.getStringValue());
+
+
+ }
+
+ private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO) throws Exception {
+ var ean128Model = barcodeRESTConsumer.decodeEan128Synchronized(barcodeScanDTO);
+
+ if (UtilityString.isNullOrEmpty(ean128Model.Internal4)) {
+ throw new InvalidCodMdepBarcodeException(barcodeScanDTO.getStringValue());
+ }
+
+// AvailableCodMdepsDTO availableCodMdepsDTO = SettingsManager.iDB().getAvailableCodMdep().stream()
+// .filter(x -> x.getCodMdep().equalsIgnoreCase(ean128Model.Internal4))
+// .findFirst()
+// .orElse(null);
+//
+// if (availableCodMdepsDTO == null) {
+// throw new InvalidCodMdepBarcodeException(barcodeScanDTO.getStringValue());
+// }
+
+ handler.post(() -> {
+ this.codMdep.setValue(ean128Model.Internal4);
+ this.sendOnDepositoLoaded();
+ });
+ }
+
+ private void sendOnDepositoLoaded() {
+ if (listener != null) {
+ listener.onDepositoLoaded();
+ }
+ }
+
+ public void setListener(Listener listener) {
+ this.listener = listener;
+ }
+
+ public interface Listener {
+
+ void onDepositoLoaded();
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoComponent.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoComponent.java
new file mode 100644
index 00000000..2a360a2b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoComponent.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.extra_info;
+
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface DialogExtraInfoComponent {
+
+ @Subcomponent.Factory
+ interface Factory {
+ DialogExtraInfoComponent create();
+ }
+
+ void inject(DialogExtraInfoView dialogExtraInfoView);
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoModule.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoModule.java
new file mode 100644
index 00000000..13ae3fd7
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoModule.java
@@ -0,0 +1,14 @@
+package it.integry.integrywmsnative.view.dialogs.extra_info;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = DialogExtraInfoComponent.class)
+public class DialogExtraInfoModule {
+
+ @Provides
+ DialogExtraInfoViewModel providesDialogExtraInfoViewModel() {
+ return new DialogExtraInfoViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoView.java
new file mode 100644
index 00000000..d56209df
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoView.java
@@ -0,0 +1,96 @@
+package it.integry.integrywmsnative.view.dialogs.extra_info;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
+import javax.inject.Inject;
+
+import it.integry.barcode_base_android_library.model.BarcodeType;
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.R;
+import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
+import it.integry.integrywmsnative.core.settings.SettingsManager;
+import it.integry.integrywmsnative.core.utility.UtilityBarcode;
+import it.integry.integrywmsnative.databinding.DialogExtraInfoBinding;
+
+public class DialogExtraInfoView extends BaseDialogFragment {
+
+ @Inject
+ DialogExtraInfoViewModel mViewModel;
+
+ private DialogExtraInfoBinding mBindings;
+ private Context mContext;
+
+
+ private static final char FNC1 = 0x00f1;
+
+ //Pass here all external parameters
+ public static DialogExtraInfoView newInstance() {
+ return new DialogExtraInfoView();
+ }
+
+ private DialogExtraInfoView() {
+ super();
+
+ MainApplication.appComponent
+ .dialogExtraInfoComponent()
+ .create()
+ .inject(this);
+ }
+
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ this.mContext = requireContext();
+
+ mBindings = DialogExtraInfoBinding.inflate(LayoutInflater.from(this.mContext), null, false);
+ mBindings.setLifecycleOwner(this);
+
+ setCancelable(true);
+
+ var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
+ .setView(mBindings.getRoot())
+ .setCancelable(isCancelable())
+ .setNeutralButton(R.string.action_close, null)
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(isCancelable());
+ alertDialog.setOnShowListener(this);
+ return alertDialog;
+ }
+
+ @Override
+ public void dismiss() {
+ if (getDialog() != null) getDialog().dismiss();
+ }
+
+
+ @Override
+ public void onStart() {
+ super.onStart();
+
+ try {
+ this.initDepositBarcodeBitmap();
+ } catch (Exception e) {
+ this.onError(e);
+ }
+ }
+
+ private void initDepositBarcodeBitmap() throws Exception {
+ String currentCodMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
+ String barcode = "94" + currentCodMdep;
+
+ Bitmap barcodeBitmap = UtilityBarcode.generateBarcodeImage(barcode, BarcodeType.EAN128, 500, 170);
+ mBindings.barcodeCurrentDeposit.setImageBitmap(barcodeBitmap);
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoViewModel.java
new file mode 100644
index 00000000..454f6a7b
--- /dev/null
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/extra_info/DialogExtraInfoViewModel.java
@@ -0,0 +1,5 @@
+package it.integry.integrywmsnative.view.dialogs.extra_info;
+
+public class DialogExtraInfoViewModel {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
index 18ec6fff..8058efc9 100644
--- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
+++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
@@ -9,11 +9,12 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.annimon.stream.Stream;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.jetbrains.annotations.NotNull;
+import java.util.stream.Collectors;
+
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@@ -126,9 +127,9 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA
var filteredMtbColrList = mtbColrList;
if (mtbAart != null && filteredMtbColrList != null) {
- filteredMtbColrList = Stream.of(filteredMtbColrList)
+ filteredMtbColrList = filteredMtbColrList.stream()
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbAart.getCodMart()))
- .toList();
+ .collect(Collectors.toList());
}
if (filteredMtbColrList != null && filteredMtbColrList.size() > 1) {
diff --git a/app/src/main/res/drawable/ic_dashboard_verifica_giacenze.xml b/app/src/main/res/drawable/ic_dashboard_verifica_giacenze.xml
new file mode 100644
index 00000000..0a23e65c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_dashboard_verifica_giacenze.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_drawer_verifica_giacenze.xml b/app/src/main/res/drawable/ic_drawer_verifica_giacenze.xml
new file mode 100644
index 00000000..9384e402
--- /dev/null
+++ b/app/src/main/res/drawable/ic_drawer_verifica_giacenze.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/bottom_sheet__item_edit_view.xml b/app/src/main/res/layout/bottom_sheet__item_edit_view.xml
index 96e92a60..c77bfb53 100644
--- a/app/src/main/res/layout/bottom_sheet__item_edit_view.xml
+++ b/app/src/main/res/layout/bottom_sheet__item_edit_view.xml
@@ -51,7 +51,7 @@
android:maxLines="2"
android:paddingStart="0dp"
android:paddingEnd="8dp"
- android:text="@{viewModel.currentItem.descrizioneArticolo}"
+ android:text="@{viewModel.currentItem.descrizione}"
android:textColor="#444"
android:textStyle="bold"
tools:text="Descrizione articolo" />
diff --git a/app/src/main/res/layout/dialog_ask_deposito.xml b/app/src/main/res/layout/dialog_ask_deposito.xml
new file mode 100644
index 00000000..c10ed1d8
--- /dev/null
+++ b/app/src/main/res/layout/dialog_ask_deposito.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_extra_info.xml b/app/src/main/res/layout/dialog_extra_info.xml
new file mode 100644
index 00000000..57fe6c15
--- /dev/null
+++ b/app/src/main/res/layout/dialog_extra_info.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_elenco_inventario_list_single_item.xml b/app/src/main/res/layout/fragment_elenco_inventario_list_single_item.xml
index 66ecb739..5c026ed7 100644
--- a/app/src/main/res/layout/fragment_elenco_inventario_list_single_item.xml
+++ b/app/src/main/res/layout/fragment_elenco_inventario_list_single_item.xml
@@ -9,7 +9,7 @@
+ type="it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity" />
diff --git a/app/src/main/res/layout/fragment_verifica_giacenze.xml b/app/src/main/res/layout/fragment_verifica_giacenze.xml
new file mode 100644
index 00000000..fb29e68b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_verifica_giacenze.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/lista_verifica_giacenze_picked_item_list_model.xml b/app/src/main/res/layout/lista_verifica_giacenze_picked_item_list_model.xml
new file mode 100644
index 00000000..022b51eb
--- /dev/null
+++ b/app/src/main/res/layout/lista_verifica_giacenze_picked_item_list_model.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index f6275e04..a233b902 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -47,6 +47,7 @@
Questi permessi sono necessari al funzionamento dell\'app
Picking non disponibile
+ Scansiona il codice a barre di un deposito
Scansiona il codice a barre di un articolo
Prima di procedere apri una nuova UL
Scansiona il codice a barre di una UL per versarla
@@ -92,6 +93,7 @@
Impostazioni
+ Informazioni
- referenza
@@ -152,7 +154,8 @@
%s non è valido. Controllalo e riprova]]>
%s sulla porta %d non è al momento raggiungibile. Riprova più tardi]]>
Nessun deposito trovato per l\'utente corrente
- Impossibile utilizzare unità logistiche di altri depositi
+ Codice deposito non valido
+ Impossibile utilizzare unità logistiche di altri depositi
Seleziona un database
Nessuna riga presente nell\'Unità Logistica
@@ -410,6 +413,7 @@
Personalizzazioni Agricoper
Titolo Modulo
Documenti interni
+ Verifica giacenze
%d articoli]]>
%d_%s]]>
Seleziona estremi documento
diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml
index f15a6039..2824ff81 100644
--- a/app/src/main/res/values/config.xml
+++ b/app/src/main/res/values/config.xml
@@ -39,8 +39,10 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f1ca0607..2a4c2343 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -125,6 +125,7 @@
Enter any additional notes in your logistics unit
LU
General settings
+ Info
Close LU
Submitted items
Orders
@@ -136,6 +137,7 @@
Prepared by
Customer
Picking not available
+ Please scan a deposit barcode
Please scan an item barcode
Extra item
Piece
@@ -149,7 +151,8 @@
%s is not valid. Check and retry later]]>
%s on port %d is not reachable. Retry later]]>
No deposit available with current user
- Unable to use logistics units from other depots
+ Not valid depo code
+ Unable to use logistics units from other depots
Choose a database
No rows found in LU
@@ -415,6 +418,7 @@
Agricoper customizations
Module Title
Internal Docs
+ Check stocks
%d items]]>
%d_%s]]>
Choose Document details
diff --git a/ext_sources/ICONS/ic_dashboard_verifica_giacenze.svg b/ext_sources/ICONS/ic_dashboard_verifica_giacenze.svg
new file mode 100644
index 00000000..31bc47eb
--- /dev/null
+++ b/ext_sources/ICONS/ic_dashboard_verifica_giacenze.svg
@@ -0,0 +1,127 @@
+
+
\ No newline at end of file
diff --git a/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg b/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg
new file mode 100644
index 00000000..2aae171e
--- /dev/null
+++ b/ext_sources/ICONS/ic_drawer_verifica_giacenze.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/ext_sources/ICONS/magnifyng_glass.svg b/ext_sources/ICONS/magnifyng_glass.svg
new file mode 100644
index 00000000..ca6d14fc
--- /dev/null
+++ b/ext_sources/ICONS/magnifyng_glass.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/ext_sources/ICONS/search.svg b/ext_sources/ICONS/search.svg
new file mode 100644
index 00000000..0c9648b3
--- /dev/null
+++ b/ext_sources/ICONS/search.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/ext_sources/ICONS/tags.svg b/ext_sources/ICONS/tags.svg
new file mode 100644
index 00000000..442e4b7b
--- /dev/null
+++ b/ext_sources/ICONS/tags.svg
@@ -0,0 +1,97 @@
+
+
\ No newline at end of file