Compare commits

...

506 Commits

Author SHA1 Message Date
a8c28d7624 Finish v1.32.13(353) 2023-03-16 19:27:05 +01:00
3c7792febb -> v1.32.13 (353) 2023-03-16 19:26:59 +01:00
4f2dfb82e6 Finish Popup_InfoArticolo 2023-03-16 19:26:21 +01:00
cd2c04ad0c Completata implementazione DialogInfoSituazioneArticolo.
Fix per articoli ean8 in Documenti interni.
2023-03-16 19:25:38 +01:00
a1d8e98dfe Merge branch 'develop' into feature/Popup_InfoArticolo
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/inventario/picking/PickingInventarioViewModel.java
2023-03-16 12:24:09 +01:00
80fb6737fe Finish v1.32.12(352) 2023-03-16 12:23:24 +01:00
eadd93dfaf Finish v1.32.12(352) 2023-03-16 12:23:23 +01:00
12919613ab -> v1.32.12 (352) 2023-03-16 12:23:16 +01:00
7da729205c Fix su loadArticolo in picking per inventario 2023-03-16 12:22:45 +01:00
1bfb734139 Finish v1.32.11(351) 2023-03-15 17:41:08 +01:00
09ae517903 Finish v1.32.11(351) 2023-03-15 17:41:07 +01:00
0735312c98 -> v1.32.11 (351) 2023-03-15 17:40:38 +01:00
c31e1ae79a Aggiunto flag per gestire la possibilità di aggiungere articoli non riconosciuti all'interno di un inventario 2023-03-15 17:37:25 +01:00
3a9b6a99eb Aggiunto flag per gestire la possibilità di aggiungere articoli non riconosciuti all'interno di un inventario 2023-03-15 17:36:40 +01:00
3da92d4630 Merge branch 'develop' into feature/Popup_InfoArticolo 2023-03-14 19:47:57 +01:00
1d54680db6 Finish v1.32.10(350) 2023-03-14 19:25:19 +01:00
384214e084 Finish v1.32.10(350) 2023-03-14 19:25:18 +01:00
03dc6e93be -> v1.32.10 (350) 2023-03-14 19:25:11 +01:00
2ba4e5d11e Messi a video gli articoli disponibili nell'inventario 2023-03-14 19:24:06 +01:00
78c6e98084 Merge remote-tracking branch 'origin/develop' into develop 2023-03-14 19:17:19 +01:00
968eed44cb Messi a video gli articoli disponibili nel documento 2023-03-14 19:17:11 +01:00
ee784b27c6 Finish v1.32.09(349) 2023-03-14 16:00:24 +01:00
bac849324f Finish v1.32.09(349) 2023-03-14 16:00:24 +01:00
d823856ac5 -> v1.32.09 (349) 2023-03-14 16:00:16 +01:00
a49ee430e2 aggiunto controllo in spedizione in caso di uscita senza collo riferimento 2023-03-14 15:57:18 +01:00
d8672e1c22 Modifiche UI popup informativo situazione articolo 2023-03-14 15:51:06 +01:00
d8c6464830 Merge branch 'develop' into feature/Popup_InfoArticolo 2023-03-14 11:48:13 +01:00
af5d19eb55 Finish v1.32.08(348) 2023-03-14 11:33:23 +01:00
8fe0a1fd07 Finish v1.32.08(348) 2023-03-14 11:33:23 +01:00
b0a7a93f85 -> v1.32.08 (348) 2023-03-14 11:33:04 +01:00
10f888b5d5 [ESSEGRANDE] Miglioramenti alla sync degli inventari 2023-03-14 11:32:11 +01:00
95807fbfbc Finish v1.32.07(347) 2023-03-13 19:25:07 +01:00
4317e083a6 Finish v1.32.07(347) 2023-03-13 19:25:07 +01:00
0c54a32e39 -> v1.32.07 (347) 2023-03-13 19:25:00 +01:00
62dc62aa99 Fix sull'eliminazione di un documento interno 2023-03-13 19:23:52 +01:00
603fd6ad96 Merge branch 'develop' into feature/Popup_InfoArticolo
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumerService.java
2023-03-13 18:20:13 +01:00
2182a970ac Finish v1.32.06(346) 2023-03-13 18:19:30 +01:00
9b823fdca8 Finish v1.32.06(346) 2023-03-13 18:19:30 +01:00
904c825472 -> v1.32.06 (346) 2023-03-13 18:19:24 +01:00
a15d225998 Rinominati servizi giacenza 2023-03-13 18:18:50 +01:00
62f8ee61d3 Merge branch 'develop' into feature/Popup_InfoArticolo 2023-03-13 16:32:30 +01:00
e3b8373bb9 Finish v1.32.05(345) 2023-03-13 16:32:01 +01:00
0cdbbc096c Finish v1.32.05(345) 2023-03-13 16:32:00 +01:00
895c21cee4 -> v1.32.05 (345) 2023-03-13 16:31:55 +01:00
d541761ac6 Sistemata creazione documento solo per colli rettificati V- 2023-03-13 16:31:22 +01:00
1df84ba046 Creato popup info articolo che mostra le qta in arrivo e le qta in giacenza 2023-03-13 15:57:56 +01:00
72773deaf1 Implementato nuovo servizio di modifica righe UDS (rimossa processEntity) 2023-03-10 12:34:43 +01:00
165568b7e3 Finish v1.32.04(344) 2023-03-08 17:20:07 +01:00
3396e295fa Finish v1.32.04(344) 2023-03-08 17:20:06 +01:00
0f3f593abd -> v1.32.04 (344) 2023-03-08 17:19:59 +01:00
df48ea3b32 Fix su stbGestSetup nulle 2023-03-08 17:19:27 +01:00
5e52d83c40 Finish v1.32.03(343) 2023-03-07 18:49:58 +01:00
0a71f54814 Finish v1.32.03(343) 2023-03-07 18:49:57 +01:00
c18828cdda -> v1.32.03 (343) 2023-03-07 18:49:52 +01:00
92073fa8bb Aggiunta gestione del protocollo in AppUpdater 2023-03-07 18:49:21 +01:00
4131dd7e97 Finish v1.32.02(342) 2023-03-07 18:16:23 +01:00
3c4fdea0ec Finish v1.32.02(342) 2023-03-07 18:16:22 +01:00
71c73e8cde -> v1.32.02 (342) 2023-03-07 18:16:16 +01:00
1a66d4f541 Fix per retrieve ordini lavorazione/produzione 2023-03-07 18:15:01 +01:00
d9c33dc5f5 Vario per Essegrande 2023-03-07 17:57:42 +01:00
1edcba63aa Finish v1.32.01(341) 2023-03-03 14:01:23 +01:00
2566311f96 Finish v1.32.01(341) 2023-03-03 14:01:23 +01:00
c01cbc1bac -> v1.32.01 (341) 2023-03-03 14:01:00 +01:00
9c95b107d5 Sostituita vecchia getElencoArticoli dei documenti con nuovo servizio 2023-03-03 13:59:31 +01:00
c2e1c048be Finish v1.32.00(340) 2023-03-02 11:51:51 +01:00
c3bfe70093 Finish v1.32.00(340) 2023-03-02 11:51:50 +01:00
a6cb8c9c9c -> v1.32.00 (340) 2023-03-02 11:51:43 +01:00
5908e076a4 Gestita parzialmente rotazione schermo 2023-03-02 11:50:09 +01:00
4445e9aff2 Rimossa domanda di cambio posizione per le rettifiche di spedizione. Cambiata response di save doc in rettifica di spedizione. 2023-03-02 11:10:03 +01:00
9cd0855dcf Refactoring dialog di filtro dei documenti interni 2023-03-01 19:59:27 +01:00
d807ab1f31 Completata chiamata di saveDoc in fase di Rettifica spedizione 2023-02-24 19:32:36 +01:00
69b88b1f6d Sistemata UI del log esportato via Mail 2023-02-24 19:05:39 +01:00
35f1495ebc Sostituite icone da PNG a SVG. Implementata voce di Rettifica spedizione che carica colli V. 2023-02-24 16:46:36 +01:00
7fdc964687 Finish v1.31.05(339) 2023-02-24 16:03:10 +01:00
8322303351 Finish v1.31.05(339) 2023-02-24 16:03:10 +01:00
a7f5f5f505 -> v1.31.05 (339) 2023-02-24 16:03:03 +01:00
9b1a00d09c Fix su creazione nuova UDS nel caso in cui non è presente la data cons 2023-02-24 16:02:19 +01:00
72ebf8f135 Finish v1.31.04(338) 2023-02-23 14:05:29 +01:00
be58e333b6 Finish v1.31.04(338) 2023-02-23 14:05:28 +01:00
42620bd324 -> v1.31.04 (338) 2023-02-23 14:05:18 +01:00
d4deade046 Ripristinata rimozione dalla sessione dei colli il collo correttamente chiuso 2023-02-23 14:04:44 +01:00
846393304a Finish v1.31.03(337) 2023-02-20 17:28:58 +01:00
c3ceae8027 Finish v1.31.03(337) 2023-02-20 17:28:58 +01:00
7b4d7db265 -> v1.31.03 (337) 2023-02-20 17:28:51 +01:00
1c6cf9a02b Fix su protocol null per le chiamate rest nel caso in cui l'app abbia già una sessione utente avviata 2023-02-20 17:28:04 +01:00
fd2d4fb47b Finish v1.31.02(336) 2023-02-20 17:12:40 +01:00
094f9b68f6 Finish v1.31.02(336) 2023-02-20 17:12:39 +01:00
be418d3d26 -> v1.31.02 (336) 2023-02-20 17:12:35 +01:00
25813a6362 Sistemata gestione delle eccezioni non gestite e creato sistema di esportazione Log 2023-02-20 17:10:50 +01:00
51c5d3a0c7 Merge remote-tracking branch 'origin/develop' into develop 2023-02-20 11:35:22 +01:00
e964220655 Implementata retrieve inventari 2023-02-20 11:35:17 +01:00
e493f1796b Implementata retrieve inventari 2023-02-20 11:34:51 +01:00
4882645311 Little refactoring per Essegrande 2023-02-15 20:10:47 +01:00
468f1e5b58 Finish v1.31.1(335) 2023-02-14 12:20:17 +01:00
79add4f60a Finish v1.31.1(335) 2023-02-14 12:20:17 +01:00
975763f400 -> v1.31.1 (335) 2023-02-14 12:20:11 +01:00
5eac3f14cc BugFix Picking da ordine: errore in caso di lista commesse vuota 2023-02-14 12:19:16 +01:00
bed5b36ade Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
7678ce1a50 Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
b3faf38455 -> v1.31.0 (334) 2023-02-14 11:42:05 +01:00
283cb59d42 rimosse configurazioni di esecuzione non utilizzate e corretta gestione setup 2023-02-14 11:41:05 +01:00
1867ac8742 Rimossa parte delle dynamic feature 2023-02-14 11:13:10 +01:00
d210e3b3e0 Rimossa parte delle dynamic feature 2023-02-14 11:00:33 +01:00
8bb2f48090 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
15b4d728e6 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
3018123110 -> v1.30.15 (333) 2023-02-13 17:48:01 +01:00
b02eaf02a8 aggiornamento progetto a AGP 8.1 2023-02-13 17:46:57 +01:00
ad9795a3a3 test compilazione jenkins con desugaring 2023-02-13 14:25:56 +01:00
170411383f Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
9e87130d6c Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
0f6a9cdae2 -> v1.30.14 (332) 2023-02-13 13:09:20 +01:00
79ec6430f6 implementata libreria compatibilità LocalDate 2023-02-13 13:08:09 +01:00
0c46fb09c1 Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
8aad7337bf Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
c49197d002 -> v1.30.13 (331) 2023-02-13 11:59:20 +01:00
16f611c147 Merge branch 'master' into develop 2023-02-13 11:56:18 +01:00
7b623913d8 Aggiunto controllo in avvio chiamate rest per evitare che i terminali con android inferiore all'8.0 2023-02-13 11:56:03 +01:00
0a8997f30b Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
702d0a7348 Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
f4ae1fbed3 -> v1.30.12 (330) #2 2023-02-09 12:09:29 +01:00
8c0639be9b Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
c9ea13a1d2 Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
bef5423a06 -> v1.30.12 (330) 2023-02-09 12:08:28 +01:00
22b072aff7 Fix su nessun elemento selezionato in DialogChooseArtsFromMtbColrList 2023-02-09 12:07:50 +01:00
50acee47e9 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
ba041d1133 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
21c26ab3ad -> v1.30.11 (329) 2023-02-08 17:28:55 +01:00
5288ad8bb0 Fix su qta inviate al magazzino automatico 2023-02-08 17:15:47 +01:00
0ccff458f7 Finish v1.30.10(328) 2023-02-08 10:56:46 +01:00
a1c8a52dd2 Finish v1.30.10(328) 2023-02-08 10:56:45 +01:00
e6e8b22554 -> v1.30.10 (328) 2023-02-08 10:56:35 +01:00
9371e5824f Implementato pick extra item sui magazzini automatici 2023-02-08 10:55:33 +01:00
bda1328dec Migliorie nel KeyboardEmulatorBarcodeReader 2023-02-06 18:36:15 +01:00
2030893249 Finish Hotfix-1 2023-02-06 12:59:21 +01:00
fa695ca9a4 Merge branch 'master' into develop 2023-02-06 12:59:21 +01:00
8b9c9437ae -> v1.30.09 (327) #2 2023-02-06 12:59:11 +01:00
6f026145ef Finish v1.30.09(327) 2023-02-06 12:43:23 +01:00
0744d3713e Finish v1.30.09(327) 2023-02-06 12:43:23 +01:00
3275422af8 -> v1.30.09 (327) 2023-02-06 12:43:12 +01:00
a49aab1fb0 Implementata gestione del magazzino automatico in posizionamento merce 2023-02-06 12:33:15 +01:00
e25cc9e825 Refactoring DialogChooseArtsFromMtbColr 2023-02-06 10:46:46 +01:00
92e9529cc5 Merge remote-tracking branch 'origin/develop' into develop 2023-02-02 19:49:25 +01:00
7990f38c37 Completata implementazione del magazzino automatico in Picking Libero 2023-02-02 19:49:18 +01:00
134dff5aba Merge remote-tracking branch 'origin/develop' into develop 2023-02-02 16:47:52 +01:00
0c359e5110 [CARELLI - ORDINI ACQUISTO]
- incrementato tempo di timeout in salvataggio per evitare che gli operatori salvino più volte lo stesso ordine in caso di errore
- aggiunto controllo in caso di qtaProporta nulla
2023-02-02 16:47:44 +01:00
7b913e607e Completata implementazione del magazzino automatico in Picking di Uscita 2023-01-30 19:11:33 +01:00
ee5d30ff80 Rinominato DialogChooseArtsFromListaArts in DialogChooseArtsFromMtbColrList 2023-01-27 10:09:42 +01:00
6c41506a97 Prima implementazione magazzino automatico 2023-01-25 17:44:32 +01:00
ab14d6736c Refactoring dei servizi utilizzati nelle gestioni di Lavorazione / Vendita.
Fix su scansione articoli in Documenti Interni.
2023-01-25 17:11:25 +01:00
b6c82c869e Merge tag 'v1.30.07__325' into develop
v1.30.07 (325)
2023-01-16 12:17:23 +01:00
f3f04e9473 Merge branch 'release/v1.30.07__325' 2023-01-16 12:17:22 +01:00
ef753f9bcd -> v1.30.07 (325) 2023-01-16 12:15:20 +01:00
e764ad1148 Implementata gestione Ean Peso in rettifica giacenze 2023-01-16 11:42:24 +01:00
82cc4f989c Finish v1.30.06__324 2022-12-27 19:05:57 +01:00
650d1670de Finish v1.30.06__324 2022-12-27 19:05:57 +01:00
6ca7943d78 -> v1.30.06 (324) 2022-12-27 19:05:47 +01:00
013646eae3 [CARELLI - ORDINI ACQUISTI] rimossa data cons in salvataggio ordini 2022-12-27 19:03:20 +01:00
341359d871 Merge branch 'release/v1.30.05__323' 2022-12-16 12:54:12 +01:00
545081444c Merge tag 'v1.30.05__323' into develop
v1.30.05__323
2022-12-16 12:54:12 +01:00
b35819c9c9 -> v1.30.05 (323) 2022-12-16 12:52:13 +01:00
ec44275e41 aggiunto destinatario in creazione documenti trasferimento
corretta gestione modifica articolo in ordini acquisto pv
2022-12-16 12:50:56 +01:00
f5d78edfd1 Merge tag 'v1.30.04__322' into develop
v1.30.04__322
2022-12-15 16:20:44 +01:00
9390cd0320 Merge branch 'release/v1.30.04__322' 2022-12-15 16:20:43 +01:00
ca448542c3 -> v1.30.04 (322) 2022-12-15 16:20:20 +01:00
9d3f6f73d9 Rimossa substring del codice GTIN se inizia con 0 o 9. Se ne occupa già il servizio di decodeEan128. 2022-12-15 16:17:39 +01:00
ee35a14518 Merge branch 'release/v1.30.03__321' 2022-12-14 12:42:35 +01:00
b7bb6ad6ac Merge tag 'v1.30.03__321' into develop 2022-12-14 12:42:35 +01:00
011deafb90 -> v1.30.03 (321) 2022-12-14 12:42:10 +01:00
214d98f181 modifiche bottom sheet dialog 2022-12-14 12:35:31 +01:00
dfa2a1106e modifiche bottom sheet dialog 2022-12-14 12:33:36 +01:00
08841537f5 rimosse eccezioni generiche da documenti interni e ordini di acquisto PV 2022-12-14 11:16:34 +01:00
21cf03a50b Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/_BaseRESTConsumer.java
2022-12-14 11:15:22 +01:00
356b146e3d rimosse eccezioni generiche da documenti interni e ordini di acquisto PV 2022-12-14 11:14:18 +01:00
a4c9b0cd3a Merge tag 'v1.30.02__320' into develop
v1.30.02__320
2022-12-13 15:42:00 +01:00
882c95bd85 Merge branch 'release/v1.30.02__320' 2022-12-13 15:41:59 +01:00
04772057c1 -> v1.30.02 (320) 2022-12-13 15:41:45 +01:00
c72037783f Completate ultime modifiche inventario 2022-12-13 15:40:10 +01:00
5e5f2b7889 Merge tag 'v1.30.01__319' into develop
v1.30.01__319
2022-12-12 16:55:06 +01:00
226ce27a5c Merge branch 'release/v1.30.01(319)' 2022-12-12 16:54:23 +01:00
2e90c33854 -> v1.30.01(319) 2022-12-12 16:53:52 +01:00
d4fbd7b45f Fix su fab in accettazione, ripristinato onClick 2022-12-12 16:52:54 +01:00
be70e75f44 Merge tag 'v1.30.0__318' into develop
v1.30.0__318
2022-12-09 19:34:32 +01:00
41c5fa52b5 Merge branch 'release/v1.30.0(318)' 2022-12-09 19:33:01 +01:00
f50400bcb7 -> v1.30.0 (318) 2022-12-09 19:32:40 +01:00
9a8322adcc Merge branch 'release/v1.30.0(312)' 2022-12-09 19:29:35 +01:00
feb79ff95d Modifiche per inventario 2022-12-09 19:26:23 +01:00
4634f2ce9c aggiunta possibilità di aggiungere una nuova confezione alle qta dell'ordine sparando il barcode dell'articolo 2022-12-06 10:32:25 +01:00
77a6856843 bugfix colore qta per ordini diversi da qta proposta 2022-11-23 16:59:30 +01:00
302ea697e1 bugfix scansione barcode in edit ordine 2022-11-23 16:47:55 +01:00
ae8db5791e bugfix e ottimizzazioni gestione ordini acquisto 2022-11-23 12:56:23 +01:00
f967514f97 Completamento inventario WMS 2022-11-22 17:42:24 +01:00
1512cb7de9 Migliorie in elenco inventari 2022-11-22 10:42:18 +01:00
bad3e58fbd Fix migrations 2022-11-21 18:45:51 +01:00
75e79394f2 Merge branch 'feature/GestioneInventario' into develop 2022-11-21 18:44:56 +01:00
b127130bc7 aggiunta migration descrizione righe inv 2022-11-21 09:37:42 +01:00
9b5beeb028 Implementazione inventario 2022-11-11 19:59:52 +01:00
fd95f18200 bugfix
crash dell'applicazione durante il versamento se la query non restituisce risultati
2022-10-26 17:24:51 +02:00
92d1331630 Refactoring datasource di Room.
Refactoring dialog vari.
2022-10-24 18:44:43 +02:00
8216c19338 Fix su calendar view in data_scad 2022-10-24 17:54:58 +02:00
d97d1f1597 Aggiornato AGP 2022-10-21 17:59:35 +02:00
52b99f084a Merge tag 'v1.29.13__317' into develop
Finish v1.29.13__317
2022-10-21 17:58:28 +02:00
a3598fab56 Merge branch 'release/v1.29.13(317)' 2022-10-21 17:56:41 +02:00
7dc77bf1f9 -> v1.29.13 (317) 2022-10-21 17:56:26 +02:00
66f2bda370 Refactoring dialog ask posizione 2022-10-21 17:55:02 +02:00
600258228b Rimossa gestione MtbCols 2022-10-21 11:48:34 +02:00
19cc9f5016 Finish v1.29.12(316) 2022-10-20 17:36:22 +02:00
0dcb8c6af4 Finish v1.29.12(316) 2022-10-20 17:36:22 +02:00
9974deaf69 -> v1.29.12 (316) 2022-10-20 17:36:16 +02:00
fe081897e7 bugfix
la gestione approvv. linee prod crasha a fine caricamento
2022-10-20 12:03:35 +02:00
b0de2dda40 Finish v1.29.11(315) 2022-10-19 18:40:07 +02:00
dda288d709 Finish v1.29.11(315) 2022-10-19 18:40:07 +02:00
f6fdc45e1a -> v1.29.11 (315) 2022-10-19 18:40:01 +02:00
5e88833039 bugfix ConcurrentModificationException in aggiunta articoli atumatica in nuovo ordine acquisto 2022-10-19 18:39:12 +02:00
2c521c5f96 Merge branch 'release/v1.29.10(314)'
# Conflicts:
#	app/build.gradle
2022-10-12 15:27:31 +02:00
8530309244 -> v1.29.10 (314) 2022-10-12 15:27:00 +02:00
57dd0cef76 Rimossa troncatura barcode da itf14 a ean13 2022-10-12 15:25:25 +02:00
8df31407ac Merge remote-tracking branch 'origin/develop' into develop 2022-10-12 12:13:24 +02:00
8134a64a43 in rettifica cerca per codice articolo se code128 2022-10-12 12:13:16 +02:00
0c2fd117d5 Merge branch 'release/v1.29.9(313)' 2022-10-07 15:23:56 +02:00
d2b5fe917d -> v1.29.9 (313) 2022-10-07 15:23:44 +02:00
3de49545b7 Merge branch 'feature/InternalLogger' into develop 2022-10-07 15:22:59 +02:00
7163d91c53 Revert "Rimossa troncatura dell'ITF-14"
This reverts commit 7555e3d90f.
2022-10-07 15:22:43 +02:00
b8b3d2f2bb Implementato log su file 2022-10-07 15:22:32 +02:00
7555e3d90f Rimossa troncatura dell'ITF-14 2022-10-07 10:53:35 +02:00
46e438e0e9 Merge branch 'release/v1.29.8(312)' 2022-10-06 17:00:08 +02:00
439eada61b -> v1.29.8 (312) 2022-10-06 16:59:09 +02:00
48548b7c92 Prova fix su dialog progress 2022-10-06 16:56:35 +02:00
79afe0155b boh 2022-10-06 15:48:45 +02:00
730dabc2bb Finish v1.29.7(311) 2022-10-05 16:20:09 +02:00
44255f08b4 Finish v1.29.7(311) 2022-10-05 16:20:09 +02:00
fb23009fcc -> v1.29.7 (311) 2022-10-05 16:20:03 +02:00
c0310e492f Merge remote-tracking branch 'origin/develop' into develop 2022-10-05 15:58:13 +02:00
bf1fc455e1 fix su dialog vari 2022-10-05 15:58:09 +02:00
c7c2700dbe Finish v1.29.6(310) 2022-10-05 14:11:57 +02:00
c89e4869ef Finish v1.29.6(310) 2022-10-05 14:11:57 +02:00
5e147c9d96 -> v1.29.6 (310) 2022-10-05 14:11:52 +02:00
95fc680823 aggiunti controlli su lista ordini accettazione nulla 2022-10-05 14:11:11 +02:00
3cd1b8eb9f Finish v1.29.5(309) 2022-10-04 14:54:42 +02:00
ca04b87a8e Finish v1.29.5(309) 2022-10-04 14:54:42 +02:00
10ab47a1b7 -> v1.29.5 (309) 2022-10-04 14:54:37 +02:00
fdaa2b7f21 commit file .idea 2022-10-04 13:21:26 +02:00
e9b179ca7f risolto problema su articoli senza diacod 2022-10-04 13:20:55 +02:00
04d811af93 Merge branch 'feature/UpdateUI' into develop 2022-10-04 12:16:18 +02:00
cb2421f263 Fix su versioni librerie 2022-10-03 18:12:15 +02:00
16a565fc51 Layout filters and other dialogs 2022-10-03 15:26:42 +02:00
f68691df6b Refactoring su DialogBasketLU 2022-10-03 15:26:42 +02:00
f4f7f4a6f0 Refactoring DialogScanOrCreateLU 2022-10-03 15:26:41 +02:00
b129bb51c6 Aggiornato tema.
Aggiornato DialogProgressView.
Aggiornato DialogYesNoView.
Aggiornato DialogInputPesoLuView.
2022-10-03 15:26:41 +02:00
8c80918521 Update AGP to 7.3.0 2022-10-03 12:56:03 +02:00
e8dea4cef0 Merge branch 'hotfix/Hotfix-1' into develop 2022-10-03 12:37:37 +02:00
b51bf1d9cb Merge branch 'hotfix/Hotfix-1' 2022-10-03 12:37:36 +02:00
3c25e223ab -> v1.29.4 (308) 2022-10-03 12:37:22 +02:00
16d9f2f6ff Merge branch 'hotfix/Hotfix-1' into develop 2022-10-03 12:36:13 +02:00
fd3dfb9afe Merge branch 'hotfix/Hotfix-1' 2022-10-03 12:36:13 +02:00
2916d2b5d0 Fix su focus in dialogInputQuantity 2022-10-03 12:35:58 +02:00
dac12905ef Cambiato statoPartitaMag to int 2022-10-03 12:15:29 +02:00
bf56c8e4c7 Aggiunta quantità omaggio in spedizione
aggiunto alert partite in scadenza in spediione
2022-09-28 16:59:25 +02:00
7272e3e541 Finish v1.29.3(307) 2022-09-26 12:05:27 +02:00
020c99e700 Finish v1.29.3(307) 2022-09-26 12:05:27 +02:00
12a9610e7a -> v1.29.3 (307) 2022-09-26 12:04:55 +02:00
0e6f4a7892 aggiunta configurazione scanner barcode tramite preferenze app 2022-09-26 11:52:24 +02:00
f8c0852cb7 Finish v1.29.2(306) 2022-08-31 13:08:46 +02:00
ee48e7e2a4 Finish v1.29.2(306) 2022-08-31 13:08:45 +02:00
821099c037 -> v1.29.2 (306) 2022-08-31 13:08:26 +02:00
9a6211fc46 Fix su partita mag nulla in spedizione 2022-08-31 13:07:35 +02:00
ee8abe3ea8 Libraries updates pt2 2022-08-31 11:28:02 +02:00
654a9e0161 Libraries updates 2022-08-31 10:58:14 +02:00
076c84c119 Finish v1.29.1(305) 2022-08-05 19:07:03 +02:00
6fa80a5485 Finish v1.29.1(305) 2022-08-05 19:07:02 +02:00
e0ea6b17a1 -> v1.29.1 (305) 2022-08-05 19:06:58 +02:00
60978167c2 Miglioramento UI di recupero materiale 2022-08-05 17:34:43 +02:00
6a848e081a Cambiata configurazione per scanner Honeywell.
Sistemati decimali in lista ul recupero materiale.
2022-08-05 17:09:36 +02:00
2960d0d4b4 Finish v1.29.0(304) 2022-08-04 09:58:55 +02:00
6b01861a26 Finish v1.29.0(304) 2022-08-04 09:58:54 +02:00
5889942ff9 -> v1.29.0 (304) 2022-08-04 09:58:48 +02:00
0359ddcc90 Fix in rettifica giacenze.
Aggiunti i campi "Giacenza in magazzino" e "Impegnato" nel dialog input quantity.
2022-08-04 09:58:10 +02:00
8409507dab Finish v1.28.9(303) 2022-07-29 19:41:12 +02:00
208653223c Finish v1.28.9(303) 2022-07-29 19:41:11 +02:00
62f6e12a86 -> v1.28.9 (303) 2022-07-29 19:41:06 +02:00
b662929c19 fix timeout connessioni.
fix pre destroy rettifica giacenze.
2022-07-29 19:40:24 +02:00
40895eac2f Finish v1.28.8(302) 2022-07-22 19:00:53 +02:00
dc7e90b2fe Finish v1.28.8(302) 2022-07-22 19:00:53 +02:00
5d1f275ebc -> v1.28.8 (302) 2022-07-22 19:00:47 +02:00
79192ce337 aggiunta stampa etichetta da rientro merce 2022-07-22 18:49:58 +02:00
7f0f6c969a Finish v1.28.7(301) 2022-07-22 15:53:28 +02:00
e23beddf65 Finish v1.28.7(301) 2022-07-22 15:53:27 +02:00
1fd51a4097 -> v1.28.7 (301) 2022-07-22 15:53:19 +02:00
5ea124bcf6 rimosso filtro per linea in recupero materiale da gestione linee 2022-07-22 15:52:27 +02:00
fa6ab9f58f Finish v1.28.6(300) 2022-07-22 11:21:59 +02:00
f7806103fb Finish v1.28.6(300) 2022-07-22 11:21:59 +02:00
87acc5a4e3 -> v1.28.6 (300) 2022-07-22 11:21:54 +02:00
7c49af085d aggiunte condizioni per l'autocompletamento delle tipo pedana in rientro merce 2022-07-22 11:21:08 +02:00
0c3d5bd0f1 Finish v1.28.5(299) 2022-07-21 17:15:10 +02:00
37d956bb5c Finish v1.28.5(299) 2022-07-21 17:15:09 +02:00
fef564b090 -> v1.28.5 (299) 2022-07-21 17:15:03 +02:00
d1c491ee80 risolti bug vari 2022-07-21 17:14:30 +02:00
0cd8a3b41f Finish v1.28.4(298) 2022-07-21 15:59:03 +02:00
f7e4a3d005 Finish v1.28.4(298) 2022-07-21 15:59:02 +02:00
a22ecb9620 -> v1.28.4 (298) 2022-07-21 15:58:54 +02:00
57c22b617e apportate modifiche rientro merce richieste da Agricoper,
risolto bug divide by zero in spedizione quando qtaCmfOrd è decimale
2022-07-21 15:58:01 +02:00
84876bf7c1 Finish v1.28.3(297) 2022-07-20 16:08:12 +02:00
2718f0ff2b Finish v1.28.3(297) 2022-07-20 16:08:12 +02:00
fca325855e -> v1.28.3 (297) 2022-07-20 16:08:06 +02:00
c6fc287a3f corretto controllo su creazione collo in accettazione
aggiunto controllo su stato articoli in servizio getArticoloBybarcode
2022-07-20 16:07:14 +02:00
29fd0292e7 Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
90cf83e3cd Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
f4c1f1fe34 -> v1.28.2 (296) 2022-07-20 15:45:53 +02:00
9e85b9f828 aggiunta setup non presente in lista 2022-07-20 15:44:40 +02:00
a9fd55c01f Finish v1.28.1(295) 2022-07-18 10:56:05 +02:00
506a56a1a2 Finish v1.28.1(295) 2022-07-18 10:56:05 +02:00
c93e29606c -> v1.28.1 (295) 2022-07-18 10:55:57 +02:00
4adc40aa90 adeguamento rientro merce da lavorazione agricoper 2022-07-18 10:54:29 +02:00
4842a6091b Documento perdite (wms). La possibilità di scaricare l'intera anagrafica puo' essere effettuata soltanto una volta (a cache vuota)
Inserire il campo 'Annotazioni' quando si crea un collo  che sia editabile dall'utente (picking Vendita)
2022-07-13 17:29:26 +02:00
9faf4123ef fase di creazione dell'ordine di acquisto preimpostare gli articoli che hanno una qta proposta da acquistare 2022-07-11 13:11:52 +02:00
cdf5b413a2 Finish v1.28.0(294) 2022-07-07 18:56:19 +02:00
4dd2ccdb13 Finish v1.28.0(294) 2022-07-07 18:56:18 +02:00
56c54d3cde -> v1.28.0 (294) 2022-07-07 18:56:13 +02:00
19e2d5b869 Creata login page per layout large 2022-07-07 18:21:30 +02:00
0acf023556 Creata UI per smartphone del rientro merce 2022-07-07 17:51:46 +02:00
71f6dc83fb Vario 2022-06-29 18:54:11 +02:00
3479ee2b87 Finish v1.27.6(293) 2022-06-29 16:39:22 +02:00
609b9f1852 Finish v1.27.6(293) 2022-06-29 16:39:22 +02:00
23c98d9218 -> v1.27.6 (293) 2022-06-29 16:39:17 +02:00
57900a9617 bug fix: Nel picking da ordine, quando sparano alcune referenze (100142-100171), l'app si chiude in maniera anomala. 2022-06-29 16:36:46 +02:00
c3274a4311 corretto bug per in gestione linee e aggiu ta richiesta di recupero prima di chiudere gli ordini 2022-06-29 16:01:51 +02:00
356e2562da Finish v1.27.5(292) 2022-06-08 12:50:49 +02:00
46c0078331 Finish v1.27.5(292) 2022-06-08 12:50:48 +02:00
bbc81f3d99 -> v1.27.5 (292) 2022-06-08 12:50:18 +02:00
0dd662518e In versamento se si versa una pedana già versata l'app crasha
permettere il versamento di un articolo non compatibile con gli ordini aperti dopo richiesta conferma

precompilare input risorse da allocare

in input qta mantenere fissa la qtaCnf in entrambe le direzioni di calcolo

togliere popup di notifica versamento completato
2022-06-08 12:26:20 +02:00
08d332e2c6 Quando creo una pedana dalla funzione di rientro merce non inserendo il tipo collo, l'app si blocca. 2022-06-07 17:33:32 +02:00
b9001790be corretto funzionamento rettifica giacenza al clik del pulsante indietro 2022-06-07 12:56:26 +02:00
d43bd8e659 Finish v1.27.4(291) 2022-06-01 19:23:56 +02:00
ef2886c963 Finish v1.27.4(291) 2022-06-01 19:23:55 +02:00
7a6097fa69 -> v1.27.4 (291) 2022-06-01 19:23:49 +02:00
9c45cebf51 aggiunte funzionalità versamento e recupero alla gestione linee di produzione 2022-06-01 19:22:32 +02:00
344fc42d03 bugfix in schermata dialog_input_quantity_v2 2022-05-27 16:22:34 +02:00
33a01b2c15 spedizione: bugfix calcolo qta residua in picking da collo 2022-05-27 09:45:35 +02:00
d165174345 Finish v1.27.3(290) 2022-05-26 16:18:34 +02:00
05314803bc Finish v1.27.3(290) 2022-05-26 16:18:34 +02:00
9db8337f9b -> v1.27.3 (290) 2022-05-26 16:18:10 +02:00
abfd92ce07 Fix su inizializzazione observables in DialogInputQuantityV2 2022-05-26 16:16:13 +02:00
c11858aea2 Ottimizzazione funzione rettifica giacenza. Evitare di uscire dalla gestione dopo aver rettificato una pedana. 2022-05-26 12:35:26 +02:00
a67b28f0ad Finish v1.27.2(289) 2022-05-26 12:11:01 +02:00
b9f5baae5f Finish v1.27.2(289) 2022-05-26 12:11:01 +02:00
cb5e36ffb7 -> v1.27.2 (289) 2022-05-26 12:10:16 +02:00
82ff37f4ee Bug Fix: eliminazione righe in picking libero 2022-05-26 12:09:21 +02:00
350c4bc4ed Finish v1.27.1(288) 2022-05-25 19:11:27 +02:00
33f0866ea2 Finish v1.27.1(288) 2022-05-25 19:11:27 +02:00
df13a6e29d -> v1.27.1 (288) 2022-05-25 19:11:23 +02:00
ee8fa96c40 mmodifica label impostazione risorse 2022-05-25 19:10:35 +02:00
c264cd38e3 Finish v1.27.0(287) 2022-05-25 17:19:49 +02:00
64f669753f Finish v1.27.0(287) 2022-05-25 17:19:49 +02:00
aabc4310fd -> v1.27.0 (287) 2022-05-25 17:19:40 +02:00
9dc3996aef Nuova gestione linee di produzione 2022-05-25 17:17:58 +02:00
e0e9e657c9 Nuova gestione linee di produzione 2022-05-25 17:17:48 +02:00
84cbab334f Aggiunta possibilità di stampa dei soli colli non stampati 2022-05-18 18:07:14 +02:00
f9751e770a Finish v1.26.3(286) 2022-05-12 13:03:57 +02:00
6539c9179e Finish v1.26.3(286) 2022-05-12 13:03:56 +02:00
f43a7acf35 -> v1.26.3 (286) 2022-05-12 13:03:46 +02:00
ca96bacde6 aggiunto controllo per evitare l'nizializzazione degli observables in più punti 2022-05-12 12:54:33 +02:00
d4c94b7ab9 Finish v1.26.2(285) 2022-05-11 09:49:58 +02:00
0c9e607c33 Finish v1.26.2(285) 2022-05-11 09:49:57 +02:00
b5c6ce2aa5 -> v1.26.2 (285) 2022-05-11 09:49:54 +02:00
66f58ea20d Aggiunte qta_proposta e giacenza in system note degli ordini di acquisto pv 2022-05-11 09:49:12 +02:00
d6979289e2 spostate stampe in chiusura ordine su servizio dedicato 2022-05-06 15:20:34 +02:00
496387b5c6 Finish v1.26.1(284) 2022-05-05 16:11:33 +02:00
6b0d75fc60 Finish v1.26.1(284) 2022-05-05 16:11:32 +02:00
7d263699da -> v1.26.1 (284) 2022-05-05 16:11:27 +02:00
63e4e4e791 aggiunto controllo su aggiunta articoli extra senza collo 2022-05-05 16:09:48 +02:00
98c260f621 Finish v1.26.0(283) 2022-05-03 10:49:24 +02:00
1b57dc74cf Finish v1.26.0(283) 2022-05-03 10:49:23 +02:00
4f140d0d58 -> v1.26.0 (283) 2022-05-03 10:49:07 +02:00
0d021e6bad aggiunto controllo su mtbColrRif null in picking libero 2022-05-03 10:31:38 +02:00
1a0af47613 Modifiche stampa per tipo report 2022-04-27 18:54:43 +02:00
ead509bb32 Finish v1.25.5(282) 2022-04-26 12:42:43 +02:00
ddfde73f1e Finish v1.25.5(282) 2022-04-26 12:42:43 +02:00
3de5a2320d -> v1.25.5 (282) 2022-04-26 12:42:36 +02:00
5cb32a9a77 Risolto problema di aggiornamento lista d'ordini in uscita nel caso in cui si filtrava tramite barcode 2022-04-26 12:42:00 +02:00
ecbb4ac55c Finish v1.25.4(281) 2022-04-22 16:20:46 +02:00
84e0561fff Finish v1.25.4(281) 2022-04-22 16:20:45 +02:00
71bfbb2afc -> v1.25.4 (281) 2022-04-22 16:20:40 +02:00
2cb563320b Fix su lettura numero collo da etichetta anonima con serie alla fine 2022-04-22 15:14:54 +02:00
f3837f35b0 aggiunti controlli per rendere obbligatorie le note sui documenti di taglio di carelli 2022-04-20 16:21:55 +02:00
fa52b8e040 Finish v1.25.3(280) 2022-04-14 16:27:34 +02:00
c80b5a9160 Finish v1.25.3(280) 2022-04-14 16:27:34 +02:00
65ac5590c7 -> v1.25.3 (280) 2022-04-14 16:27:27 +02:00
3cee7f2a95 Fix su visibilità dialogInputQuantity 2022-04-14 16:26:55 +02:00
3034b49586 Finish v1.25.2(279) 2022-04-13 17:25:19 +02:00
718ffb3124 Finish v1.25.2(279) 2022-04-13 17:25:18 +02:00
7173c49561 -> v1.25.2 (279) 2022-04-13 17:25:10 +02:00
4407f37f8c Bugfix vari 2022-04-13 17:24:20 +02:00
37a16f6292 Finish v1.25.1(278) 2022-04-11 19:17:26 +02:00
83d9e0c5f7 Finish v1.25.1(278) 2022-04-11 19:17:26 +02:00
d2249e031a -> v1.25.1 (278) 2022-04-11 19:17:21 +02:00
2522e67705 Merge remote-tracking branch 'origin/develop' into develop 2022-04-11 19:16:46 +02:00
371514157c Fix su peso tipo collo al posto della tara 2022-04-11 19:16:42 +02:00
de889045e6 Merge remote-tracking branch 'origin/develop' into develop 2022-04-11 13:18:04 +02:00
6225ba8207 corretta gestione flag per ordinare in automatico articoli in acquisti pv 2022-04-11 13:17:56 +02:00
36c9319bce Finish v1.25.0(277) 2022-04-11 12:09:47 +02:00
d4d494218b Finish v1.25.0(277) 2022-04-11 12:09:46 +02:00
a3d6b11c69 -> v1.25.0 (277) 2022-04-11 12:09:42 +02:00
852edf1b13 Implementata comunicazione con dispositivo bluetooth in fase di rientro merce da lav.
Rimosso printerName e quantity dalla stampa delle SSCC.
2022-04-11 12:08:58 +02:00
6806290d98 Finish v1.24.8(276) 2022-03-30 17:46:46 +02:00
66f7a51462 Finish v1.24.8(276) 2022-03-30 17:46:46 +02:00
0e1e69dc9a -> v1.24.8 (276) 2022-03-30 17:46:41 +02:00
2ef24fe6e9 impostato focus automatico sul campo numCnf 2022-03-30 17:45:57 +02:00
54c2d90334 Finish v1.24.7(275) 2022-03-29 11:05:53 +02:00
577f2041a1 Finish v1.24.7(275) 2022-03-29 11:05:53 +02:00
2f3e74fbfe -> v1.24.7 (275) 2022-03-29 11:05:45 +02:00
b0fa911322 risolto problema scrollview su display ridotti 2022-03-29 11:03:40 +02:00
473b9f22fb Aggiornato filtro ordine in caso di recupera UL. 2022-03-28 17:57:04 +02:00
cc1e1bf221 Finish v1.24.6(274) 2022-03-25 11:23:18 +01:00
a0c85b3fcb Finish v1.24.6(274) 2022-03-25 11:23:18 +01:00
0f41bd99aa -> v1.24.6 (274) 2022-03-25 11:23:03 +01:00
7a3a207462 in posizionamento merce in caso di necessità definizione livello posizione non si chiude la progress dialog 2022-03-25 11:21:25 +01:00
7206b3c37e Finish v1.24.5(273) 2022-03-24 17:26:56 +01:00
4cf8b6167f Finish v1.24.5(273) 2022-03-24 17:26:55 +01:00
b19b438489 -> v1.24.5 (273) 2022-03-24 17:26:48 +01:00
d3ee6d9ea3 Aggiornato filtro ordine in caso di recupera UL. 2022-03-24 17:25:47 +01:00
dd9789c4f3 Fix su dismiss del DialogInputQuantity 2022-03-24 16:58:58 +01:00
67571e3d7a Finish v1.24.4(272) 2022-03-24 12:40:53 +01:00
a0e17f557d Finish v1.24.4(272) 2022-03-24 12:40:52 +01:00
684946bb14 -> v1.24.4 (272) 2022-03-24 12:40:46 +01:00
4aab6b1688 Ottimizzazioni su DialogProgress 2022-03-24 12:40:15 +01:00
310a79f41d Fix su rotazione schermo in avantielenco accettazione 2022-03-23 18:08:22 +01:00
f8164ca1eb Finish v1.24.3(271) 2022-03-23 16:48:10 +01:00
790a9eae6c Finish v1.24.3(271) 2022-03-23 16:48:09 +01:00
b41edd314f -> v1.24.3 (271) 2022-03-23 16:48:04 +01:00
34d8a93c01 Merge remote-tracking branch 'origin/develop' into develop 2022-03-23 16:47:27 +01:00
3b45d8fe35 Fix su ColliDataRecoverService.
Implementata scrollview su DialogInputQuantity.
Corretta gestione cod anag in picking libero.
2022-03-23 16:47:22 +01:00
aba1fcdc7b Finish v1.24.2(270) 2022-03-22 10:12:21 +01:00
012d7caa52 Finish v1.24.2(270) 2022-03-22 10:12:21 +01:00
e7e20da206 -> v1.24.2 (270) 2022-03-22 10:12:10 +01:00
ef6535897b [ordini acquisto pv]
cambio colore in base alla differenza tra qta ordinata e proposta
auto ordinamento di 1 col alla scansione di un articolo
fix vari
2022-03-22 10:09:19 +01:00
8c75ecbd0a Finish v1.24.1(269)_2 2022-03-10 17:20:13 +01:00
fad3c4243d Finish v1.24.1(269)_2 2022-03-10 17:20:13 +01:00
a6e75114cb Rimosse classi di test 2022-03-10 17:18:59 +01:00
48a83bc0d5 Finish v1.24.1(269) 2022-03-10 12:08:07 +01:00
b58475b426 Finish v1.24.1(269) 2022-03-10 12:08:06 +01:00
207daab105 -> v1.24.1 (269) 2022-03-10 12:08:02 +01:00
c32da27b7f Fix su caricamento dati da griglia quando si scansiona un articolo gia inserito nell'ordine 2022-03-10 12:07:22 +01:00
1f94c14634 Ripristinato click per modificare righe in ordine di acquisto 2022-03-09 16:14:12 +01:00
4880ea8301 Implementata gestione dei cod_anags aziendali 2022-03-09 12:09:04 +01:00
a2d165d475 Rimosso caricamento profili allo start.
Aggiunto ulteriore controllo su licenza
2022-03-09 10:33:09 +01:00
d142f0c868 Implementata lettura errore chiamate http in login 2022-03-08 22:05:19 +01:00
746838010a Finish v1.24.0 2022-03-08 15:57:57 +01:00
a74d865c57 Finish v1.24.0 2022-03-08 15:57:56 +01:00
0a37323cef Merge remote-tracking branch 'origin/develop' into develop 2022-03-08 15:57:17 +01:00
b36b80eae0 -> v1.24.0 (268) 2022-03-08 15:57:07 +01:00
acb7727f3c Implementato flag allow empty destinatario 2022-03-08 15:57:07 +01:00
c16f5d2ddd -> v1.24.0 (268) 2022-03-08 15:56:50 +01:00
4ca449d557 Implementato flag allow empty cliente 2022-03-08 15:55:53 +01:00
da70d7c064 Implementata logica della posizione di default sull'articolo in caso di addExtraItem 2022-03-07 12:43:11 +01:00
0be1eac5fe Finish v1.23.12(267) 2022-03-02 18:29:20 +01:00
e0eabbcbda Finish v1.23.12(267) 2022-03-02 18:29:20 +01:00
bd7b561b28 -> v1.23.12 (267) 2022-03-02 18:29:11 +01:00
37c3a1ec76 Refactoring PVOrdiniAcquisto 2022-03-02 18:28:27 +01:00
62e69ad5bf Finish v1.23.11(266) 2022-03-01 12:00:02 +01:00
3a6ba51a69 Finish v1.23.11(266) 2022-03-01 12:00:01 +01:00
767088f1d0 -> v1.23.11 (266) 2022-03-01 11:59:54 +01:00
d0f6999dd8 Aggiunto barcode nel messaggio di errore 2022-03-01 11:59:20 +01:00
f88d7892bd Finish v1.23.10(265) 2022-02-28 18:42:26 +01:00
3df5e406ef Finish v1.23.10(265) 2022-02-28 18:42:25 +01:00
8e0728c2b4 -> 1.23.10 (265) 2022-02-28 18:42:19 +01:00
0a2d47110d Refactoring ordini acquisto 2022-02-28 18:38:41 +01:00
4ed8c825dd Merge remote-tracking branch 'origin/develop' into develop 2022-02-28 17:01:16 +01:00
0a6d01628f Fix su open e close del dialog progress 2022-02-28 17:01:11 +01:00
453c8e0cad Finish v.1.23.9(264) 2022-02-28 15:57:45 +01:00
ee43d1e985 Finish v.1.23.9(264) 2022-02-28 15:57:45 +01:00
86d472fb88 -> v1.23.9 (264) 2022-02-28 15:57:40 +01:00
61c3458088 Finish flag_scan_art 2022-02-28 15:56:44 +01:00
85c4768e51 rimossa progress che si blocca in conferma filtri spedizione 2022-02-28 15:56:21 +01:00
f1b4ce469e Merge branch 'develop' into feature/flag_scan_art 2022-02-28 15:42:35 +01:00
6071b3eb44 Finish v1.23.8(263) 2022-02-28 09:52:59 +01:00
1d2bd20584 Finish v1.23.8(263) 2022-02-28 09:52:58 +01:00
756389e6c6 -> v1.23.8 (263) 2022-02-28 09:52:54 +01:00
4b19129a2f Fix su bindings in dialogInputQuantity.
Piccolo refactoring UI di activity di ordine di acquisto.
2022-02-28 09:52:23 +01:00
f6aadf1115 Finish v1.23.7(262) 2022-02-25 17:37:19 +01:00
3a5de50353 Finish v1.23.7(262) 2022-02-25 17:37:19 +01:00
cf3b8749dc -> v1.23.7 (262) 2022-02-25 17:37:13 +01:00
34ff300515 workaround problema con tempistiche thread in salvataggio articolo ordine acquisto 2022-02-25 17:36:07 +01:00
0738993d4c Aggiunto flag use qta ord in accettazione 2022-02-24 11:01:01 +01:00
9765fe1807 Completato refactoring del dialog ask cliente 2022-02-24 10:04:01 +01:00
968e904715 Finish v1.23.6(261) 2022-02-23 12:50:45 +01:00
90985b899b Finish v1.23.6(261) 2022-02-23 12:50:45 +01:00
d81e0dd72c -> v1.23.6 (261) 2022-02-23 12:50:40 +01:00
ee8751163c aggiunto campo colli in arrivo in ordini di acquisto pv 2022-02-23 12:49:59 +01:00
5476e9633e Migliorato rendering di dialog ask cliente e fix su check delle posizioni da cache 2022-02-23 12:42:30 +01:00
84d800a698 Merge remote-tracking branch 'origin/develop' into develop 2022-02-22 18:56:35 +01:00
eb39e1b7c5 Refactoring DialogProgressView.
Refactoring UpdateManager.
2022-02-22 18:56:30 +01:00
57fa738c59 corretto bug sul progressDialog 2022-02-22 15:40:50 +01:00
bfc02a7d48 Finish v1.23.5(260) 2022-02-22 13:23:23 +01:00
e963e03c81 Finish v1.23.5(260) 2022-02-22 13:23:23 +01:00
f1c25a3673 -> v1.23.5 (260) 2022-02-22 13:23:18 +01:00
90d5a8d43b gestione righe multiple per articolo in documenti itnerni 2022-02-22 13:22:17 +01:00
e1b4af2402 Fix su caricamento JSON di config per i doc interni 2022-02-22 13:14:56 +01:00
86c7be4e7d Implementato flag per abilitare la scansione tramite barcode articoli 2022-02-22 09:30:09 +01:00
8686df3d8a rimossa ricerca automatica listino creata per test dev 2022-02-21 16:32:04 +01:00
6b04246f42 Merge remote-tracking branch 'origin/develop' into develop 2022-02-21 16:31:39 +01:00
8e40092130 [CARELLI - ORDINI A]
aggiunti automaticamente all'ordine gli articoli nuovi in griglia
[CARELLI - DOC INTERNI]
modificato controllo sul lotto per partire solo nei documenti richiesti (tramite setup)
2022-02-21 16:31:11 +01:00
b8dbde5ee1 Rimosso Coollection 2022-02-21 10:29:25 +01:00
ae6d37e80d Finish v1.23.4(259) 2022-02-17 13:10:44 +01:00
6dcc711006 Finish v1.23.4(259) 2022-02-17 13:10:44 +01:00
a616cb6022 -> v1.23.4 (259) 2022-02-17 13:10:38 +01:00
837781389c aumentati a 5 i numero di decimali
e aggiunto un  controllo sulla qta ordinata per il suggerimento di prelievo
2022-02-17 13:09:37 +01:00
f23ff88878 Finish v1.23.3(258) 2022-02-17 11:44:21 +01:00
738 changed files with 39010 additions and 16238 deletions

558
.idea/dbnavigator.xml generated Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetsSelectedWithDialog>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetsSelectedWithDialog>
</component>
</project>

15
.idea/git_toolbox_prj.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>

View File

@@ -0,0 +1,8 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,com.annimon.stream.Stream,of" />
</inspection_tool>
</profile>
</component>

6
.idea/kotlinc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.0" />
</component>
</project>

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_base" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS.app" />
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS.app.main" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,13 +8,13 @@
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic_vgalimenti" />
<option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base,WMS.dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
@@ -45,7 +45,7 @@
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>

View File

@@ -1,60 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sample Java Methods" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 258
def appVersionName = '1.23.3'
def appVersionCode = 353
def appVersionName = '1.32.13'
signingConfigs {
release {
@@ -31,16 +31,23 @@ android {
}
}
compileSdkVersion 31
compileSdkVersion 33
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
targetSdkVersion 31
targetSdkVersion 33
versionCode appVersionCode
versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release
javaCompileOptions {
annotationProcessorOptions {
arguments += ["room.schemaLocation":
"$projectDir/schemas".toString()]
}
}
}
buildTypes {
@@ -55,12 +62,14 @@ android {
}
android.buildFeatures.dataBinding true
android.buildFeatures.buildConfig true
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
coreLibraryDesugaringEnabled true
}
productFlavors {
}
@@ -77,23 +86,22 @@ android {
options.compilerArgs << "-Xmaxerrs" << "10000"
}
}
lintOptions {
lint {
abortOnError false
}
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"]
namespace 'it.integry.integrywmsnative'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.orhanobut:logger:2.2.0'
implementation 'com.github.lupaulus:logger:2.3.2'
//Firebase
@@ -103,27 +111,32 @@ dependencies {
implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.android.gms:play-services-basement:18.0.0'
implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.preference:preference-ktx:1.2.0'
implementation('androidx.preference:preference-ktx:1.2.0') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx'
}
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0"
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.annimon:stream:1.2.2'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.4.1'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'org.apache.commons:commons-text:1.9'
//MVVM
def dagger2_version = '2.40'
def dagger2_version = '2.40.1'
api "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version"
@@ -138,15 +151,16 @@ dependencies {
implementation 'com.github.cachapa:ExpandableLayout:2.9.2'
implementation 'com.github.frankiesardo:linearlistview:1.0.1@aar'
implementation 'com.github.fede87:StatusBarAlert:1.0.1'
testImplementation 'junit:junit:4.13.2'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
def room_version = "2.4.1"
def room_version = "2.5.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-rxjava3:$room_version"
androidTestImplementation "androidx.room:room-testing:2.5.0"
//AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7'
@@ -157,11 +171,22 @@ dependencies {
implementation project(':barcode_base_android_library')
implementation project(':honeywellscannerlibrary')
implementation project(':keyobardemulatorscannerlibrary')
androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
androidTestImplementation 'org.testng:testng:7.4.0'
implementation 'com.github.RaviKoradiya:LiveAdapter:1.3.4'
// Required -- JUnit 4 framework
// testImplementation "org.junit.jupiter:junit-jupiter-api:5.8.1"
// androidTestImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
// androidTestImplementation 'org.testng:testng:7.4.0'
//Bluetooth device manager
implementation 'com.github.harry1453:android-bluetooth-serial:v1.1'
// RxJava is also required.
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
}
repositories {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +0,0 @@
package it.integry.integrywmsnative;
import android.content.Context;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("it.integry.integrywmsnative", appContext.getPackageName());
}
}

View File

@@ -1,8 +0,0 @@
package it.integry.integrywmsnative.gest.spedizione;
class SpedizioneViewModelTest {
@org.junit.jupiter.api.Test
void createNewLU() {
}
}

View File

@@ -1,13 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.integry.integrywmsnative">
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="32"
tools:ignore="ScopedStorage" />
<application
android:name=".MainApplication"
@@ -19,24 +29,32 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
android:fullBackupContent="@xml/backup_descriptor">
android:fullBackupContent="@xml/backup_descriptor"
android:requestLegacyExternalStorage="true">
<activity
android:name=".gest.spedizione.SpedizioneActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.prod_dettaglio_linea.ProdDettaglioLineaActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.contab_doc_interni.edit_form.DocInterniEditFormActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.picking_resi.PickingResiActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" />
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.main.MainActivity"
android:theme="@style/Light"
@@ -48,24 +66,31 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".gest.accettazione_picking.AccettazionePickingActivity"
android:screenOrientation="portrait"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing" />
<activity
android:name=".gest.login.LoginActivity"
android:theme="@style/Light" />
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.accettazione_picking.AccettazionePickingActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.lista_bancali.ListaBancaliActivity"
android:label="@string/activity_lista_bancali_title"
android:screenOrientation="portrait"
android:theme="@style/Light" />
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.contenuto_bancale.ContenutoBancaleActivity"
android:label="@string/activity_contenuto_bancale_title"
android:screenOrientation="portrait"
android:theme="@style/Light" />
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.inventario.picking.PickingInventarioActivity"
android:label="@string/activity_picking_inventario_title"
android:windowSoftInputMode="adjustNothing"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden"/>
<meta-data
android:name="firebase_crashlytics_collection_enabled"

View File

@@ -3,11 +3,13 @@ package it.integry.integrywmsnative;
import android.app.Application;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.Log;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
public class MainApplication extends Application {
@@ -19,6 +21,8 @@ public class MainApplication extends Application {
public static MainApplicationModule appModule;
public static RoomModule roomModule;
private Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler;
@Inject
AppContext appContext;
@@ -40,6 +44,9 @@ public class MainApplication extends Application {
appComponent.inject(this);
res = getResources();
defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
}
// Called by the system when the device configuration changes while your component is running.
@@ -61,4 +68,22 @@ public class MainApplication extends Application {
System.exit(0);
}
// handler listener
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
try {
UtilityLogger.error(new Exception(ex));
} catch (Exception e) {
Log.e("Uncaught error", "Exception Logger failed!", e);
//MainApplication.exit();
}
// re-throw critical exception further to the os (important)
defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
}
};
}

View File

@@ -5,6 +5,12 @@ import javax.inject.Singleton;
import dagger.Component;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.data_store.db.RoomModule;
import it.integry.integrywmsnative.core.expansion.BaseActivityComponent;
import it.integry.integrywmsnative.core.expansion.BaseActivityModule;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentComponent;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragmentModule;
import it.integry.integrywmsnative.core.expansion.BaseFragmentComponent;
import it.integry.integrywmsnative.core.expansion.BaseFragmentModule;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneComponent;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneModule;
import it.integry.integrywmsnative.gest.accettazione_picking.AccettazionePickingComponent;
@@ -15,8 +21,20 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDo
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariComponent;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariModule;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsComponent;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_actions.BottomSheetInventarioActionsModule;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsComponent;
import it.integry.integrywmsnative.gest.inventario.bottom_sheet__inventario_row_actions.BottomSheetInventarioRowActionsModule;
import it.integry.integrywmsnative.gest.inventario.dialogs.ask_info_inventario.DialogAskInfoInventarioComponent;
import it.integry.integrywmsnative.gest.inventario.dialogs.ask_info_inventario.DialogAskInfoInventarioModule;
import it.integry.integrywmsnative.gest.inventario.picking.PickingInventarioComponent;
import it.integry.integrywmsnative.gest.inventario.picking.PickingInventarioModule;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent;
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliModule;
import it.integry.integrywmsnative.gest.login.LoginComponent;
@@ -33,10 +51,14 @@ import it.integry.integrywmsnative.gest.picking_resi.PickingResiComponent;
import it.integry.integrywmsnative.gest.picking_resi.PickingResiModule;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoComponent;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoModule;
import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaComponent;
import it.integry.integrywmsnative.gest.prod_dettaglio_linea.ProdDettaglioLineaModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaComponent;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.dialog_ask_mag_prossimita.DialogAskMagazzinoProssimitaModule;
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneComponent;
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneModule;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
@@ -45,12 +67,21 @@ import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamento
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditModule;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloComponent;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule;
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.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.settings.MainSettingsComponent;
import it.integry.integrywmsnative.gest.settings.MainSettingsModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.print_sscc_list.DialogPrintOrderSSCCListModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloModule;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdComponent;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.prod_fabbisogno_linee_prod.DialogRowInfoProdFabbisognoLineeProdModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
@@ -59,15 +90,27 @@ import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviForn
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsModule;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditModule;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalComponent;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditModalModule;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteComponent;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromMtbAartListModule;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListComponent;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListModule;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotComponent;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialogComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUComponent;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUModule;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Component;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2Module;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCComponent;
import it.integry.integrywmsnative.view.dialogs.printSsccUl.DialogPrintUlSSCCModule;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtComponent;
import it.integry.integrywmsnative.view.dialogs.scan_art.DialogScanArtModule;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUComponent;
@@ -79,6 +122,9 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
RoomModule.class,
SplashActivityModule.class,
MainApplicationModule.class,
BaseActivityModule.class,
BaseFragmentModule.class,
BaseDialogFragmentModule.class,
LoginModule.class,
MainActivityModule.class,
MainFragmentModule.class,
@@ -89,6 +135,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
PVOrdineAcquistoEditModule.class,
PickingLiberoModule.class,
RettificaGiacenzeModule.class,
ElencoInventariModule.class,
SpedizioneModule.class,
AccettazionePickingModule.class,
UltimeConsegneClienteModule.class,
@@ -107,13 +154,36 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
ProdOrdineProduzioneElencoModule.class,
ProdRecuperoMaterialeModule.class,
ProdVersamentoMaterialeModule.class,
DialogChooseArtsFromListaArtsModule.class,
DialogChooseArtsFromMtbColrListModule.class,
DocInterniModule.class,
DialogSelectDocInfoModule.class,
DocInterniEditFormModule.class
DocInterniEditFormModule.class,
DialogSelectDocRowsModule.class,
DialogAskClienteModule.class,
DialogEditArticoloModule.class,
DialogPrintOrderSSCCListModule.class,
ProdLineeProduzioneModule.class,
ProdDettaglioLineaModule.class,
DialogPrintUlSSCCModule.class,
DialogAskInfoInventarioModule.class,
DialogInputPesoLUModule.class,
PickingInventarioModule.class,
BottomSheetItemEditModule.class,
BottomSheetInventarioActionsModule.class,
BottomSheetInventarioRowActionsModule.class,
BottomSheetMtbColrEditModalModule.class,
DialogChooseArtsFromMtbAartListModule.class,
MainSettingsModule.class,
DialogInfoSituazioneArticoloModule.class
})
public interface MainApplicationComponent {
BaseActivityComponent.Factory baseActivityComponent();
BaseFragmentComponent.Factory baseFragmentComponent();
BaseDialogFragmentComponent.Factory baseDialogFragmentComponent();
SplashActivityComponent.Factory splashActivityComponent();
LoginComponent.Factory loginActivityComponent();
@@ -136,6 +206,8 @@ public interface MainApplicationComponent {
RettificaGiacenzeComponent.Factory rettificaGiacenzeComponent();
ElencoInventariComponent.Factory inventarioComponent();
SpedizioneComponent.Factory spedizioneComponent();
AccettazionePickingComponent.Factory accettazionePickingComponent();
@@ -148,6 +220,8 @@ public interface MainApplicationComponent {
OrdiniUscitaElencoComponent.Factory prodOrdineLavorazioneElencoComponent();
DialogAskClienteComponent.Factory dialogAskClienteComponent();
DialogInputQuantityV2Component.Factory dialogInputQuantityV2Component();
DialogInputLUProdComponent.Factory dialogInputLUProdComponent();
@@ -162,6 +236,8 @@ public interface MainApplicationComponent {
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
DialogScanGrigliaAcquistoComponent.Factory dialogScanLisAComponent();
DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent();
DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();
@@ -176,16 +252,48 @@ public interface MainApplicationComponent {
ProdVersamentoMaterialeComponent.Factory prodVersamentoMaterialeComponent();
DialogChooseArtsFromListaArtsComponent.Factory dialogChooseArtsFromListaArtsComponent();
DialogChooseArtsFromMtbColrListComponent.Factory dialogChooseArtsFromListaArtsComponent();
DocInterniComponent.Factory docInterniComponent();
DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent();
DialogSelectDocInfoComponent.Factory dialogSelectDocInfoNewViewComponent();
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent();
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
DialogEditArticoloComponent.Factory dialogEditArticoloComponent();
DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent();
ProdLineeProduzioneComponent.Factory prodLineeProduzioneComponent();
ProdDettaglioLineaComponent.Factory prodDettaglioLineaComponent();
DialogPrintUlSSCCComponent.Factory dialogPrintUlSSCCComponent();
DialogAskInfoInventarioComponent.Factory dialogAskInfoInventarioComponent();
DialogInputPesoLUComponent.Factory dialogInputPesoLUComponent();
PickingInventarioComponent.Factory pickingInventarioComponent();
BottomSheetItemEditComponent.Factory bottomSheetItemEditComponent();
BottomSheetInventarioActionsComponent.Factory bottomSheetInventarioActionsComponent();
BottomSheetInventarioRowActionsComponent.Factory bottomSheetInventarioRowActionsComponent();
BottomSheetMtbColrEditModalComponent.Factory bottomSheetMtbColrEditModalComponent();
DialogChooseArtsFromMtbAartListComponent.Factory dialogDialogDialogChooseArtsFromMtbAartListViewComponent();
MainSettingsComponent.Factory mainSettingsFragmentComponent();
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@@ -1,6 +1,13 @@
package it.integry.integrywmsnative;
import android.app.Application;
import android.os.Handler;
import android.os.Looper;
import androidx.core.os.HandlerCompat;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.inject.Singleton;
@@ -13,22 +20,33 @@ import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuRESTConsumer;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliLavorazioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliSpedizioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
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.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.update.UpdatesManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@Module
public class MainApplicationModule {
@@ -45,6 +63,24 @@ public class MainApplicationModule {
return mApplication;
}
@Provides
@Singleton
public ExecutorService providesExecutorService() {
return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
}
@Provides
@Singleton
public Handler providesMainThreadHandler() {
return HandlerCompat.createAsync(Looper.getMainLooper());
}
@Provides
@Singleton
public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) {
return new SettingsManager(mApplication, systemRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer);
}
@Provides
@Singleton
AppContext providesAppContext() {
@@ -71,6 +107,24 @@ public class MainApplicationModule {
return new MenuService(menuRESTConsumer);
}
@Provides
@Singleton
UpdatesManager provideUpdatesManager() {
return new UpdatesManager();
}
@Provides
@Singleton
DialogProgressView providesDialogProgressView() {
return DialogProgressView.newInstance();
}
@Provides
@Singleton
DialogInputQuantityV2View providesDialogInputQuantityV2View() {
return new DialogInputQuantityV2View();
}
@Provides
@Singleton
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
@@ -109,8 +163,8 @@ public class MainApplicationModule {
@Provides
@Singleton
MagazzinoRESTConsumer provideMagazzinoRESTConsumer() {
return new MagazzinoRESTConsumer();
MagazzinoRESTConsumer provideMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new MagazzinoRESTConsumer(systemRESTConsumer);
}
@Provides
@@ -131,6 +185,12 @@ public class MainApplicationModule {
return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer);
}
@Provides
@Singleton
AziendaRESTConsumer provideAziendaRESTConsumer() {
return new AziendaRESTConsumer();
}
@Provides
@Singleton
BarcodeRESTConsumer provideBarcodeRESTConsumer() {
@@ -149,6 +209,12 @@ public class MainApplicationModule {
return new SystemRESTConsumer();
}
@Provides
@Singleton
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new PVOrdiniAcquistoRESTConsumer(magazzinoRESTConsumer);
}
@Provides
@Singleton
PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
@@ -163,8 +229,8 @@ public class MainApplicationModule {
@Provides
@Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer() {
return new DocInterniRESTConsumer();
DocInterniRESTConsumer provideDocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DocInterniRESTConsumer(magazzinoRESTConsumer);
}
@Provides
@@ -179,4 +245,34 @@ public class MainApplicationModule {
return new InventarioService(giacenzaRESTConsumer);
}
@Provides
@Singleton
ProductionLinesRESTConsumer provideProductionLinesRESTConsumer() {
return new ProductionLinesRESTConsumer();
}
@Provides
@Singleton
DocumentRESTConsumer provideDocumentiRESTConsumer() {
return new DocumentRESTConsumer();
}
@Provides
@Singleton
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer() {
return new ColliSpedizioneRESTConsumer();
}
@Provides
@Singleton
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer() {
return new ColliLavorazioneRESTConsumer();
}
@Provides
@Singleton
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer() {
return new MagazzinoAutomaticoRESTConsumer();
}
}

View File

@@ -83,12 +83,13 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
private void initPermissions(Runnable onComplete) {
PermissionsHelper.askPermissions(this, onComplete, permanentlyDenied -> {
if (permanentlyDenied) {
if (permanentlyDenied)
onError(new SpannableString(getText(R.string.permissions_permanently_denied)));
} else {
initPermissions(onComplete);
}
// else {
// initPermissions(onComplete);
// }
});
}

View File

@@ -5,8 +5,9 @@ public class CommonConst {
public static class Login {
public static class Azienda {
public static String protocol = "https";
public static String host = "www2.studioml.it";
public static int port = 80;
public static int port = 443;
}
}
@@ -16,7 +17,7 @@ public class CommonConst {
public static String DEFAULT_ANONYMOUS_UL_SERIE = "UL";
public static int NUMBER_OF_DECIMAL_DIGITS = 3;
public static int NUMBER_OF_DECIMAL_DIGITS = 5;
}
public static class Files {

View File

@@ -23,7 +23,7 @@ public class BarcodeCallbackDTO {
return onScanSuccessfull;
}
public BarcodeCallbackDTO setOnScanSuccessfull(RunnableArgs<BarcodeScanDTO> onScanSuccessfull) {
public BarcodeCallbackDTO setOnScanSuccessful(RunnableArgs<BarcodeScanDTO> onScanSuccessfull) {
this.onScanSuccessfull = onScanSuccessfull;
return this;
}

View File

@@ -1,14 +1,20 @@
package it.integry.integrywmsnative.core.barcode_reader;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Pair;
import android.view.KeyEvent;
import androidx.preference.PreferenceManager;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface;
import it.integry.barcode_base_android_library.model.BarcodeSetting;
import it.integry.honeywellscannerlibrary.HoneyWellBarcodeReader;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.keyobardemulatorscannerlibrary.KeyboardEmulatorBarcodeReader;
import it.integry.pointmobilescannerlibrary.PointMobileBarcodeReader;
import it.integry.zebrascannerlibrary.ZebraBarcodeReader;
@@ -21,12 +27,7 @@ public class BarcodeManager {
private static boolean mEnabled = true;
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{
PointMobileBarcodeReader.class,
ZebraBarcodeReader.class,
HoneyWellBarcodeReader.class,
KeyboardEmulatorBarcodeReader.class
};
private static final Class<? extends BarcodeReaderInterface>[] registeredBarcodeReaderInterfaces = new Class[]{PointMobileBarcodeReader.class, ZebraBarcodeReader.class, HoneyWellBarcodeReader.class, KeyboardEmulatorBarcodeReader.class};
public static void init(Context applicationContext) throws Exception {
@@ -65,6 +66,18 @@ public class BarcodeManager {
}
});
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
var additionalSettings = new ArrayList<Pair<String, Object>>();
var scanDelay = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_DELAY, null);
var scanDelaySetting = new Pair<String, Object>(BarcodeSetting.P_TRIGGER_SCAN_DELAY, scanDelay);
additionalSettings.add(scanDelaySetting);
var scanMode = sharedPreferences.getString(MainSettingsFragment.KEY_TRIGGER_SCAN_MODE, null);
var scanModeSetting = new Pair<String, Object>(BarcodeSetting.P_TRIGGER_SCAN_MODE, scanMode);
additionalSettings.add(scanModeSetting);
BarcodeManager.changeSettings(additionalSettings);
});
}
}
@@ -81,8 +94,7 @@ public class BarcodeManager {
}
public static boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
if (mCurrentBarcodeInterface != null)
mCurrentBarcodeInterface.onKeyEvent(keyEvent);
if (mCurrentBarcodeInterface != null) mCurrentBarcodeInterface.onKeyEvent(keyEvent);
return true;
}
@@ -123,16 +135,21 @@ public class BarcodeManager {
public static void disable() {
mEnabled = false;
// UtilityLogger.info("Barcode reader disabled");
}
public static void enable() {
mEnabled = true;
// UtilityLogger.info("Barcode reader enabled");
}
public static boolean isEnabled() {
return mEnabled;
}
public static void changeSettings(List<Pair<String, Object>> settings) {
mCurrentBarcodeInterface.changeSettings(settings);
}
public static boolean isKeyboardEmulator() {
return mCurrentBarcodeInterface instanceof KeyboardEmulatorBarcodeReader;

View File

@@ -1,29 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import java.util.HashMap;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
}
protected HashMap<Integer, Object> configurations = new HashMap<>() {{
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}};
@Override
public <T> T getConfig(int key) {
return UtilityHashMap.getValue(configurations, key);
}
}

View File

@@ -1,84 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import android.content.Context;
import android.util.Pair;
import java.util.ArrayList;
import java.util.List;
public class ClassRouter {
public enum PATH {
FILTRO_ORDINI_VENDITA,
ORDINI_VENDITA,
CUSTOM_CONFIGURATION,
BARCODE_CUSTOMIZATION
}
private static Context context;
private static List<Pair<PATH, Object>> mRouteClasses = new ArrayList<>();
public static void init() {
// ClassRouter.context = context;
}
private static boolean checkIClassExists(PATH path) {
boolean methodAlreadyDeclared = false;
for(int i = 0; i < mRouteClasses.size() && !methodAlreadyDeclared; i++) {
if(mRouteClasses.get(i).first == path) methodAlreadyDeclared = true;
}
return methodAlreadyDeclared;
}
private static int getClassIndex(PATH path) {
for(int i = 0; i < mRouteClasses.size(); i++) {
if(mRouteClasses.get(i).first == path) return i;
}
return -1;
}
public static void registerPath(PATH path, Class clazz) {
if(checkIClassExists(path)) {
//throw new MethodPathAlreadyDeclaredException(path);
}
try {
mRouteClasses.add(new Pair<>(path, clazz.newInstance()));
} catch (IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
public static void deregisterPath(PATH path) {
if(checkIClassExists(path)) {
mRouteClasses.remove(getClassIndex(path));
}
}
public static <T> T getInstance(PATH path) {
try {
if (!checkIClassExists(path)) {
// throw new MethodPathNotRegisteredException(path);
}
Object instance = mRouteClasses.get(getClassIndex(path)).second;
return (T)instance;
} catch (Exception ex) {
// UtilityExceptions.defaultException(null, ex, true);
}
return null;
}
}

View File

@@ -4,15 +4,18 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.gest.accettazione.MainAccettazioneFragment;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniFragment;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariFragment;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoFragment;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.ProdOrdineProduzioneElencoFragment;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisognoLineeProdFragment;
import it.integry.integrywmsnative.gest.prod_linee_produzione.ProdLineeProduzioneFragment;
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
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;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
@@ -45,137 +48,161 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
.setFragmentFactory(UltimiArriviFornitoreFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.checkout)
.setGroupId(R.id.nav_group_spedizione)
.setCodMenu("MM010")
new MenuGroup()
.setGroupText(R.string.checkout)
.setGroupId(R.id.nav_group_spedizione)
.setCodMenu("MM010")
.addItem(new MenuItem()
.setID(R.id.nav_spedizione)
.setCodMenu("MG046")
.setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_upload)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, DialogInfoSituazioneArticoloView.class)))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_spedizione)
.setCodMenu("MG064")
.setTitleText(R.string.rettifica_spedizione_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_spedizione)
.setDrawerIcon(R.drawable.ic_rettifica_spedizione_drawer)
.setFragmentFactory(() -> RettificaGiacenzeFragment.newInstance(GestioneEnum.VENDITA)))
.addItem(new MenuItem()
.setID(R.id.nav_free_picking)
.setCodMenu("MG047")
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
.setCodMenu("MG048")
.setTitleText(R.string.fragment_ultime_consegne_cliente_title)
.setTitleIcon(R.drawable.ic_latest_delivery_customer)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
.setFragmentFactory(UltimeConsegneClienteFragment::newInstance))
).addGroup(new MenuGroup()
.setGroupText(R.string.manufacture)
.setGroupId(R.id.nav_group_produzione)
.setCodMenu("MM009")
.addItem(new MenuItem()
.setID(R.id.nav_spedizione)
.setCodMenu("MG046")
.setTitleText(R.string.vendita_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_spedizione)
.setDrawerIcon(R.drawable.ic_black_upload)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.VENDITA, null, -1, null)))
.setID(R.id.nav_prod_ordine_produzione)
.setCodMenu("MG049")
.setTitleText(R.string.prod_ordine_produzione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_free_picking)
.setCodMenu("MG047")
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setID(R.id.nav_prod_ordine_lavorazione)
.setCodMenu("MG050")
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null)))
.addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking)
.setCodMenu("MG051")
.setTitleText(R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
.setCodMenu("MG048")
.setTitleText(R.string.fragment_ultime_consegne_cliente_title)
.setTitleIcon(R.drawable.ic_latest_delivery_customer)
.setDrawerIcon(R.drawable.ic_black_latest_delivery)
.setFragmentFactory(UltimeConsegneClienteFragment::newInstance))
).addGroup(new MenuGroup()
.setGroupText(R.string.manufacture)
.setGroupId(R.id.nav_group_produzione)
.setCodMenu("MM009")
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_produzione)
.setCodMenu("MG049")
.setTitleText(R.string.prod_ordine_produzione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdOrdineProduzioneElencoFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_ordine_lavorazione)
.setCodMenu("MG050")
.setTitleText(R.string.prod_ordine_lavorazione_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_lavorazione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, null)))
.addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking)
.setCodMenu("MG051")
.setTitleText(it.integry.integrywmsnative.R.string.free_lav_picking)
.setTitleIcon(R.drawable.ic_dashboard_prod_picking_libero)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.LAVORAZIONE)))
.addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord)
.setCodMenu("MG052")
.setTitleText(R.string.prod_fabbisogno_linee_prod_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_load_shelf)
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_versamento_materiale)
.setCodMenu("MG053")
.setTitleText(R.string.prod_versamento_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_recupero_materiale)
.setCodMenu("MG054")
.setTitleText(R.string.prod_recupero_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_prod_rientro_merce)
.setCodMenu("MG059")
.setTitleText(it.integry.integrywmsnative.R.string.rientro_merce_fragment_title)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
.setGroupId(R.id.nav_group_movimentazione_interna)
.setCodMenu("MM011")
.addItem(new MenuItem()
.setID(R.id.nav_versamento_merce)
.setCodMenu("MG055")
.setTitleText(R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
.setID(R.id.nav_prod_posizionamento_da_ord)
.setCodMenu("MG052")
.setTitleText(R.string.prod_fabbisogno_linee_prod_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_merce)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(VersamentoMerceFragment::newInstance))
.setFragmentFactory(ProdFabbisognoLineeProdFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_giacenze)
.setCodMenu("MG056")
.setTitleText(R.string.rettifica_giacenze_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(RettificaGiacenzeFragment::newInstance))
).addGroup(
new MenuGroup()
.setCodMenu("MM012")
.setGroupText(it.integry.integrywmsnative.R.string.punto_vendita)
.setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita)
.setID(R.id.nav_prod_versamento_materiale)
.setCodMenu("MG053")
.setTitleText(R.string.prod_versamento_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdVersamentoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG057")
.setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto)
.setTitleText(it.integry.integrywmsnative.R.string.generate_orders)
.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))
.setID(R.id.nav_prod_recupero_materiale)
.setCodMenu("MG054")
.setTitleText(R.string.prod_recupero_materiale_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_recupero_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRecuperoMaterialeFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG058")
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
.setTitleText(it.integry.integrywmsnative.R.string.doc_interni)
.setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni)
.setFragmentFactory(DocInterniFragment::newInstance))
.setID(R.id.nav_prod_rientro_merce)
.setCodMenu("MG059")
.setTitleText(R.string.rientro_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_prod_accettazione_produzione)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdRientroMerceFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_linee)
.setCodMenu("MG061")
.setTitleText(R.string.nav_prod_linee_title)
.setTitleIcon(R.drawable.ic_production_line)
.setDrawerIcon(R.drawable.ic_production_line)
.setFragmentFactory(ProdLineeProduzioneFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
.setGroupId(R.id.nav_group_movimentazione_interna)
.setCodMenu("MM011")
.addItem(new MenuItem()
.setID(R.id.nav_versamento_merce)
.setCodMenu("MG055")
.setTitleText(R.string.versamento_merce_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_versamento_merce)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(VersamentoMerceFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_rettifica_giacenze)
.setCodMenu("MG056")
.setTitleText(R.string.rettifica_giacenze_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(RettificaGiacenzeFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_inventario)
.setCodMenu("MG062")
.setTitleText(R.string.inventario_fragment_title)
.setTitleIcon(R.drawable.ic_dashboard_rettifica_giacenze)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(ElencoInventariFragment::newInstance))
).addGroup(
new MenuGroup()
.setCodMenu("MM012")
.setGroupText(it.integry.integrywmsnative.R.string.punto_vendita)
.setGroupId(it.integry.integrywmsnative.R.id.nav_group_puntivendita)
.addItem(new MenuItem()
.setCodMenu("MG057")
.setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto)
.setTitleText(it.integry.integrywmsnative.R.string.generate_orders)
.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)
.setTitleText(it.integry.integrywmsnative.R.string.doc_interni)
.setTitleIcon(R.drawable.ic_dashboard_contab_doc_interni)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_contab_doc_interni)
.setFragmentFactory(DocInterniFragment::newInstance))
// .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
@@ -183,7 +210,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
// .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
// .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
// .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance()))
);
);
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.exceptions;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
public class MethodPathNotRegisteredException extends Exception {
public MethodPathNotRegisteredException(ClassRouter.PATH path) {
super(String.format("Path %s is not registered", path.toString()));
}
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IBarcodeCustomization {
boolean shouldForceToEan13(String barcode);
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface ICustomConfiguration {
<T>T getConfig(int key);
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IFiltroOrdiniVendita {
boolean shoudShowCodMdepFilter();
boolean shoudShowIdViaggioFilter();
boolean shoudShowAgenteFilter();
}

View File

@@ -1,13 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public interface IOrdiniVendita {
void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed);
}

View File

@@ -4,8 +4,11 @@ import android.content.Context;
import com.google.firebase.crashlytics.FirebaseCrashlytics;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.DiskLogAdapter;
import com.orhanobut.logger.Logger;
import java.io.File;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -28,6 +31,11 @@ public class AppContext {
@Inject
AppDatabase mAppDatabase;
@Inject
SettingsManager mSettingsManager;
private File logsFolder;
public AppContext(Context context) {
this.mApplicationContext = context;
@@ -36,8 +44,6 @@ public class AppContext {
}
@Inject
public void init() {
this.initUtilities();
@@ -49,17 +55,21 @@ public class AppContext {
this.initLogger();
}
public File getLogFilePath() {
return logsFolder;
}
private void initSettings() {
Stash.init(mApplicationContext);
SettingsManager.init(mApplicationContext);
mSettingsManager.init();
}
private void initCrashlytics() {
if(!BuildConfig.DEBUG) {
if (!BuildConfig.DEBUG) {
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
if( SettingsManager.isInstanceAvailable() &&
if (SettingsManager.isInstanceAvailable() &&
(SettingsManager.i().getUserSession() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUserSession().getProfileDB())) &&
(SettingsManager.i().getUser() != null && !UtilityString.isNullOrEmpty(SettingsManager.i().getUser().getFullname()))) {
@@ -77,6 +87,10 @@ public class AppContext {
private void initLogger() {
Logger.addLogAdapter(new AndroidLogAdapter());
logsFolder = new File(mApplicationContext.getExternalFilesDir(null).getAbsolutePath());
int maxBytesSize = 5 * 1024 * 1024;
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
}
}

View File

@@ -6,13 +6,11 @@ import android.text.SpannableString;
import android.text.Spanned;
import android.text.SpannedString;
import java.lang.reflect.Method;
import java.net.ConnectException;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
@@ -39,13 +37,12 @@ public class MainContext {
try {
BarcodeManager.init(applicationContext);
} catch (Exception exception) {
exception.printStackTrace();
}
this.initDBData(() -> {
this.initMenu(() -> {
this.initReflections();
if (mListener != null) mListener.onContextInitialized();
});
});
@@ -103,30 +100,6 @@ public class MainContext {
});
}
private void initReflections() {
ClassRouter.init();
try {
String initMethod = "init";
Class dynamicContextClass = Class.forName("it.integry.wms.dynamic_customization.DynamicContext");
Method[] methods = dynamicContextClass.getMethods();
for (Method m : methods) {
if (initMethod.equals(m.getName())) {
// for static methods we can use null as instance of class
final Object newInstance = dynamicContextClass.newInstance();
m.invoke(newInstance, applicationContext);
break;
}
}
} catch (Exception e) {
// UtilityExceptions.defaultException(mContext, e, true);
}
}
public MainContext setListener(Listener listener) {
this.mListener = listener;

View File

@@ -1,49 +0,0 @@
package it.integry.integrywmsnative.core.coollection;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Contains;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Equals;
import it.integry.integrywmsnative.core.coollection.matcher.custom.EqualsIgnoreCase;
import it.integry.integrywmsnative.core.coollection.matcher.custom.GreaterThan;
import it.integry.integrywmsnative.core.coollection.matcher.custom.IsNull;
import it.integry.integrywmsnative.core.coollection.matcher.custom.LessThan;
import it.integry.integrywmsnative.core.coollection.matcher.custom.Not;
import it.integry.integrywmsnative.core.coollection.query.Query;
import java.util.Collection;
public class Coollection {
public static <T> Query<T> from(Collection<T> collection) {
return new Query<T>(collection);
}
public static Matcher eq(Object value) {
return new Equals(value);
}
public static Matcher contains(String value) {
return new Contains(value);
}
public static Matcher eqIgnoreCase(String value) {
return new EqualsIgnoreCase(value);
}
public static Matcher not(Matcher matcher) {
return new Not(matcher);
}
public static Matcher greaterThan(Number value) {
return new GreaterThan(value);
}
public static Matcher lessThan(Number value) {
return new LessThan(value);
}
public static Matcher isNull() {
return new IsNull();
}
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher;
public interface Matcher {
boolean match(Object value);
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Contains implements Matcher {
private final String matcherValue;
public Contains(String matcherValue) {
this.matcherValue = matcherValue;
}
@Override
public boolean match(Object value) {
return String.valueOf(value).contains(matcherValue);
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Equals implements Matcher {
private final Object value;
public Equals(Object value) {
this.value = value;
}
@Override
public boolean match(Object anotherValue) {
return value.equals(anotherValue);
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class EqualsIgnoreCase implements Matcher {
private final String value;
public EqualsIgnoreCase(String value) {
this.value = value;
}
@Override
public boolean match(Object anotherValue) {
return (value).equalsIgnoreCase((String) anotherValue);
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class GreaterThan implements Matcher {
private final Number value;
public GreaterThan(Number value) {
this.value = value;
}
@Override
public boolean match(Object matchValue) {
if (matchValue == null) {
return false;
}
return ((Number) matchValue).doubleValue() > value.doubleValue();
}
}

View File

@@ -1,12 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class IsNull implements Matcher {
@Override
public boolean match(Object value) {
return value == null;
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class LessThan implements Matcher {
private final Number value;
public LessThan(Number value) {
this.value = value;
}
@Override
public boolean match(Object matchValue) {
if (matchValue == null) {
return false;
}
return ((Number) matchValue).doubleValue() < value.doubleValue();
}
}

View File

@@ -1,18 +0,0 @@
package it.integry.integrywmsnative.core.coollection.matcher.custom;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
public class Not implements Matcher {
private final Matcher matcher;
public Not(Matcher matcher) {
this.matcher = matcher;
}
@Override
public boolean match(Object value) {
return !matcher.match(value);
}
}

View File

@@ -1,90 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.criteria.CriteriaList;
import it.integry.integrywmsnative.core.coollection.query.order.Order;
import it.integry.integrywmsnative.core.coollection.query.order.OrderCriteria;
import it.integry.integrywmsnative.core.coollection.query.specification.custom.AndSpecification;
import it.integry.integrywmsnative.core.coollection.query.specification.custom.OrSpecification;
public class Query<T> {
private final Collection<T> collection;
private CriteriaList<T> criterias;
private OrderCriteria<T> orderCriteria;
public Query(Collection<T> collection) {
this.collection = collection;
criterias = new CriteriaList<T>();
}
public Query<T> where(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criterias.add(criteria);
return this;
}
public Query<T> and(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criteria.setSpecification(new AndSpecification<T>());
criterias.add(criteria);
return this;
}
public Query<T> or(String method, Matcher matcher) {
Criteria<T> criteria = new Criteria<T>(method, matcher);
criteria.setSpecification(new OrSpecification<T>());
criterias.add(criteria);
return this;
}
public Query<T> orderBy(String method, Order order) {
orderCriteria = new OrderCriteria<T>(method, order);
return this;
}
public Query<T> orderBy(String method) {
return orderBy(method, Order.ASC);
}
public List<T> all() {
List<T> all = new ArrayList<T>();
for (T item : collection) {
if (criterias.match(item)) {
all.add(item);
}
}
if (orderCriteria != null) {
all = orderCriteria.sort(all);
}
return all;
}
public T first() {
List<T> all = cloneCollection(collection);
if (orderCriteria != null) {
all = orderCriteria.sort(all);
}
for (T item : all) {
if (criterias.match(item)) {
return item;
}
}
return null;
}
private List<T> cloneCollection(Collection<T> collection) {
List<T> list = new ArrayList<T>();
for (T item : collection) {
list.add(item);
}
return list;
}
}

View File

@@ -1,34 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.criteria;
import it.integry.integrywmsnative.core.coollection.matcher.Matcher;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
import it.integry.integrywmsnative.core.coollection.reflection.Phanton;
public class Criteria<T> {
private final String method;
private final Matcher matcher;
private Specification<T> specification;
public Criteria(String method, Matcher matcher) {
this.method = method;
this.matcher = matcher;
}
public void setSpecification(Specification<T> specification) {
this.specification = specification;
}
public Specification<T> specification() {
return specification;
}
public boolean match(T item) {
try {
Object value = Phanton.from(item).call(method);
return matcher.match(value);
} catch (Exception err) {
throw new RuntimeException(err);
}
}
}

View File

@@ -1,34 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.criteria;
import java.util.ArrayList;
import java.util.List;
public class CriteriaList<T> {
private List<Criteria<T>> criterias;
public CriteriaList() {
criterias = new ArrayList<Criteria<T>>();
}
public void add(Criteria<T> criteria) {
criterias.add(criteria);
}
public boolean match(T item) {
if (criterias.size() == 0) {
return true;
}
if (criterias.size() == 1) {
return criterias.get(0).match(item);
}
boolean matched = true;
for (int i = criterias.size() - 1; i > 0; i--) {
Criteria<T> one = criterias.get(i);
Criteria<T> other = criterias.get(i - 1);
matched = matched && one.specification().match(item, one, other);
}
return matched;
}
}

View File

@@ -1,5 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
public enum Order {
ASC, DESC
}

View File

@@ -1,30 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
import it.integry.integrywmsnative.core.coollection.reflection.Phanton;
import java.util.Comparator;
public class OrderComparator<T> implements Comparator<T> {
private final String method;
public OrderComparator(String method) {
this.method = method;
}
@Override
@SuppressWarnings("unchecked")
public int compare(T one, T other) {
Object oneValue = Phanton.from(one).call(method);
Object otherValue = Phanton.from(other).call(method);
if (oneValue == null || otherValue == null) {
return 0;
}
if (oneValue instanceof Comparable) {
return ((Comparable<Object>) oneValue).compareTo(otherValue);
} else {
return 0;
}
}
}

View File

@@ -1,24 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.order;
import java.util.Collections;
import java.util.List;
public class OrderCriteria<T> {
private final String method;
private final Order order;
public OrderCriteria(String method, Order order) {
this.method = method;
this.order = order;
}
public List<T> sort(List<T> list) {
Collections.sort(list, new OrderComparator<T>(method));
if (order == Order.DESC) {
Collections.reverse(list);
}
return list;
}
}

View File

@@ -1,9 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
public interface Specification<T> {
boolean match(T item, Criteria<T> one, Criteria<T> other);
}

View File

@@ -1,13 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification.custom;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
public class AndSpecification<T> implements Specification<T> {
@Override
public boolean match(T item, Criteria<T> one, Criteria<T> other) {
return one.match(item) && other.match(item);
}
}

View File

@@ -1,14 +0,0 @@
package it.integry.integrywmsnative.core.coollection.query.specification.custom;
import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria;
import it.integry.integrywmsnative.core.coollection.query.specification.Specification;
public class OrSpecification<T> implements Specification<T> {
@Override
public boolean match(T item, Criteria<T> one, Criteria<T> other) {
return one.match(item) || other.match(item);
}
}

View File

@@ -1,37 +0,0 @@
package it.integry.integrywmsnative.core.coollection.reflection;
import java.lang.reflect.Field;
public class Phanton<T> {
private final T target;
private Class<?> clazz;
private Phanton(T target) {
this.target = target;
clazz = target.getClass();
}
public static <T> Phanton<T> from(T target) {
return new Phanton<T>(target);
}
public Object call(String name) {
return invoke(name);
}
private Object invoke(String name) {
for (final Field field : clazz.getDeclaredFields()) {
try {
if (name.equals(field.getName())) {
field.setAccessible(Boolean.TRUE);
return field.get(target);
}
} catch (final IllegalAccessException e) {
throw new RuntimeException(e);
}
}
throw new RuntimeException("No such property with name " + name);
}
}

View File

@@ -8,7 +8,7 @@ import java.util.UUID;
public class DataCache {
private static List<DataCacheDTO> dataCacheList = new ArrayList<>();
private static final List<DataCacheDTO> dataCacheList = new ArrayList<>();
public static String addItem(Object item) {

View File

@@ -42,7 +42,7 @@ public class ColliDataRecoverService {
}
public boolean thereIsAnExistantSession() {
return mtbColtsSessions.size() > 0;
return mtbColtsSessions != null && mtbColtsSessions.size() > 0;
}
public List<Integer> getAllSessionIDs() {

View File

@@ -1,30 +1,78 @@
package it.integry.integrywmsnative.core.data_store.db;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.TypeConverters;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
import it.integry.integrywmsnative.core.data_store.db.converter.AppDatabaseConverters;
import it.integry.integrywmsnative.core.data_store.db.converter.BigDecimalConverter;
import it.integry.integrywmsnative.core.data_store.db.converter.DateConverter;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioDao;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioRowDao;
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.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.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;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false)
@Database(entities = {
ArticoloGriglia.class,
Griglia.class,
Ordine.class,
ArticoloOrdine.class,
SqlMtbColt.class,
SqlMtbColr.class,
InventarioRoomDTO.class,
InventarioRowRoomDTO.class
},
version = 14,
exportSchema = true)
@TypeConverters({
DateConverter.class
DateConverter.class,
BigDecimalConverter.class,
AppDatabaseConverters.class
})
public abstract class AppDatabase extends RoomDatabase {
// private AppDatabase mRoomInstance;
/**
* The only instance
*/
private static AppDatabase sInstance;
/**
* Gets the singleton instance of SampleDatabase.
*
* @param applicationContext The context.
* @return The singleton instance of SampleDatabase.
*/
public static synchronized AppDatabase getInstance(Context applicationContext) {
if (sInstance == null) {
var builder = Room.databaseBuilder(applicationContext,
AppDatabase.class, "integry_wms")
.addMigrations(MIGRATION_10_11)
.addMigrations(MIGRATION_11_12)
.addMigrations(MIGRATION_12_13)
.addMigrations(MIGRATION_13_14);
sInstance = builder.build();
}
return sInstance;
}
public abstract ArticoloGrigliaDao articoloGrigliaDao();
@@ -38,5 +86,53 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract MtbColrDao mtbColrDao();
public abstract InventarioDao inventarioDao();
public abstract InventarioRowDao inventarioRowDao();
static final Migration MIGRATION_10_11 = new Migration(10, 11) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS inventari (_id INTEGER PRIMARY KEY AUTOINCREMENT, id_inventario INTEGER, cod_mdep TEXT NOT NULL, zona TEXT, data_inventario INTEGER, data_reg INTEGER, data_ver INTEGER, filtro TEXT, flag_stato TEXT, flag_operazione TEXT, cod_anag TEXT, cod_dtip TEXT, inserito_da TEXT, registrato_da TEXT, verificato_da TEXT, data_ora_inizio INTEGER, data_ora_fine INTEGER, causale TEXT, remote_sync_date INTEGER)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventari__id ON inventari (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventari_id_inventario ON inventari (id_inventario)");
database.execSQL("CREATE TABLE IF NOT EXISTS inventario_rows (_id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER, cod_mart TEXT NOT NULL, descrizione TEXT, partita_mag TEXT, qta REAL NOT NULL DEFAULT 0, num_cnf REAL NOT NULL DEFAULT 0, qta_cnf REAL NOT NULL DEFAULT 0, unt_mis TEXT NOT NULL DEFAULT '0', data_ora_inv INTEGER, scan_cod_barre TEXT, zona TEXT, remote_sync_date INTEGER, FOREIGN KEY(parent_id) REFERENCES inventari(_id) ON UPDATE NO ACTION ON DELETE NO ACTION )");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__id ON inventario_rows (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)");
}
};
static final Migration MIGRATION_11_12 = new Migration(11, 12) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("DROP TABLE IF EXISTS ordini_tmp;");
database.execSQL("CREATE TABLE ordini_tmp (ordine_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, data_ins INTEGER, annotazioni TEXT, transmitted INTEGER NOT NULL, transmission_date INTEGER, gestione TEXT, data_ord INTEGER, num_ord INTEGER, cod_mdep TEXT, id_griglia INTEGER NOT NULL, cod_alis TEXT NOT NULL);");
database.execSQL("INSERT INTO ordini_tmp(ordine_id,data_ins,annotazioni,transmitted,transmission_date,gestione,data_ord,num_ord,cod_mdep,id_griglia,cod_alis) SELECT ordini.ordine_id,ordini.data_ins,ordini.annotazioni,ordini.transmitted,ordini.transmission_date,ordini.gestione,ordini.data_ord,ordini.num_ord,ordini.cod_mdep,ordini.id_griglia,griglie.cod_alis from ordini left outer join griglie on ordini.id_griglia = griglie.griglia_id;");
database.execSQL("DROP TABLE ordini;");
database.execSQL("ALTER TABLE ordini_tmp RENAME TO ordini;");
}
};
static final Migration MIGRATION_12_13 = new Migration(12, 13) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS inventario_rows_tmp (_id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER, cod_mart TEXT, descrizione TEXT, partita_mag TEXT, qta REAL NOT NULL DEFAULT 0, num_cnf REAL NOT NULL DEFAULT 0, qta_cnf REAL NOT NULL DEFAULT 0, unt_mis TEXT NOT NULL DEFAULT '0', data_ora_inv INTEGER, scan_cod_barre TEXT, zona TEXT, remote_sync_date INTEGER, FOREIGN KEY(parent_id) REFERENCES inventari(_id) ON UPDATE NO ACTION ON DELETE NO ACTION )");
database.execSQL("INSERT INTO inventario_rows_tmp SELECT * FROM inventario_rows");
database.execSQL("DROP TABLE inventario_rows;");
database.execSQL("ALTER TABLE inventario_rows_tmp RENAME TO inventario_rows;");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__id ON inventario_rows (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_inventario_rows__parent_id ON inventario_rows (parent_id)");
}
};
static final Migration MIGRATION_13_14 = new Migration(13, 14) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE inventari"
+ " ADD COLUMN new INTEGER");
}
};
}

View File

@@ -1,8 +1,9 @@
package it.integry.integrywmsnative.core.data_store.db;
import android.app.Application;
import android.os.Handler;
import androidx.room.Room;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
@@ -11,32 +12,38 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioDao;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioRowDao;
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.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliOrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.GrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.OrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.SqlMtbColtDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.ArticoliGrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.ArticoliOrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.GrigliaDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.OrdineDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.SqlMtbColrDataSource;
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.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioRowLocalDataSource;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.mapper.InventarioRowMapper;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
@Module
public class RoomModule {
private AppDatabase appDatabase;
public RoomModule(Application application) {
appDatabase = Room.databaseBuilder(application,
AppDatabase.class, "integry_wms")
.fallbackToDestructiveMigration()
.build();
public RoomModule(Application applicationContext) {
appDatabase = AppDatabase.getInstance(applicationContext);
}
@Singleton
@@ -84,46 +91,109 @@ public class RoomModule {
return appDatabase.mtbColrDao();
}
@Singleton
@Provides
ArticoloGrigliaRepository providesArticoloGrigliaRepository(ArticoloGrigliaDao articoloGrigliaDao) {
return new ArticoliGrigliaDataSource(articoloGrigliaDao);
InventarioDao providesInventarioDao(AppDatabase appDatabase) {
return appDatabase.inventarioDao();
}
@Singleton
@Provides
ArticoliOrdineRepository providesArticoliOrdineRepository(ArticoloOrdineDao articoloOrdineDao) {
return new ArticoliOrdineDataSource(articoloOrdineDao);
InventarioRowDao providesInventarioRowDao(AppDatabase appDatabase) {
return appDatabase.inventarioRowDao();
}
@Singleton
@Provides
InventarioRowMapper providesInventarioRowMapper() {
return new InventarioRowMapper();
}
@Singleton
@Provides
GrigliaRepository providesGrigliaRepository(GrigliaDao grigliaDao) {
return new GrigliaDataSource(grigliaDao);
InventarioMapper providesInventarioMapper(InventarioRowMapper inventarioRowMapper) {
return new InventarioMapper(inventarioRowMapper);
}
@Singleton
@Provides
InventarioLocalDataSource providesInventarioLocalDataSource(ExecutorService executorService, InventarioDao inventarioDao) {
return new InventarioLocalDataSource(executorService, inventarioDao);
}
@Singleton
@Provides
InventarioRowLocalDataSource providesInventarioRowLocalDataSource(ExecutorService executorService, InventarioRowDao inventarioRowDao) {
return new InventarioRowLocalDataSource(executorService, inventarioRowDao);
}
@Singleton
@Provides
ArticoloGrigliaRepository providesArticoloGrigliaRepository(ExecutorService executorService, Handler handler, ArticoloGrigliaDao articoloGrigliaDao) {
return new ArticoliGrigliaDataSource(executorService, handler, articoloGrigliaDao);
}
@Singleton
@Provides
OrdineRepository providesOrdineRepository(OrdineDao ordineDao) {
return new OrdineDataSource(ordineDao);
ArticoliOrdineRepository providesArticoliOrdineRepository(ExecutorService executorService, Handler handler, ArticoloOrdineDao articoloOrdineDao) {
return new ArticoliOrdineDataSource(executorService, handler, articoloOrdineDao);
}
@Singleton
@Provides
MtbColtRepository providesMtbColtRepository(MtbColtDao mtbColtDao) {
return new SqlMtbColtDataSource(mtbColtDao);
GrigliaRepository providesGrigliaRepository(ExecutorService executorService, Handler handler, GrigliaDao grigliaDao) {
return new GrigliaDataSource(executorService, handler, grigliaDao);
}
@Singleton
@Provides
MtbColrRepository providesMtbColrRepository(MtbColrDao mtbColrDao) {
return new SqlMtbColrDataSource(mtbColrDao);
OrdineRepository providesOrdineRepository(ExecutorService executorService, Handler handler, OrdineDao ordineDao) {
return new OrdineDataSource(executorService, handler, ordineDao);
}
@Singleton
@Provides
MtbColtRepository providesMtbColtRepository(ExecutorService executorService, Handler handler, MtbColtDao mtbColtDao) {
return new SqlMtbColtDataSource(executorService, handler, mtbColtDao);
}
@Singleton
@Provides
MtbColrDataSource providesMtbColrRepository(ExecutorService executorService, Handler handler, MtbColrDao mtbColrDao) {
return new SqlMtbColrDataSource(executorService, handler, mtbColrDao);
}
@Singleton
@Provides
InventarioRepository providesInventarioRepository(ExecutorService executorService, Handler handler,
InventarioLocalDataSource inventarioLocalDataSource,
InventarioRESTConsumer inventarioRESTConsumer,
InventarioMapper inventarioMapper) {
return new InventarioRepository(inventarioLocalDataSource, inventarioRESTConsumer, inventarioMapper, handler, executorService);
}
@Singleton
@Provides
InventarioRowRepository providesInventarioRowRepository(ExecutorService executorService, Handler handler,
InventarioRowLocalDataSource inventarioRowLocalDataSource,
InventarioRESTConsumer inventarioRESTConsumer,
InventarioRowMapper inventarioRowMapper) {
return new InventarioRowRepository(inventarioRowLocalDataSource, inventarioRESTConsumer, inventarioRowMapper, handler);
}
}

View File

@@ -0,0 +1,49 @@
package it.integry.integrywmsnative.core.data_store.db.converter;
import androidx.room.TypeConverter;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class AppDatabaseConverters {
@TypeConverter
public static LocalDateTime longToLocalDateTime(Long value) {
return value == null ? null : UtilityDate.timeToLocalDateTime(value, null);
}
@TypeConverter
public static Long localDateTimeToTimestamp(LocalDateTime date) {
return date == null ? null : UtilityDate.localDateTimeToTime(date, null);
}
@TypeConverter
public static LocalDate longToLocalDate(Long value) {
return value == null ? null : UtilityDate.timeToLocalDate(value, null);
}
@TypeConverter
public static Long localDateToTimestamp(LocalDate date) {
return date == null ? null : UtilityDate.localDateToTime(date);
}
@TypeConverter
public static ArrayList<String> fromString(String value) {
Type listType = new TypeToken<ArrayList<String>>() {}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromArrayList(ArrayList<String> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
}

View File

@@ -0,0 +1,17 @@
package it.integry.integrywmsnative.core.data_store.db.converter;
import androidx.room.TypeConverter;
import java.math.BigDecimal;
public class BigDecimalConverter {
@TypeConverter
public static BigDecimal fromFloat(Float value) {
return value == null ? null : BigDecimal.valueOf(value.doubleValue());
}
@TypeConverter
public static Float dateToTimestamp(BigDecimal value) {
return value == null ? null : value.floatValue();
}
}

View File

@@ -4,9 +4,10 @@ import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.RawQuery;
import androidx.room.Update;
import androidx.sqlite.db.SupportSQLiteQuery;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
@@ -21,10 +22,13 @@ public interface ArticoloGrigliaDao {
@Insert
void insertAll(List<ArticoloGriglia> articoli);
@Insert
Long insert(ArticoloGriglia articolo);
@Update
void updateAll(List<ArticoloGriglia> articoli);
@Update
void update(ArticoloGriglia articolo);
@@ -37,12 +41,18 @@ public interface ArticoloGrigliaDao {
@Query("SELECT * FROM articoli_griglia WHERE cod_mart = :codMart AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByCodMartAndGriglia(String codMart, int idGriglia);
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan )AND id_griglia = :idGriglia LIMIT 1")
@Query("SELECT * FROM articoli_griglia WHERE (cod_mart = :scan OR bar_code =:scan) AND id_griglia = :idGriglia LIMIT 1")
ArticoloGriglia findArticoloByScanAndGriglia(String scan, int idGriglia);
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode )AND id_griglia = :idGriglia LIMIT 1")
@Query("SELECT articolo_griglia_id FROM articoli_griglia WHERE (cod_mart = :codMart AND bar_code =:barCode) AND id_griglia = :idGriglia LIMIT 1")
Integer getIdArticoloByGrigliaAndBarcodeAndCodMart(int idGriglia, String barCode, String codMart);
@RawQuery(observedEntities = ArticoloGriglia.class)
List<ArticoloGriglia> getArticoli(SupportSQLiteQuery query);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND qta_ord >= 1")
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
}

View File

@@ -8,9 +8,7 @@ import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
@Dao
public interface ArticoloOrdineDao {
@@ -34,7 +32,9 @@ public interface ArticoloOrdineDao {
@Update
void update(ArticoloOrdine articolo);
@Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId")
@Query("SELECT *" +
"FROM articoli_ordine " +
"where id_ordine = :ordineId")
List<ArticoloOrdine> findArticoliByOrdine(int ordineId);
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")

View File

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

View File

@@ -0,0 +1,27 @@
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.InventarioRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
public interface InventarioDao extends EntityDaoInterface<InventarioRoomDTO> {
@Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
List<InventarioRoomDTO> selectAll(boolean toBeSync);
@Query("SELECT * FROM " + InventarioRoomDTO.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<List<InventarioRoomDTO>> selectAllFlowable(boolean toBeSync);
}

View File

@@ -0,0 +1,28 @@
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.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
public interface InventarioRowDao extends EntityDaoInterface<InventarioRowRoomDTO> {
@Query("SELECT * FROM " + InventarioRowRoomDTO.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
List<InventarioRowRoomDTO> selectAll(boolean toBeSync);
@Query("SELECT * FROM " + InventarioRowRoomDTO.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" AND " + InventarioRowRoomDTO.Columns.PARENT_ID + " = :parentId " +
" ORDER BY " +
" CASE WHEN :reversed = 1 THEN " + BaseSyncDTO.Columns.ID + " END DESC," +
" CASE WHEN :reversed = 0 THEN " + BaseSyncDTO.Columns.ID + " END ASC")
Flowable<List<InventarioRowRoomDTO>> selectAllFlowable(long parentId, boolean reversed, boolean toBeSync);
}

View File

@@ -9,7 +9,6 @@ import androidx.room.Update;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Dao
public interface MtbColrDao {
@@ -26,5 +25,5 @@ public interface MtbColrDao {
void delete(SqlMtbColr mtbColr);
@Query("SELECT * from mtb_colr where id_collo = :idDocument")
List<SqlMtbColr> getDocumentRows(int idDocument);
List<SqlMtbColr> getDocumentRows(long idDocument);
}

View File

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

View File

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

View File

@@ -6,10 +6,6 @@ import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity(
tableName = "articoli_griglia",
indices = {
@@ -27,7 +23,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArticoloGriglia {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_griglia_id")
private int articoloGrigliaId;
private Integer articoloGrigliaId;
@ColumnInfo(name = "cod_mart")
private String codMart;
@@ -68,14 +64,20 @@ public class ArticoloGriglia {
@ColumnInfo(name = "qta_proposta")
private float qtaProposta;
@ColumnInfo(name = "qta_ord")
private float qtaOrd;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
public int getArticoloGrigliaId() {
@ColumnInfo(name = "new_no_promo")
private boolean newNoPromo = false;
public Integer getArticoloGrigliaId() {
return articoloGrigliaId;
}
public void setArticoloGrigliaId(int articoloGrigliaId) {
public void setArticoloGrigliaId(Integer articoloGrigliaId) {
this.articoloGrigliaId = articoloGrigliaId;
}
@@ -191,28 +193,19 @@ public class ArticoloGriglia {
this.qtaProposta = qtaProposta;
}
public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) {
ArticoloOrdine articolo = new ArticoloOrdine();
public boolean isNewNoPromo() {
return newNoPromo;
}
articolo.setIdOrdine(ordine.getOrdineId());
public void setNewNoPromo(boolean newNoPromo) {
this.newNoPromo = newNoPromo;
}
articolo.setBarCode(this.getBarCode());
articolo.setCodMart(this.getCodMart());
articolo.setMediaSett(this.getMediaSett());
articolo.setFlagQtaMultipla(this.getFlagQtaMultipla());
articolo.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
articolo.setMerceDaRic(this.getMerceDaRic());
articolo.setQtaCnf(this.getQtaCnf());
articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(UtilityDate.getDateInstance());
articolo.setGgScadenza(this.getGgScadenza());
articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza()));
articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita()));
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
public float getQtaOrd() {
return qtaOrd;
}
articolo.setQtaOrd(0);
return articolo;
public void setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
}
}

View File

@@ -29,7 +29,7 @@ import java.util.Date;
public class ArticoloOrdine {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "articolo_ordine_id")
private int articoloOrdineId;
private Integer articoloOrdineId;
@ColumnInfo(name = "cod_mart")
private String codMart;
@@ -67,6 +67,11 @@ public class ArticoloOrdine {
@ColumnInfo(name = "data_ins")
private Date dataIns;
@ColumnInfo(name = "new_no_promo")
private boolean newNoPromo;
@ColumnInfo(name = "system_note")
private String systemNote;
@Ignore
private int ggScadenza = 0;
@@ -80,12 +85,15 @@ public class ArticoloOrdine {
@Ignore
private BigDecimal qtaProposta = BigDecimal.ZERO;
@Ignore
private int bgTint;
public int getArticoloOrdineId() {
public Integer getArticoloOrdineId() {
return articoloOrdineId;
}
public void setArticoloOrdineId(int articoloOrdineId) {
public void setArticoloOrdineId(Integer articoloOrdineId) {
this.articoloOrdineId = articoloOrdineId;
}
@@ -221,14 +229,52 @@ public class ArticoloOrdine {
return this;
}
public BigDecimal getQtaCnfPrevistaVendita(){
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
public BigDecimal getQtaCnfPrevistaVendita() {
return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfProposta(){
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
public BigDecimal getQtaCnfProposta() {
return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public BigDecimal getQtaCnfGiacenza(){
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING);
public BigDecimal getQtaCnfGiacenza() {
return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING);
}
public boolean isNewNoPromo() {
return newNoPromo;
}
public void setNewNoPromo(boolean newNoPromo) {
this.newNoPromo = newNoPromo;
}
public float getCnfDaRic() {
return qtaCnf > 0.f ? merceDaRic * qtaCnf : 0;
}
public int checkQtaProposta() {
int check = 0;
if (qtaProposta != null && !qtaProposta.equals(BigDecimal.ZERO)) {
check = BigDecimal.valueOf(qtaOrd).compareTo(qtaProposta);
}
return check;
}
public int getBgTint() {
return bgTint;
}
public ArticoloOrdine setBgTint(int bgTint) {
this.bgTint = bgTint;
return this;
}
public String getSystemNote() {
return systemNote;
}
public void setSystemNote(String systemNote) {
this.systemNote = systemNote;
}
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
public abstract class BaseRoomDTO {
}

View File

@@ -0,0 +1,45 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import android.provider.BaseColumns;
import androidx.room.ColumnInfo;
import androidx.room.PrimaryKey;
import java.util.Date;
public abstract class BaseSyncDTO extends BaseRoomDTO {
public static class Columns {
public static final String ID = BaseColumns._ID;
public static final String COLUMN_REMOTE_SYNC_DATE = "remote_sync_date";
}
/** The unique ID of the cheese. */
@PrimaryKey(autoGenerate = true)
@ColumnInfo(index = true, name = Columns.ID)
private Long id;
@ColumnInfo(name = Columns.COLUMN_REMOTE_SYNC_DATE)
private Date remoteSyncDate;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getRemoteSyncDate() {
return remoteSyncDate;
}
public void setRemoteSyncDate(Date remoteSyncDate) {
this.remoteSyncDate = remoteSyncDate;
}
public boolean isSyncronized() {
return getRemoteSyncDate() != null;
}
}

View File

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

View File

@@ -0,0 +1,257 @@
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 androidx.room.PrimaryKey;
import java.time.LocalDate;
import java.time.LocalDateTime;
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 {
public static final String TABLE_NAME = "inventari";
public static class Columns {
public static final String ID_INVENTARIO = "id_inventario";
public static final String COD_MDEP = "cod_mdep";
public static final String DATA_INVENTARIO = "data_inventario";
public static final String DATA_REG = "data_reg";
public static final String DATA_VER = "data_ver";
public static final String FILTRO = "filtro";
public static final String FLAG_STATO = "flag_stato";
public static final String FLAG_OPERAZIONE = "flag_operazione";
public static final String COD_ANAG = "cod_anag";
public static final String COD_DTIP = "cod_dtip";
public static final String INSERITO_DA = "inserito_da";
public static final String REGISTRATO_DA = "registrato_da";
public static final String VERIFICATO_DA = "verificato_da";
public static final String DATA_ORA_INIZIO = "data_ora_inizio";
public static final String DATA_ORA_FINE = "data_ora_fine";
public static final String CAUSALE = "causale";
public static final String ZONA = "zona";
public static final String IS_NEW = "new";
}
/** The unique ID of the cheese. */
@PrimaryKey(autoGenerate = true)
@ColumnInfo(index = true, name = BaseSyncDTO.Columns.ID)
private Long id;
/** The unique ID of the cheese. */
@ColumnInfo(index = true, name = Columns.ID_INVENTARIO)
private Long idInventario;
@NonNull
@ColumnInfo(name = Columns.COD_MDEP)
private String codMdep;
@ColumnInfo(name = Columns.DATA_INVENTARIO)
private LocalDate dataInventario;
@ColumnInfo(name = Columns.DATA_REG)
private LocalDateTime dataReg;
@ColumnInfo(name = Columns.DATA_VER)
private LocalDateTime dataVer;
@ColumnInfo(name = Columns.FILTRO)
private String filtro;
@ColumnInfo(name = Columns.FLAG_STATO)
private String flagStato;
@ColumnInfo(name = Columns.FLAG_OPERAZIONE)
private String flagOperazione;
@ColumnInfo(name = Columns.COD_ANAG)
private String codAnag;
@ColumnInfo(name = Columns.COD_DTIP)
private String codDtip;
@ColumnInfo(name = Columns.INSERITO_DA)
private String inseritoDa;
@ColumnInfo(name = Columns.REGISTRATO_DA)
private String registratoDa;
@ColumnInfo(name = Columns.VERIFICATO_DA)
private String verificatoDa;
@ColumnInfo(name = Columns.DATA_ORA_INIZIO)
private LocalDateTime dataOraInizio;
@ColumnInfo(name = Columns.DATA_ORA_FINE)
private LocalDateTime dataOraFine;
@ColumnInfo(name = Columns.CAUSALE)
private String causale;
@ColumnInfo(name = Columns.ZONA)
private String zona;
@ColumnInfo(name = Columns.IS_NEW)
private Boolean isNew = Boolean.TRUE;
@Ignore
private List<InventarioRowRoomDTO> inventarioRowList;
public Long getIdInventario() {
return idInventario;
}
public void setIdInventario(Long idInventario) {
this.idInventario = idInventario;
}
@NonNull
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(@NonNull String codMdep) {
this.codMdep = codMdep;
}
public LocalDate getDataInventario() {
return dataInventario;
}
public void setDataInventario(LocalDate dataInventario) {
this.dataInventario = dataInventario;
}
public LocalDateTime getDataReg() {
return dataReg;
}
public void setDataReg(LocalDateTime dataReg) {
this.dataReg = dataReg;
}
public LocalDateTime getDataVer() {
return dataVer;
}
public void setDataVer(LocalDateTime dataVer) {
this.dataVer = dataVer;
}
public String getFiltro() {
return filtro;
}
public void setFiltro(String filtro) {
this.filtro = filtro;
}
public String getFlagStato() {
return flagStato;
}
public void setFlagStato(String flagStato) {
this.flagStato = flagStato;
}
public String getFlagOperazione() {
return flagOperazione;
}
public void setFlagOperazione(String flagOperazione) {
this.flagOperazione = flagOperazione;
}
public String getCodAnag() {
return codAnag;
}
public void setCodAnag(String codAnag) {
this.codAnag = codAnag;
}
public String getCodDtip() {
return codDtip;
}
public void setCodDtip(String codDtip) {
this.codDtip = codDtip;
}
public String getInseritoDa() {
return inseritoDa;
}
public void setInseritoDa(String inseritoDa) {
this.inseritoDa = inseritoDa;
}
public String getRegistratoDa() {
return registratoDa;
}
public void setRegistratoDa(String registratoDa) {
this.registratoDa = registratoDa;
}
public String getVerificatoDa() {
return verificatoDa;
}
public void setVerificatoDa(String verificatoDa) {
this.verificatoDa = verificatoDa;
}
public LocalDateTime getDataOraInizio() {
return dataOraInizio;
}
public void setDataOraInizio(LocalDateTime dataOraInizio) {
this.dataOraInizio = dataOraInizio;
}
public LocalDateTime getDataOraFine() {
return dataOraFine;
}
public void setDataOraFine(LocalDateTime dataOraFine) {
this.dataOraFine = dataOraFine;
}
public String getCausale() {
return causale;
}
public void setCausale(String causale) {
this.causale = causale;
}
public String getZona() {
return zona;
}
public void setZona(String zona) {
this.zona = zona;
}
public Boolean isNew() {
return isNew;
}
public void setNew(Boolean aNew) {
isNew = aNew;
}
public List<InventarioRowRoomDTO> getInventarioRowList() {
return inventarioRowList;
}
public void setInventarioRowList(List<InventarioRowRoomDTO> inventarioRowList) {
this.inventarioRowList = inventarioRowList;
}
}

View File

@@ -0,0 +1,222 @@
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 androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(
tableName = InventarioRowRoomDTO.TABLE_NAME,
foreignKeys = {
@ForeignKey(
entity = InventarioRoomDTO.class,
parentColumns = {BaseSyncDTO.Columns.ID},
childColumns = {InventarioRowRoomDTO.Columns.PARENT_ID}
)
}
)
public class InventarioRowRoomDTO extends BaseSyncDTO implements EntityModelInterface {
public static final String TABLE_NAME = "inventario_rows";
public static class Columns {
public static final String PARENT_ID = "parent_id";
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 = "qta";
public static final String NUM_CNF = "num_cnf";
public static final String QTA_CNF = "qta_cnf";
public static final String UNT_MIS = "unt_mis";
public static final String DATA_ORA_INV = "data_ora_inv";
public static final String SCAN_COD_BARRE = "scan_cod_barre";
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;
@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, 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;
@NonNull
@ColumnInfo(name = Columns.UNT_MIS, defaultValue = "0")
private String untMis;
@ColumnInfo(name = Columns.DATA_ORA_INV)
private LocalDateTime dataOraInv;
@ColumnInfo(name = Columns.SCAN_COD_BARRE)
private String scanCodBarre;
@ColumnInfo(name = Columns.ZONA)
private String zona;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(@NonNull 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 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;
}
@NonNull
public String getUntMis() {
return untMis;
}
public void setUntMis(@NonNull String untMis) {
this.untMis = untMis;
}
public LocalDateTime getDataOraInv() {
return dataOraInv;
}
public void setDataOraInv(LocalDateTime dataOraInv) {
this.dataOraInv = dataOraInv;
}
public String getScanCodBarre() {
return scanCodBarre;
}
public void setScanCodBarre(String scanCodBarre) {
this.scanCodBarre = scanCodBarre;
}
public String getZona() {
return zona;
}
public void setZona(String zona) {
this.zona = zona;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
InventarioRowRoomDTO that = (InventarioRowRoomDTO) o;
if (getId() != null ? !getId().equals(that.getId()) : that.getId() != null) return false;
if (getParentId() != null ? !getParentId().equals(that.getParentId()) : that.getParentId() != null)
return false;
if (getCodMart() != null ? !getCodMart().equals(that.getCodMart()) : that.getCodMart() != null)
return false;
if (getPartitaMag() != null ? !getPartitaMag().equals(that.getPartitaMag()) : that.getPartitaMag() != null)
return false;
if (getDescrizione() != null ? !getDescrizione().equals(that.getDescrizione()) : that.getDescrizione() != null)
return false;
if (!getQta().equals(that.getQta())) return false;
if (!getNumConf().equals(that.getNumConf())) return false;
if (!getQtaConf().equals(that.getQtaConf())) return false;
if (!getUntMis().equals(that.getUntMis())) return false;
if (getDataOraInv() != null ? !getDataOraInv().equals(that.getDataOraInv()) : that.getDataOraInv() != null)
return false;
if (getScanCodBarre() != null ? !getScanCodBarre().equals(that.getScanCodBarre()) : that.getScanCodBarre() != null)
return false;
return getZona() != null ? getZona().equals(that.getZona()) : that.getZona() == null;
}
@Override
public int hashCode() {
int result = getId() != null ? getId().hashCode() : 0;
result = 31 * result + (getParentId() != null ? getParentId().hashCode() : 0);
result = 31 * result + (getCodMart() != null ? getCodMart().hashCode() : 0);
result = 31 * result + (getPartitaMag() != null ? getPartitaMag().hashCode() : 0);
result = 31 * result + (getDescrizione() != null ? getDescrizione().hashCode() : 0);
result = 31 * result + getQta().hashCode();
result = 31 * result + getNumConf().hashCode();
result = 31 * result + getQtaConf().hashCode();
result = 31 * result + getUntMis().hashCode();
result = 31 * result + (getDataOraInv() != null ? getDataOraInv().hashCode() : 0);
result = 31 * result + (getScanCodBarre() != null ? getScanCodBarre().hashCode() : 0);
result = 31 * result + (getZona() != null ? getZona().hashCode() : 0);
return result;
}
}

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
@@ -48,11 +49,15 @@ public class Ordine {
private String codMdep;
@Ignore
private int countArticoli = 0;
private boolean orderNewProducts = false;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
@ColumnInfo(name = "cod_alis")
@NonNull
private String codAlis;
public int getOrdineId() {
return ordineId;
}
@@ -102,14 +107,6 @@ public class Ordine {
this.transmissionDate = transmissionDate;
}
public int getCountArticoli() {
return countArticoli;
}
public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli;
}
@Nullable
public String getGestione() {
return gestione;
@@ -149,4 +146,20 @@ public class Ordine {
public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
}
public boolean isOrderNewProducts() {
return orderNewProducts;
}
public void setOrderNewProducts(boolean orderNewProducts) {
this.orderNewProducts = orderNewProducts;
}
public String getCodAlis() {
return codAlis;
}
public void setCodAlis(String codAlis) {
this.codAlis = codAlis;
}
}

View File

@@ -0,0 +1,31 @@
package it.integry.integrywmsnative.core.data_store.db.interfaces;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.RawQuery;
import androidx.room.Update;
import androidx.sqlite.db.SupportSQLiteQuery;
import java.util.List;
public interface EntityDaoInterface<R> {
@RawQuery()
List<R> execRaw(SupportSQLiteQuery query);
@Insert
long insert(R objectToInsert);
@Insert
List<Long> insertAll(List<R> objectToInsert);
@Delete
void delete(R objectToInsert);
@Update
void updateAll(List<R> cheese);
@Update
int update(R cheese);
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.data_store.db.interfaces;
public interface EntityModelInterface {
void setId(Long id);
Long getId();
}

View File

@@ -16,4 +16,6 @@ public interface ArticoloGrigliaRepository {
void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail);
void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onFail);
}

View File

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

View File

@@ -3,19 +3,18 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List;
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.expansion.RunnableArgs;
public interface MtbColrRepository {
public interface MtbColrDataSource {
void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void selectAllByDocumentID(long documentID, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError);
void getDocumentRows(SqlMtbColt sqlMtbColt, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
}

View File

@@ -3,12 +3,8 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColtRepository {

View File

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

View File

@@ -0,0 +1,142 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
public class ArticoliGrigliaDataSource extends BaseDataSource implements ArticoloGrigliaRepository {
private final ArticoloGrigliaDao mArticoloGrigliaDao;
@Inject
public ArticoliGrigliaDataSource(ExecutorService executorService,
Handler handler,
ArticoloGrigliaDao articoloGrigliaDao) {
super(executorService, handler);
this.mArticoloGrigliaDao = articoloGrigliaDao;
}
public void saveArticoliToGriglia(List<ArticoloGriglia> updatedArts, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onError) {
try {
var tmp = calcItemsToInsertAndUpdate(updatedArts);
var toInsert = UtilityHashMap.<List<ArticoloGriglia>>getValue(tmp, "toInsert");
var toUpdate = UtilityHashMap.<List<ArticoloGriglia>>getValue(tmp, "toUpdate");
var codMarts = UtilityHashMap.<List<String>>getValue(tmp, "codMarts");
executorService.execute(() -> {
mArticoloGrigliaDao.insertAll(toInsert);
mArticoloGrigliaDao.updateAll(toUpdate);
List<ArticoloGriglia> articoliGriglia = mArticoloGrigliaDao.getArticoliFromGriglia(griglia.getGrigliaId());
List<ArticoloGriglia> toDelete = Stream.of(articoliGriglia).filter(articolo -> !codMarts.contains(articolo.getCodMart())).toList();
mArticoloGrigliaDao.deleteList(toDelete);
handler.post(onSuccess);
});
} catch (Exception e) {
onError.run(e);
}
}
private HashMap<String, Object> calcItemsToInsertAndUpdate(List<ArticoloGriglia> updatedArts) throws InterruptedException, ExecutionException {
var toInsert = new ArrayList<ArticoloGriglia>();
var toUpdate = new ArrayList<ArticoloGriglia>();
var codMarts = new ArrayList<String>();
List<Callable<ArticoloGriglia>> calls = new ArrayList<>();
for (int i = 0; i < updatedArts.size(); i++) {
int finalI = i;
Callable<ArticoloGriglia> callableTask = () -> {
var updatedArt = updatedArts.get(finalI);
Integer id = mArticoloGrigliaDao.getIdArticoloByGrigliaAndBarcodeAndCodMart(updatedArt.getIdGriglia(), updatedArt.getBarCode(), updatedArt.getCodMart());
if (id != null) {
updatedArt.setArticoloGrigliaId(id);
}
return updatedArt;
};
calls.add(callableTask);
}
List<Future<ArticoloGriglia>> futures = executorService.invokeAll(calls, Long.MAX_VALUE, TimeUnit.MILLISECONDS);
for (Future<ArticoloGriglia> future : futures) {
if (future.isDone()) {
codMarts.add(future.get().getCodMart());
if (future.get().getArticoloGrigliaId() == null) toInsert.add(future.get());
else toUpdate.add(future.get());
} else {
future.cancel(true);
}
}
var tmp = new HashMap<String, Object>();
tmp.put("toInsert", toInsert);
tmp.put("toUpdate", toUpdate);
tmp.put("codMarts", codMarts);
return tmp;
}
public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia), onSuccess, onError);
}
public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(codMart, idGriglia), onSuccess, onError);
}
public void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
ArticoloGriglia articolo = mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(scan, idGriglia);
if (articolo == null) {
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(scan, idGriglia);
}
if (articolo == null) {
String barcode = StringUtils.leftPad(scan, 13, "0");
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia);
}
final ArticoloGriglia finalArticolo = articolo;
handler.post(() -> onSuccess.run(finalArticolo));
} catch (Exception e) {
onError.run(e);
}
});
}
public void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia), onSuccess, onError);
}
}

View File

@@ -0,0 +1,101 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository {
private final ArticoloOrdineDao mArticoloOrdineDao;
@Inject
public ArticoliOrdineDataSource(ExecutorService executorService,
Handler handler,
ArticoloOrdineDao articoloOrdineDao) {
super(executorService, handler);
this.mArticoloOrdineDao = articoloOrdineDao;
}
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
List<ArticoloOrdine> toUpdate = new ArrayList<>();
List<ArticoloOrdine> toInsert = new ArrayList<>();
for (ArticoloOrdine art : articoli) {
if (art.getArticoloOrdineId() != null && art.getArticoloOrdineId() > 0) {
toUpdate.add(art);
} else {
toInsert.add(art);
}
}
for (ArticoloOrdine newArt : toInsert) {
mArticoloOrdineDao.insert(newArt);
}
mArticoloOrdineDao.updateAll(toUpdate);
handler.post(onSuccess);
} catch (Exception e) {
onError.run(e);
}
});
}
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
articolo.setDataIns(UtilityDate.getDateInstance());
if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) {
execute(() -> mArticoloOrdineDao.update(articolo), onSuccess, onError);
} else {
execute(() -> mArticoloOrdineDao.insert(articolo), onSuccess, onError);
}
}
public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloOrdineDao.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode), onSuccess, onError);
}
public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), barcode);
if (articolo == null) {
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), barcode);
}
if (articolo == null) {
String scannedCode = StringUtils.leftPad(barcode, 13, '0');
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
final ArticoloOrdine finalArticolo = articolo;
handler.post(() -> onSuccess.run(finalArticolo));
} catch (Exception e) {
onError.run(e);
}
});
}
public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()), onSuccess, onError);
}
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mArticoloOrdineDao.delete(articolo),
onSuccess,
onError);
}
}

View File

@@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import java.util.concurrent.ExecutorService;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableWithReturn;
public class BaseDataSource {
protected final ExecutorService executorService;
protected final Handler handler;
protected BaseDataSource(ExecutorService executorService, Handler handler) {
this.executorService = executorService;
this.handler = handler;
}
protected <T> void execute(RunnableWithReturn<T> query, RunnableArgs<T> onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
var data = query.run();
handler.post(() -> onSuccess.run(data));
} catch (Exception ex) {
handler.post(() -> onError.run(ex));
}
});
}
protected void execute(Runnable query, Runnable onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
query.run();
handler.post(onSuccess);
} catch (Exception ex) {
handler.post(() -> onError.run(ex));
}
});
}
}

View File

@@ -0,0 +1,51 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class GrigliaDataSource extends BaseDataSource implements GrigliaRepository {
private final GrigliaDao mGrigliaDao;
@Inject
public GrigliaDataSource(ExecutorService executorService,
Handler handler,
GrigliaDao grigliaDao) {
super(executorService, handler);
this.mGrigliaDao = grigliaDao;
}
public void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError) {
execute(mGrigliaDao::getAll, onSuccess, onError);
}
public void findByCodAlis(String codAlis, RunnableArgs<Griglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mGrigliaDao.findByCodAlis(codAlis), onSuccess, onError);
}
public void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onFail) {
if (griglia.getGrigliaId() <= 0) {
execute(() -> (int) mGrigliaDao.insert(griglia), grigliaId -> {
griglia.setGrigliaId(grigliaId);
onSuccess.run(grigliaId);
}, onFail);
} else {
execute(() -> mGrigliaDao.update(griglia), () -> onSuccess.run(griglia.getGrigliaId()), onFail);
}
}
public void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mGrigliaDao.findGrigliaById(idGriglia), onSuccess, onError);
}
}

View File

@@ -0,0 +1,58 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class OrdineDataSource extends BaseDataSource implements OrdineRepository {
private final OrdineDao mOrdineDao;
@Inject
public OrdineDataSource(ExecutorService executorService,
Handler handler,
OrdineDao ordineDao) {
super(executorService, handler);
this.mOrdineDao = ordineDao;
}
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
execute(mOrdineDao::getAll, onSuccess, onError);
}
public void selectAllTransmitted(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
execute(mOrdineDao::getAllTrasnmitted, onSuccess, onError);
}
public void selectAllOpenOrders(String codAlis, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(codAlis), onSuccess, onError);
}
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mOrdineDao.insert(ordine),
ordineId -> onSuccess.run(ordineId.intValue()),
onError);
}
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mOrdineDao.update(ordine),
() -> onSuccess.run(ordine),
onError);
}
public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mOrdineDao.delete(ordine),
onSuccess,
onError);
}
}

View File

@@ -0,0 +1,53 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColrDataSource extends BaseDataSource implements MtbColrDataSource {
private final MtbColrDao mMtbColrDao;
@Inject
public SqlMtbColrDataSource(ExecutorService executorService,
Handler handler,
MtbColrDao mtbColrDao) {
super(executorService, handler);
this.mMtbColrDao = mtbColrDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
execute(mMtbColrDao::getAll, onSuccess, onError);
}
public void selectAllByDocumentID(long documentId, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColrDao.getDocumentRows(documentId), onSuccess, onError);
}
public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColrDao.insert(mtbColr),
mtbColrId -> onSuccess.run(mtbColrId.intValue()),
onError);
}
public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColrDao.update(mtbColr),
() -> onSuccess.run(mtbColr),
onError);
}
public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColrDao.delete(mtbColr),
onSuccess,
onError);
}
}

View File

@@ -0,0 +1,67 @@
package it.integry.integrywmsnative.core.data_store.db.repository.datasource;
import android.os.Handler;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColtDataSource extends BaseDataSource implements MtbColtRepository {
private final MtbColtDao mMtbColtDao;
@Inject
public SqlMtbColtDataSource(ExecutorService executorService,
Handler handler,
MtbColtDao mtbColtDao) {
super(executorService, handler);
this.mMtbColtDao = mtbColtDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) {
execute(mMtbColtDao::getAll, onSuccess, onError);
}
public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColtDao.insert(mtbColt),
mtbColtId -> onSuccess.run(mtbColtId.intValue()),
onError);
}
public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColtDao.update(mtbColt),
() -> onSuccess.run(mtbColt),
onError);
}
public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColtDao.delete(mtbColt),
onSuccess,
onError);
}
@Override
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc),
onSuccess,
onError);
}
@Override
public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(mMtbColtDao::getNextNumCollo,
onSuccess,
onError);
}
}

View File

@@ -1,92 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliGrigliaDataSource extends Repository implements ArticoloGrigliaRepository {
private final ArticoloGrigliaDao mArticoloGrigliaDao;
@Inject
public ArticoliGrigliaDataSource(ArticoloGrigliaDao articoloGrigliaDao) {
this.mArticoloGrigliaDao = articoloGrigliaDao;
}
public void saveArticoliToGriglia(List<ArticoloGriglia> articoli, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
List<ArticoloGriglia> toUpdate = new ArrayList<>();
List<ArticoloGriglia> toInsert = new ArrayList<>();
List<String> codMarts = new ArrayList<>();
for (ArticoloGriglia art : articoli) {
Integer id = mArticoloGrigliaDao.getIdArticoloByGrigliaAndBarcodeAndCodMart(griglia.getGrigliaId(), art.getBarCode(), art.getCodMart());
codMarts.add(art.getCodMart());
if (id != null) {
art.setArticoloGrigliaId(id);
toUpdate.add(art);
} else {
toInsert.add(art);
}
}
mArticoloGrigliaDao.insertAll(toInsert);
mArticoloGrigliaDao.updateAll(toUpdate);
List<ArticoloGriglia> articoliGriglia = mArticoloGrigliaDao.getArticoliFromGriglia(griglia.getGrigliaId());
List<ArticoloGriglia> toDelete = Stream.of(articoliGriglia).filter(articolo -> !codMarts.contains(articolo.getCodMart())).toList();
mArticoloGrigliaDao.deleteList(toDelete);
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
onSuccess.run(mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
onSuccess.run(mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(codMart, idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
ArticoloGriglia articolo = mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(scan, idGriglia);
if (articolo == null) {
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(scan, idGriglia);
if (articolo == null) {
String barcode = StringUtils.leftPad(scan, 13, "0");
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia);
}
}
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
}
}

View File

@@ -1,114 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdineRepository {
private final ArticoloOrdineDao mArticoloOrdineDao;
@Inject
public ArticoliOrdineDataSource(ArticoloOrdineDao articoloOrdineDao) {
this.mArticoloOrdineDao = articoloOrdineDao;
}
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
List<ArticoloOrdine> toUpdate = new ArrayList<>();
List<ArticoloOrdine> toInsert = new ArrayList<>();
for (ArticoloOrdine art : articoli) {
if (art.getArticoloOrdineId() > 0) {
toUpdate.add(art);
} else {
toInsert.add(art);
}
}
mArticoloOrdineDao.insertAll(toInsert);
mArticoloOrdineDao.updateAll(toUpdate);
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
}
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
if (articolo.getArticoloOrdineId() > 0) {
mArticoloOrdineDao.update(articolo);
} else {
mArticoloOrdineDao.insert(articolo);
}
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode);
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
String scannedCode = barcode;
ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null) {
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null) {
scannedCode = StringUtils.leftPad(scannedCode, 13, '0');
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
}
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) {
execute(() -> {
try {
onLoad.run(mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()));
} catch (Exception e) {
onError.run(e);
}
});
}
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mArticoloOrdineDao.delete(articolo);
onSave.run();
} catch (Exception e) {
onError.run(e);
}
});
}
}

View File

@@ -1,69 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class GrigliaDataSource extends Repository implements GrigliaRepository {
private final GrigliaDao mGrigliaDao;
@Inject
public GrigliaDataSource(GrigliaDao grigliaDao) {
this.mGrigliaDao = grigliaDao;
}
public void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mGrigliaDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void findByCodAlis(String codAlis, RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mGrigliaDao.findByCodAlis(codAlis));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
if (griglia.getGrigliaId() <= 0) {
griglia.setGrigliaId((int) mGrigliaDao.insert(griglia));
} else {
mGrigliaDao.update(griglia);
}
onSuccess.run(griglia.getGrigliaId());
} catch (Exception e) {
onFail.run(e);
}
});
}
public void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
onLoad.run(mGrigliaDao.findGrigliaById(idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
}
}

View File

@@ -1,90 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class OrdineDataSource extends Repository implements OrdineRepository {
private OrdineDao mOrdineDao;
@Inject
public OrdineDataSource(OrdineDao ordineDao) {
this.mOrdineDao = ordineDao;
}
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mOrdineDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mOrdineDao.getAllTrasnmitted());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mOrdineDao.insert(ordine);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mOrdineDao.update(ordine);
onSuccess.run(ordine);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mOrdineDao.delete(ordine);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
}

View File

@@ -1,9 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
public class Repository {
public void execute(Runnable query){
new Thread(query).start();
}
}

View File

@@ -1,77 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
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.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColrDataSource extends Repository implements MtbColrRepository {
private MtbColrDao mMtbColrDao;
@Inject
public SqlMtbColrDataSource(MtbColrDao mtbColrDao) {
this.mMtbColrDao = mtbColrDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColrDao.insert(mtbColr);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.update(mtbColr);
onSuccess.run(mtbColr);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColrDao.delete(mtbColr);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
public void getDocumentRows(SqlMtbColt document, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getDocumentRows(document.getId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -1,93 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColtDataSource extends Repository implements MtbColtRepository {
private MtbColtDao mMtbColtDao;
@Inject
public SqlMtbColtDataSource(MtbColtDao mtbColtDao) {
this.mMtbColtDao = mtbColtDao;
}
public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
Long id = mMtbColtDao.insert(mtbColt);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
}
public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.update(mtbColt);
onSuccess.run(mtbColt);
} catch (Exception e) {
onError.run(e);
}
});
}
public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
mMtbColtDao.delete(mtbColt);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
@Override
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtip(codDtip,codAnag,codVdes,dataDoc,numDoc));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
@Override
public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColtDao.getNextNumCollo());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
}
}

View File

@@ -0,0 +1,102 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new;
import android.os.Handler;
import android.util.Log;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
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.respository_new.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.model.MtbInvent;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
private final MutableLiveData<List<InventarioRoomDTO>> internalLiveData = new MutableLiveData<>();
@Inject
public InventarioRepository(InventarioLocalDataSource localDataSource,
InventarioRESTConsumer remoteDataSource,
InventarioMapper dataMapper,
Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
this.executorService = executorService;
}
public LiveData<List<InventarioRoomDTO>> retrieve(Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeSynchronousRetrieveAllLive(false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
UtilityLiveData.observeOnce(internalLiveData, inventories -> {
refresh(onComplete, onError);
});
return internalLiveData;
}
public void refresh(Runnable onComplete, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
var startRetrieve = new Date();
var remoteData = remoteDataSource.makeSynchronousRetrieveRequest();
Log.d("Timing [INVENTORIES RETRIEVE]", ((new Date().getTime() - startRetrieve.getTime()) / 1000) + " secs");
if (remoteData == null) remoteData = new ArrayList<>();
resolveFetch(remoteData, internalLiveData.getValue(),
(remoteItem, localItem) -> Objects.equals(remoteItem.getIdInventario(), localItem.getIdInventario()),
(remoteItem, localItem) -> {
remoteItem.setRemoteSyncDate(localItem.getRemoteSyncDate());
remoteItem.setNew(false);
}, onComplete, onError);
} catch (Exception e) {
onError.run(e);
}
});
}
public void insert(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeInsertRequest(inventarioDTO, localResult -> {
if (onComplete != null) handler.post(onComplete);
}, onError);
}
public void export(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
remoteDataSource.makeInsertRequest(dataMapper.mapRoomToRest(inventarioDTO), () -> {
inventarioDTO.setRemoteSyncDate(new Date());
localDataSource.makeUpdateRequest(inventarioDTO, (ignored) -> {
handler.post(onComplete);
}, onError);
}, onError);
}
public void delete(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeDeleteRequest(inventarioDTO, onComplete, onError);
}
}

View File

@@ -0,0 +1,64 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new;
import android.os.Handler;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.rxjava3.schedulers.Schedulers;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioRowLocalDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioRowMapper;
import it.integry.integrywmsnative.core.model.MtbInvenr;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
public class InventarioRowRepository extends _BaseRepository<MtbInvenr, InventarioRowRoomDTO, InventarioRowMapper, InventarioRowLocalDataSource, InventarioRESTConsumer> {
private final Handler handler;
private final MutableLiveData<List<InventarioRowRoomDTO>> internalLiveData = new MutableLiveData<>();
@Inject
public InventarioRowRepository(InventarioRowLocalDataSource localDataSource,
InventarioRESTConsumer remoteDataSource,
InventarioRowMapper dataMapper,
Handler handler) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
}
public LiveData<List<InventarioRowRoomDTO>> retrieve(long parentId) {
localDataSource.makeSynchronousRetrieveAllLive(parentId, true, false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
// refresh(onComplete, onError);
return internalLiveData;
}
public void insert(InventarioRowRoomDTO inventarioRowDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeInsertRequest(inventarioRowDTO, localResult -> {
if (onComplete != null) handler.post(onComplete);
}, onError);
}
public void delete(InventarioRowRoomDTO inventarioRowDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeDeleteRequest(inventarioRowDTO, onComplete, onError);
}
public void update(InventarioRowRoomDTO inventarioRowDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
inventarioRowDTO.setRemoteSyncDate(null);
localDataSource.makeUpdateRequest(inventarioRowDTO, localResult -> {
if (onComplete != null) handler.post(onComplete);
}, onError);
}
}

View File

@@ -0,0 +1,80 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source._BaseRoomDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.expansion.RunnableArgssWithReturn;
import it.integry.integrywmsnative.core.mapper.BaseMapper;
import it.integry.integrywmsnative.core.model.BaseRestDTO;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
public abstract class _BaseRepository<
A extends BaseRestDTO,
B extends BaseSyncDTO,
T extends BaseMapper<A, B>,
U extends _BaseRoomDataSource<B, ?>,
V extends _BaseRESTConsumer> {
protected final T dataMapper;
protected final U localDataSource;
protected final V remoteDataSource;
public _BaseRepository(T dataMapper, U localDataSource, V remoteDataSource) {
this.dataMapper = dataMapper;
this.localDataSource = localDataSource;
this.remoteDataSource = remoteDataSource;
}
protected void resolveFetch(List<A> remoteData,
List<B> localData,
RunnableArgssWithReturn<B, B, Boolean> keyComparator,
RunnableArgss<B, B> dataCopy,
Runnable onComplete,
RunnableArgs<Exception> onError) {
List<B> finalRemoteData = dataMapper.mapRestsToRooms(remoteData);
if (localData == null) localData = new ArrayList<>();
List<B> finalLocalData = localData;
for (var x : finalRemoteData) {
var matched = finalLocalData.stream().filter(y -> keyComparator.run(y, x))
.findFirst()
.orElse(null);
if (matched != null) {
x.setId(matched.getId());
dataCopy.run(x, matched);
}
}
var dataToUpdate = finalRemoteData.stream()
.filter(x -> x.getId() != null && finalLocalData.stream().noneMatch(x::equals))
.collect(Collectors.toList());
var dataToDelete = finalLocalData.stream()
.filter(x -> x.isSyncronized() && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.collect(Collectors.toList());
var dataToInsert = finalRemoteData.stream()
.filter(x -> x.getId() == null)
.collect(Collectors.toList());
localDataSource.makeUpdateAllRequest(dataToUpdate, localUpdateResult -> {
localDataSource.makeDeleteAllRequest(dataToDelete, () -> {
localDataSource.makeInsertAllRequest(dataToInsert, onComplete, onError);
}, onError);
}, onError);
}
}

View File

@@ -0,0 +1,32 @@
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.InventarioDao;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
@Singleton
public class InventarioLocalDataSource extends _BaseRoomDataSource<InventarioRoomDTO, InventarioDao> {
@Inject
public InventarioLocalDataSource(ExecutorService executorService, InventarioDao entityDao) {
super(executorService, entityDao, InventarioRoomDTO.TABLE_NAME);
}
@Override
public List<InventarioRoomDTO> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
return entityDao
.selectAll(onlyToBeSync);
}
@Override
public Flowable<List<InventarioRoomDTO>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(onlyToBeSync);
}
}

View File

@@ -0,0 +1,37 @@
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.InventarioRowDao;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
@Singleton
public class InventarioRowLocalDataSource extends _BaseRoomDataSource<InventarioRowRoomDTO, InventarioRowDao> {
@Inject
public InventarioRowLocalDataSource(ExecutorService executorService, InventarioRowDao entityDao) {
super(executorService, entityDao, InventarioRowRoomDTO.TABLE_NAME);
}
@Override
public List<InventarioRowRoomDTO> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
return entityDao
.selectAll(onlyToBeSync);
}
@Override
public Flowable<List<InventarioRowRoomDTO>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(-1, false, onlyToBeSync);
}
public Flowable<List<InventarioRowRoomDTO>> makeSynchronousRetrieveAllLive(long parentId, boolean reversed, boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(parentId, reversed, onlyToBeSync);
}
}

View File

@@ -0,0 +1,175 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
import androidx.annotation.NonNull;
import androidx.sqlite.db.SimpleSQLiteQuery;
import java.util.List;
import java.util.concurrent.ExecutorService;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public abstract class _BaseRoomDataSource<R extends BaseSyncDTO, T extends EntityDaoInterface<R>> {
protected final ExecutorService executorService;
protected final T entityDao;
protected final String TABLE_NAME;
public _BaseRoomDataSource(ExecutorService executorService, T entityDao, String tableName) {
this.executorService = executorService;
this.entityDao = entityDao;
this.TABLE_NAME = tableName;
}
public void makeRetrieveAllRequest(boolean onlyToBeSync, final RunnableArgs<List<R>> onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
if (onComplete != null)
onComplete.run(makeSynchronousRetrieveAllRequest(onlyToBeSync));
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public abstract List<R> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync);
public abstract Flowable<List<R>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync);
public void makeInsertAllRequest(final List<R> itemsToInsert, final Runnable onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousInsertAllRequest(itemsToInsert);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousInsertAllRequest(final List<R> itemsToInsert) {
if(itemsToInsert == null) return;
var ids = entityDao.insertAll(itemsToInsert);
for(int i = 0; i < itemsToInsert.size(); i++) {
var inputObject = itemsToInsert.get(i);
if (inputObject instanceof EntityModelInterface) {
((EntityModelInterface) inputObject).setId(ids.get(i));
}
}
}
public void makeInsertRequest(final R itemToInsert, final RunnableArgs<R> onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousInsertRequest(itemToInsert);
if (onComplete != null) onComplete.run(itemToInsert);
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousInsertRequest(final R itemToInsert) {
var id = entityDao.insert(itemToInsert);
if (itemToInsert instanceof EntityModelInterface) {
((EntityModelInterface) itemToInsert).setId(id);
}
}
public void makeUpdateRequest(final R itemToUpdate, final RunnableArgs<R> onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousUpdateRequest(itemToUpdate);
if (onComplete != null) onComplete.run(itemToUpdate);
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousUpdateRequest(final R itemToUpdate) {
var id = entityDao.update(itemToUpdate);
}
public void makeUpdateAllRequest(final List<R> itemToUpdate, final RunnableArgs<List<R>> onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousUpdateAllRequest(itemToUpdate);
if (onComplete != null) onComplete.run(itemToUpdate);
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousUpdateAllRequest(final List<R> itemsToUpdate) {
if(itemsToUpdate == null) return;
entityDao.updateAll(itemsToUpdate);
}
public void makeDeleteRequest(@NonNull final R itemToDelete, final Runnable onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousDeleteRequest(itemToDelete);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousDeleteRequest(@NonNull final R itemToDelete) {
entityDao.delete(itemToDelete);
}
public void makeDeleteAllRequest(@NonNull final List<R> itemsToDelete, final Runnable onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousDeleteAllRequest(itemsToDelete);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousDeleteAllRequest(@NonNull final List<R> itemsToDelete) {
for (R itemToDelete : itemsToDelete) {
makeSynchronousDeleteRequest(itemToDelete);
}
}
public void makeClearAllDataRequest(boolean excludeNotSync, final Runnable onComplete, final RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
makeSynchronousClearAllDataRequest(excludeNotSync);
if (onComplete != null) onComplete.run();
} catch (Exception ex) {
if (onError != null) onError.run(ex);
}
});
}
public void makeSynchronousClearAllDataRequest(boolean excludeNotSync) {
entityDao
.execRaw(new SimpleSQLiteQuery("DELETE FROM " + TABLE_NAME + (excludeNotSync ? " WHERE " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NOT NULL" : "")));
}
}

Some files were not shown because too many files have changed in this diff Show More