Compare commits

...

1167 Commits

Author SHA1 Message Date
3ef69b8dd9 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-10 18:55:31 +01:00
6b40bd1d60 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingModule.java
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingViewModel.java
2025-12-10 18:54:59 +01:00
ab230425c3 Finish v1.50.04(553) 2025-12-10 18:51:26 +01:00
2f54b375b9 Finish v1.50.04(553)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-10 18:51:24 +01:00
9aa9b9121f -> v1.50.04 (553) 2025-12-10 18:51:16 +01:00
268ce9fce9 Sistemato dialog caricamento in accettazione merce 2025-12-10 18:49:56 +01:00
eddecc165d Fix emptyView in contenuto bancale 2025-12-10 18:17:19 +01:00
45c64ad0ac Fix su onlyResiduo in recuperaUl accettazione 2025-12-10 18:00:27 +01:00
398f0a9523 Aggiornato DialogScanOrCreateLUView per utilizzare i metodi synchronized 2025-12-10 17:50:16 +01:00
4861d53031 Finish v1.50.03(552) 2025-12-10 13:38:02 +01:00
e27a4e840a Finish v1.50.03(552)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-10 13:38:01 +01:00
cc67ac5f47 -> v1.50.03 (552) 2025-12-10 13:37:53 +01:00
8e2d110792 Rimosso da VerificaGiacenze il carcamento di tutta la gacenza dopo aver scansionato il deposito 2025-12-10 13:33:44 +01:00
5cdf33950d Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-09 17:05:00 +01:00
2727c1b01c Merge branch 'develop' into feature/RefactoringGestioneColli 2025-12-09 17:04:49 +01:00
9924165362 Finish v1.50.02(551) 2025-12-09 17:04:35 +01:00
0904388ffe Finish v1.50.02(551)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-09 17:04:34 +01:00
f86296d2a1 -> v1.50.02(551) 2025-12-09 17:04:27 +01:00
cfe2b85886 Fix anomalie 2025-12-09 17:02:57 +01:00
d57a7a53f0 Fix anomalie
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-12-09 17:00:34 +01:00
1c9d9bfc8f Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-12-09 16:17:26 +01:00
3614192ea9 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-12-09 16:15:51 +01:00
4d01a52590 Finish v1.50.01(550) 2025-12-09 16:15:28 +01:00
638e8650ee Finish v1.50.01(550)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-12-09 16:15:27 +01:00
36061faeeb -> v1.50.01 (550) 2025-12-09 16:15:19 +01:00
83a183c5a6 Fix chiudiUl accettazioneOrdine 2025-12-09 16:14:21 +01:00
fb6a68e6d4 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-09 13:33:01 +01:00
fd15235e6e Merge branch 'develop' into feature/RefactoringGestioneColli 2025-12-09 13:32:38 +01:00
a88ddab405 Finish v1.50.00(549) 2025-12-09 13:32:22 +01:00
9fb18215e3 Finish v1.50.00(549)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-09 13:32:21 +01:00
2e3af6d1b3 -> v1.50.00 (549) 2025-12-09 13:32:09 +01:00
ac38aaeea7 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-12-09 13:22:56 +01:00
ade18170ee Completati controlli anomalie ul 2025-12-09 13:09:22 +01:00
cc89441f0a Gestite anomalie ul in VersamentoMerce e Spedizione 2025-12-09 12:34:13 +01:00
f612e1c402 Iniziato refactor servizio getColloByBarcode per mostrare le anomalie ul 2025-12-09 11:04:39 +01:00
663d172edf Aggiornato AGP 8.13.1 2025-12-05 17:30:32 +01:00
5ffff22013 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-05 13:22:59 +01:00
56829d7ffd Merge branch 'develop' into feature/RefactoringGestioneColli 2025-12-05 13:19:31 +01:00
092fbd69b6 Finish v1.49.04(548) 2025-12-05 13:19:07 +01:00
878584a619 Finish v1.49.04(548)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-05 13:19:06 +01:00
5d52e2df46 -> v1.49.04 (548) 2025-12-05 13:19:02 +01:00
f25240abe4 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
#	app/src/main/java/it/integry/integrywmsnative/core/update/UpdatesManager.java
2025-12-05 13:13:00 +01:00
809d4ef5af Migliorata gestione aggiornamento obbligatorio 2025-12-05 13:05:05 +01:00
faa45cd096 In accettazione bolla aggiunta possibilità di segnare la bolla come consegnata 2025-12-05 12:23:26 +01:00
1ab9b10a13 Migliorie UI dark accettazione 2025-12-05 11:01:18 +01:00
3bbc8c4f21 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-04 19:26:56 +01:00
a952f41e61 Merge branch 'master' into feature/RefactoringGestioneColli 2025-12-04 19:26:37 +01:00
cce4d2dbb2 Finish v1.49.03(547) 2025-12-04 19:26:13 +01:00
db246e6a94 Finish v1.49.03(547)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-04 19:26:12 +01:00
37ce428bf0 -> v1.49.03 (547) 2025-12-04 19:26:08 +01:00
49d099c339 Reso obbligatorio il posizionamento in Approvvigionamento Linee 2025-12-04 19:25:12 +01:00
64875c10c3 Fix barcodeUlOut per Approvvigionamento Linee.
Aggiunto logo integry per Dark Mode.
2025-12-04 19:04:33 +01:00
8b442ea4d0 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-12-04 17:57:33 +01:00
bb1867b1c8 Aggiunto supporto per approvvigionamento linee nella gestione delle spedizioni 2025-12-04 17:55:35 +01:00
42cb721e1c Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_fabbisogno_linee_prod/rest/ProdFabbisognoLineeProdRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdView.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/dialogs/row_info/prod_fabbisogno_linee_prod/DialogRowInfoProdFabbisognoLineeProdViewModel.java
#	app/src/main/res/layout/dialog_print_ul_sscc.xml
#	app/src/main/res/layout/dialog_ultime_consegne_filtro_avanzato.xml
#	app/src/main/res/layout/dialog_ultimi_arrivi_fornitore_filtro_avanzato.xml
2025-12-04 10:39:57 +01:00
c104313d89 Migliorie UI 2025-12-04 10:04:16 +01:00
c8cc56bfd6 Fix su color dark mode 2025-12-02 12:25:08 +01:00
727c56a171 Fix su color dark mode 2025-12-02 12:14:07 +01:00
ee71349c52 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-12-02 11:38:33 +01:00
2c297db483 Fix su color dark mode 2025-11-27 18:08:38 +01:00
eb779c34ab Fix su color dark mode 2025-11-26 18:00:59 +01:00
05c306e29f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-26 16:02:32 +01:00
80b5b8db34 Finish v1.49.02(546) 2025-11-26 13:28:38 +01:00
e0b86db09d Finish v1.49.02(546)
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-11-26 13:28:37 +01:00
9d871f3ae4 -> v1.49.02 (546) 2025-11-26 13:28:32 +01:00
e025b234a7 Aggiunto deposito reale nell'header di ogni richiesta 2025-11-26 13:27:50 +01:00
e57bd79fba Merge remote-tracking branch 'origin/master-beta' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-24 17:21:20 +01:00
97fe0d53b8 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-11-24 17:21:19 +01:00
acafcf720d Merge branch 'master' into feature/RefactoringGestioneColli 2025-11-24 17:20:51 +01:00
809ef43445 Finish v1.49.01(545) 2025-11-24 17:20:23 +01:00
1079c38a5f Finish v1.49.01(545)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-24 17:20:22 +01:00
f6388eff1c -> v1.49.01 (545) 2025-11-24 17:20:18 +01:00
38f3eced41 Migliorata ricerca di fillMtbAarts. Sostituite vecchie Stream.of() con stream native 2025-11-24 17:09:40 +01:00
b5010d480f Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/data_recover/ColliDataRecoverDTO.java
#	app/src/main/java/it/integry/integrywmsnative/core/model/MtbColr.java
#	app/src/main/java/it/integry/integrywmsnative/core/model/MtbColt.java
#	app/src/main/java/it/integry/integrywmsnative/core/model/MvwSitArtUdcDetInventario.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/picking_resi/PickingResiViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailFragment.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-11-24 13:18:00 +01:00
495a8dae92 Mini migrazione di dataCollo a LocalDate 2025-11-24 13:11:55 +01:00
e61ef63225 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-24 09:39:23 +01:00
9e9bdcd16d Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-24 09:38:42 +01:00
ed938815bb Finish v1.49.00(544) 2025-11-24 09:38:12 +01:00
539e8b7c31 Finish v1.49.00(544)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-24 09:38:11 +01:00
92da8cde53 -> v1.49.00 (544) 2025-11-24 09:37:54 +01:00
fee8a13960 Aggiunto messaggio della quantità da prelevare minore della quantità totale disponibile anche in fase di chiusura o salvataggio ul 2025-11-21 17:22:48 +01:00
95c71d73ae Refactor avanti elenco ul già create 2025-11-21 15:25:26 +01:00
96d29c784d Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-21 13:33:11 +01:00
be8ce4de24 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-21 13:32:48 +01:00
3d0f7f16f9 Finish v1.48.03(543)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-21 13:32:21 +01:00
501ca404ff Finish v1.48.03(543) 2025-11-21 13:32:21 +01:00
5ad4fd7821 -> v1.48.03 (543) 2025-11-21 13:32:10 +01:00
c99c3a3b11 Fix caricamento processBarcode spedizione 2025-11-21 13:30:40 +01:00
7ccda80bfc Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-20 11:44:00 +01:00
2d67d87f94 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-20 11:43:41 +01:00
1ba2fb96ba Finish v1.48.02(542) 2025-11-20 11:43:17 +01:00
ffdd1a1df5 Finish v1.48.02(542)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-20 11:43:16 +01:00
0205255f7d -> v1.48.02 (542) 2025-11-20 11:43:03 +01:00
f4e56c8b53 Fix caricamento modal BatchLotSelection 2025-11-20 11:42:01 +01:00
e46cbca2a9 Durante il fast picking aggiunto blocco se la quantità "da prelevare" risulti inferiore al "totale disponibile" 2025-11-20 09:29:38 +01:00
83fdb89a9e Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-19 10:59:43 +01:00
d99fd542c2 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-19 10:59:25 +01:00
c21e856a0f Finish v1.48.01(541) 2025-11-19 10:59:03 +01:00
b673940dd6 Finish v1.48.01(541)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-19 10:59:03 +01:00
b0ce11cbf7 -> v1.48.01 (541) 2025-11-19 10:58:54 +01:00
f245bb5d1e Fix sitArt null in spedizione 2025-11-19 10:57:55 +01:00
4bf974e7b6 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-18 10:35:58 +01:00
95adc4bdc9 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-11-18 10:22:19 +01:00
4ef2c209c8 Finish v1.48.00(540) 2025-11-18 10:22:03 +01:00
41d77b806f Finish v1.48.00(540)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-11-18 10:22:02 +01:00
6b65c4a570 -> v1.48.00 (540) 2025-11-18 10:21:46 +01:00
1247ff590b Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/model/DtbDoct.java
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/dto/SitArtOrdDTO.java
2025-11-18 10:19:00 +01:00
adc76fe82c Passata commessa ai servizi in recupero materiali 2025-11-13 15:26:28 +01:00
1c029242ac In rientro merce aggiunto dialog di rischiesta cambio posizione ul 2025-11-13 14:49:45 +01:00
b2aea70516 Aggiunta commessa in fase di creazione della riga 2025-11-13 10:59:50 +01:00
cf2134de57 In DtbDoct sostituite date in localDate 2025-11-11 11:53:26 +01:00
4d5c0e5509 In DtbDoct sostituite date in localDate 2025-11-11 11:50:01 +01:00
21af5fc0a9 In accettazione aggiunta proposta lotto se presente nell'ordine 2025-11-07 13:28:14 +01:00
caeabdb765 Passato barcode di etichetta anonima in fase di creazione collo 2025-11-06 09:50:14 +01:00
09b984f5d0 Passato barcode di etichetta anonima in fase di creazione collo 2025-11-06 09:49:18 +01:00
ebea9d3a8f Rimosso update di dataFine in rettifica giacenze 2025-11-04 15:28:57 +01:00
ee5e80ccf4 Fix null in DialogInfoSitArt 2025-10-31 12:37:06 +01:00
9df5ac353c Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-29 15:51:29 +01:00
610d42328a Merge branch 'develop' into feature/RefactoringGestioneColli 2025-10-29 15:51:18 +01:00
dd473412cc Finish v1.47.26#2 2025-10-29 15:51:00 +01:00
4f0c5bf6dd Finish v1.47.26#2
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-29 15:50:59 +01:00
90e4e2e464 Fix Jenkinsfile 2025-10-29 15:50:24 +01:00
50e2605ea5 Finish v1.47.26(539)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-29 11:11:43 +01:00
4752e3a3a2 Finish v1.47.26(539) 2025-10-29 11:11:43 +01:00
3fe903cc12 -> v1.47.26 (539) 2025-10-29 11:11:32 +01:00
3f95a70039 Fix addEmsApi in restConsumer 2025-10-29 11:10:11 +01:00
b01657de87 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailViewModel.java
2025-10-28 16:41:08 +01:00
067443698a In Rientro merce, quando si effettua un carico è stato aggiunta la richiesta di versamento automatico 2025-10-28 16:37:23 +01:00
fbef5b5cac Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-28 12:04:15 +01:00
f2ef8ed241 Fix 2025-10-28 12:03:58 +01:00
0363f9c835 Merge branch 'master' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/RESTBuilder.java
#	app/src/main/java/it/integry/integrywmsnative/gest/login/rest/AuthenticationRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-10-28 11:49:45 +01:00
990a4d1538 Finish v1.47.25(538)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-28 11:33:12 +01:00
55c16e602d Finish v1.47.25(538) 2025-10-28 11:33:12 +01:00
6097a7f736 -> v1.47.25 (538) 2025-10-28 11:32:05 +01:00
f8b92901fd Attivato di default l'http interceptor 2025-10-28 10:38:52 +01:00
6c6daa4809 Finish v1.47.24(537) 2025-10-21 18:33:28 +02:00
de8b48d938 Finish v1.47.24(537)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-21 18:33:27 +02:00
bfa69ca78b -> v1.47.24 (537) 2025-10-21 18:33:17 +02:00
bffb471015 Fix null in spedizione 2025-10-21 18:32:15 +02:00
1c9604ffde Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-15 11:14:49 +02:00
bf39eccf72 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-10-15 11:14:32 +02:00
087e3e261c Finish v1.47.23(536)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-15 11:14:03 +02:00
2eff03dee6 Finish v1.47.23(536) 2025-10-15 11:14:03 +02:00
fc34a555bd -> v1.47.23 (536) 2025-10-15 11:13:55 +02:00
0bf21c046f Migliorie UI Dark per Documenti Interni 2025-10-15 11:13:17 +02:00
cc14e8a55d Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-08 19:48:29 +02:00
892047ffd4 Fix UI Dark. 2025-10-08 19:48:08 +02:00
2bae112d80 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/di/Converters.java
#	app/src/main/java/it/integry/integrywmsnative/gest/ordini_uscita_elenco/filters/OrdiniUscitaElencoFiltroViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/view/bottom_sheet__lu_content/BottomSheetFragmentLUContentListAdapter.java
#	app/src/main/res/layout/dialog_choose_batch_lot.xml
#	app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml
#	app/src/main/res/layout/fragment_main_ordini_uscita.xml
#	app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml
#	app/src/main/res/values/attr.xml
2025-10-08 19:33:03 +02:00
473ed536fb Finish v1.47.22(535)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-08 19:29:27 +02:00
dc342c1fee Finish v1.47.22(535) 2025-10-08 19:29:27 +02:00
81507938b1 -> v1.47.22 (535) 2025-10-08 19:29:23 +02:00
cff52140bd Fix UI Dark.
Fix separatore virgola nel dialog input quantity.
2025-10-08 19:28:34 +02:00
f2bab2f510 Implementato popup di Device in end of life (fix After Merge) 2025-10-02 19:20:22 +02:00
971e026488 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	.idea/deploymentTargetSelector.xml
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/base/DialogSimpleMessageView.java
#	app/src/main/res/values-it/strings.xml
#	app/src/main/res/values/strings.xml
2025-10-02 19:17:38 +02:00
24d90b58f9 Implementato popup di Device in end of life 2025-10-02 18:02:13 +02:00
cb9ef169f8 Rimosso style AppTheme.NewMaterial.Text.Medium e rimpiazzato con Material (fix After Merge) 2025-10-02 11:51:36 +02:00
5e27b8eaf0 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/res/layout/dialog_choose_batch_lot_item_model.xml
#	app/src/main/res/layout/dialog_info_giacenza_list_item.xml
#	app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml
#	app/src/main/res/layout/dialog_info_situazione_articolo_incoming_list_item.xml
#	app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml
#	app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml
#	app/src/main/res/layout/picking_resi_main_list__item.xml
2025-10-02 11:50:24 +02:00
b5d049aa1d Rimosso style AppTheme.NewMaterial.Text.Medium e rimpiazzato con Material 2025-10-02 11:49:59 +02:00
01028f9888 Rimossa tab bar dal main fragment 2025-10-02 11:29:48 +02:00
200424fd34 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-02 10:46:37 +02:00
eea738b595 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-10-02 10:46:16 +02:00
2774eaecbf Aggiornato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-02 10:45:31 +02:00
ea765b591c Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-10-01 18:29:44 +02:00
07bf4982a1 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-10-01 18:29:27 +02:00
648a572752 Finish v1.47.21(534) 2025-10-01 18:29:07 +02:00
022a56a584 Finish v1.47.21(534)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-10-01 18:29:06 +02:00
ea97e8f249 -> v1.47.21 (534) 2025-10-01 18:29:01 +02:00
571ad1590f .gitignore 2025-10-01 18:28:30 +02:00
c4124226bd Fix after merge 2025-10-01 18:27:16 +02:00
878ac418ed Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java
#	app/src/main/res/layout/prod_recupero_materiale_list_item.xml
2025-10-01 18:26:17 +02:00
03c02d6625 Migliorie dark mode 2025-10-01 18:22:10 +02:00
ba1118fdd8 Fix decodifica barcode in recupero materiale 2025-10-01 17:45:26 +02:00
a44d6610ef Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/res/layout/activity_prod_dettaglio_linea.xml
#	app/src/main/res/layout/fragment_linee_prod_main_list_model.xml
2025-10-01 16:38:19 +02:00
7878748548 Miglioramenti UI dark mode 2025-10-01 16:36:34 +02:00
172a8256b6 Aggiornato style AppBar 2025-10-01 14:45:25 +02:00
7d0448aa01 Aggiornato style di alcune textbox (after merge) 2025-10-01 13:00:41 +02:00
c7cc197c4c Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/res/layout/bottom_sheet_fragment__lu_content__list_item.xml
#	app/src/main/res/layout/dialog_basket_lu__mtb_colr_model.xml
#	app/src/main/res/layout/dialog_choose_arts_from_mtb_colr_list__item_model.xml
#	app/src/main/res/layout/dialog_info_giacenza_list_item.xml
#	app/src/main/res/layout/dialog_info_situazione_articolo_available_list_item.xml
#	app/src/main/res/layout/fragment_main_ordini_uscita__list_group_model.xml
#	app/src/main/res/layout/fragment_prod_rientro_merce_order_detail__mtb_colt_item_model.xml
#	app/src/main/res/layout/layout_filter_commessa__list_item.xml
#	app/src/main/res/layout/lista_contenuto_bancale_list_model.xml
#	app/src/main/res/layout/lista_giacenze_per_posizione_model.xml
#	app/src/main/res/layout/lista_picking_libero_list_model.xml
#	app/src/main/res/layout/lista_rettifica_giacenze_model.xml
#	app/src/main/res/layout/picking_resi_main_list__item.xml
2025-10-01 12:50:30 +02:00
c16f5c1747 Aggiornato style di alcune textbox 2025-10-01 12:50:02 +02:00
0736278dc0 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-09-30 17:45:34 +02:00
e190e3de3b Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-30 17:45:07 +02:00
33860a0cfe Finish v1.47.20(533)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-30 17:44:40 +02:00
15a946dfb6 Finish v1.47.20(533) 2025-09-30 17:44:40 +02:00
62adf49157 -> v1.47.20 (533) 2025-09-30 17:44:34 +02:00
64fcb7ccc8 Fix tara pedana nulla in Bottom Sheet Fragment 2025-09-30 17:42:47 +02:00
dc7ac45c29 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-09-23 18:03:32 +02:00
cebd3b8a8f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-23 18:03:16 +02:00
3ebdc72642 Finish v1.47.19(532) 2025-09-23 18:03:02 +02:00
aacf5ca76e Finish v1.47.19(532)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-23 18:03:01 +02:00
4f134bfc8e -> v1.47.19 (532) 2025-09-23 18:02:52 +02:00
a2b53f94c6 Fix di remove di callback del barcode manager nel caso di onBackPressed.
Fix UI dialog_input_quantity_v2.xml sui large display.
2025-09-23 18:01:42 +02:00
6bd1e62190 Fix errori multipli quando il menu non viene caricato 2025-09-18 17:43:44 +02:00
64407787d8 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-17 15:23:25 +02:00
ace4996c20 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-17 15:23:05 +02:00
f9f02452d7 Finish v1.47.18(531)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-17 15:22:44 +02:00
b653ae39af Finish v1.47.18(531) 2025-09-17 15:22:44 +02:00
63d1d9ecf0 -> v1.47.18 (531) 2025-09-17 15:22:40 +02:00
40e46e6aac Fix after merge 2025-09-17 15:21:47 +02:00
5dc94cbd8f Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeModule.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperoMaterialeRESTConsumer.java
#	app/src/main/res/layout/fragment_prod_recupero_materiale.xml
2025-09-17 15:14:00 +02:00
9c72a2a628 Fix su retrieve degli ultimi versamenti di materiale 2025-09-17 15:09:01 +02:00
c06c000e05 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-16 17:42:28 +02:00
48818ec05f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-16 17:42:10 +02:00
5f1b7ef4a4 Finish v1.47.17(530)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-16 17:41:52 +02:00
c36bc9d8c2 Finish v1.47.17(530) 2025-09-16 17:41:52 +02:00
ba9da26ca0 -> v1.47.17 (530) 2025-09-16 17:41:48 +02:00
21bd503027 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-16 17:40:28 +02:00
b2ad4fdb62 Migliorata gestione file di log 2025-09-16 17:40:15 +02:00
fe581580b7 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-16 12:29:08 +02:00
60e725f554 Fix su caricamento durante il chiudi ordini spedizione 2025-09-16 12:28:52 +02:00
1856ad1f4a Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-16 10:09:54 +02:00
27ed85eb6c Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/ProdRecuperoMaterialeViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java
2025-09-16 10:07:44 +02:00
2f6f9b54c2 Finish v1.47.16(529)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-16 10:05:39 +02:00
a2ef35e353 Finish v1.47.16(529) 2025-09-16 10:05:39 +02:00
b06f058ecf -> v1.47.16 (529) 2025-09-16 10:05:35 +02:00
e67cbd3760 Merge remote-tracking branch 'origin/develop' into develop 2025-09-15 17:42:12 +02:00
ce9d304043 Aggiunto invio del file raw del log nel caso in cui vada in eccezione il parsine 2025-09-15 17:36:37 +02:00
c7d9231d27 Mini fix 2025-09-12 10:23:00 +02:00
fc30b8253d Finish v1.47.15(528) 2025-09-11 13:37:26 +02:00
e8da16cb8a Finish v1.47.15(528)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-11 13:37:25 +02:00
dff725ea92 -> v1.47.15 (528) 2025-09-11 13:37:14 +02:00
e4248c8c48 Fix postValue in recupero materiale 2025-09-11 13:35:57 +02:00
a808144896 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-10 16:36:36 +02:00
601f823944 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-10 16:36:21 +02:00
819cc97113 Finish v1.47.14(527) 2025-09-10 16:36:08 +02:00
05d806f9f2 Finish v1.47.14(527)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-10 16:36:08 +02:00
6fdadffe77 -> v1.47.14 (527) 2025-09-10 16:36:04 +02:00
a245497fcf Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-10 16:32:06 +02:00
5ae9371c51 Fix su loading che appare sul popup di conferma chiusura ordine 2025-09-10 16:31:50 +02:00
4aeb37e4bc Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtViewModel.java
2025-09-10 15:53:29 +02:00
4861c689d7 Fix su codMdep non ricevuto nel caso di picking Extra Item in Spedizione 2025-09-10 15:50:02 +02:00
dfe22a76cd Fix nel dialog delle info aggiuntive delle righe: adesso non viene considerata come qta in arrivo la qta degli ordini del quale sto facendo picking. 2025-09-05 15:55:52 +02:00
24bc83b748 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/model/AvailableCodMdepsDTO.java
2025-09-05 15:22:23 +02:00
1c63908b3b Finish v1.47.13(526) 2025-09-05 11:25:31 +02:00
a622e89058 Finish v1.47.13(526)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-05 11:25:30 +02:00
ac4500e2a2 -> v1.47.13 (526) 2025-09-05 11:25:26 +02:00
6ebcbc2d6c Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/build.gradle
2025-09-05 11:24:48 +02:00
150be3cae2 Rimosso minify 2025-09-05 11:24:37 +02:00
72edf5228a Rimosso minify 2025-09-05 11:24:11 +02:00
b72a3321d9 Finish v1.47.12(525)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-05 11:03:49 +02:00
5bf71a1b0c Finish v1.47.12(525) 2025-09-05 11:03:49 +02:00
ee10427048 -> v1.47.12 (525) 2025-09-05 11:03:45 +02:00
7fb7cbf8ec Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/proguard-rules.pro
2025-09-05 11:02:17 +02:00
3a43e9238b Aggiunta esclusione classi JJWT dall'obfuscation 2025-09-05 11:01:58 +02:00
007d58a17e Aggiunta esclusione classi JJWT dall'obfuscation 2025-09-05 11:00:48 +02:00
998a59cffc Finish v1.47.11(524)#3 2025-09-05 10:37:51 +02:00
11b353a91d Finish v1.47.11(524)#3
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-05 10:37:50 +02:00
8772d11e02 Aggiunto upload simboli su Firebase 2025-09-05 10:37:36 +02:00
3d772e3722 Finish v1.47.11(524)#2 2025-09-05 10:36:55 +02:00
41cfbc273e Finish v1.47.11(524)#2
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-09-05 10:36:54 +02:00
bc67098ae0 Aggiunto upload simboli su Firebase 2025-09-05 10:36:33 +02:00
0e49c93678 Finish v1.47.11(524)#1
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-09-05 10:35:58 +02:00
ed93b88ee8 Finish v1.47.11(524)#1 2025-09-05 10:35:58 +02:00
2cb184f24b Aggiunto upload simboli su Firebase 2025-09-05 10:35:40 +02:00
126846aef2 Finish v1.47.11(524)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-09-05 10:26:20 +02:00
8ac595c6c5 Finish v1.47.11(524) 2025-09-05 10:26:20 +02:00
fc2c0fbe0c -> v1.47.11 (524) 2025-09-05 10:26:15 +02:00
0aa0b09afa Fix su null della variabile Server in Login 2025-09-05 09:47:11 +02:00
23c199d0b8 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-03 16:52:07 +02:00
9436236eaa Fix postValue in Rientro Merce 2025-09-03 16:51:48 +02:00
633f41e17d Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-03 13:26:09 +02:00
d6f26b3971 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-03 13:25:51 +02:00
fc5568a046 Finish v1.47.10(523) 2025-09-03 13:25:30 +02:00
590e9ec24e Finish v1.47.10(523)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-03 13:25:29 +02:00
984a4a156b -> v1.47.10 (523) 2025-09-03 13:25:25 +02:00
04afb4cfca Aggiunti serialized name nei DTO del dialog di selezione cliente 2025-09-03 13:24:51 +02:00
cfa527e19a Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-03 13:02:31 +02:00
572f75fe9e Merge branch 'develop' into feature/RefactoringGestioneColli 2025-09-03 13:02:10 +02:00
81eda94fe0 Finish v1.47.09(522) 2025-09-03 13:01:53 +02:00
8f02dfbee4 Finish v1.47.09(522)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-09-03 13:01:52 +02:00
75e1447a54 -> v1.47.09 (522) 2025-09-03 13:01:48 +02:00
aa6877c235 Nel popup di selezione dei lotti (in fase di picking) adesso viene anche messa a video la commessa in modo da poterla selezionare (prima non era mai stato possibile). 2025-09-02 18:11:13 +02:00
23332e1424 Merge remote-tracking branch 'origin/feature/RefactoringGestioneColli' into feature/RefactoringGestioneColli 2025-09-01 18:15:03 +02:00
fc2ffc6a62 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/build.gradle
#	barcode_base_android_library/build.gradle
2025-09-01 18:14:50 +02:00
e5f79bf7e7 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/build.gradle
#	barcode_base_android_library/build.gradle
2025-09-01 18:06:20 +02:00
d8f9886f82 Aggiornamenti librerie 2025-09-01 18:04:45 +02:00
51c5c831ee Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/settings/MainSettingsFragment.java
2025-09-01 17:09:34 +02:00
3279c4e2af Merge remote-tracking branch 'origin/develop' into develop 2025-09-01 17:05:15 +02:00
6f070e6998 Migliorie varie 2025-09-01 17:04:50 +02:00
df4bfcc955 Finish v1.47.08(521) 2025-08-27 12:37:31 +02:00
c1983cf73c Finish v1.47.08(521)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-08-27 12:37:30 +02:00
da9bbd0b1c -> v1.47.08 (521) 2025-08-27 12:37:16 +02:00
cd84d3e9a8 Fix gestione errori in spedizione 2025-08-27 12:34:39 +02:00
e79d80c2d3 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-08-26 15:11:21 +02:00
595f4a8797 Finish v1.47.07(520) 2025-08-26 15:11:00 +02:00
388f08a02f Finish v1.47.07(520)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-08-26 15:10:59 +02:00
c562735661 -> v1.47.07 (520) 2025-08-26 15:10:50 +02:00
ab137ad828 Aggiunto controllo della lunghezza di 13 per il barcode nella verifica dell'eanPeso 2025-08-26 15:09:38 +02:00
b56f209084 Modificato il toString del fornitore per il DialogSelectDocInfo 2025-08-26 15:08:42 +02:00
ae5c2c1b5a Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-08-06 10:43:34 +02:00
bddb6e2bac Merge branch 'develop' into feature/RefactoringGestioneColli 2025-08-06 10:43:16 +02:00
5107897888 Finish v1.47.06(519)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-08-06 10:42:50 +02:00
d91eaf3412 Finish v1.47.06(519) 2025-08-06 10:42:50 +02:00
caa6a7cd75 -> v1.47.06 (519) 2025-08-06 10:42:44 +02:00
567b288e4d Migliorata registrazione errore di ExportLog 2025-08-06 10:41:54 +02:00
7cfb0879af Aggiunti controlli su trasferimento pedane 2025-08-06 10:41:05 +02:00
ed4485a536 Implementate annotazioni durante l'esportazione dei trasferimenti di pedane 2025-07-31 16:54:28 +02:00
1db13de61d Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-29 11:22:36 +02:00
12388a6175 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-07-29 11:22:18 +02:00
86121bfa93 Finish v1.47.05(518)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-29 11:21:53 +02:00
669a38732f Finish v1.47.05(518) 2025-07-29 11:21:53 +02:00
e3e7a7d7c6 -> v1.47.05 (518) 2025-07-29 11:21:47 +02:00
a5a1febc0e Fix sul controllo di abort dell'inserimento qta in accettazione ordini. 2025-07-29 11:20:42 +02:00
0c77af962f Resa dinamica la visibilità dei filter chip nell'elenco degli ordini di uscita, se non ci sono fitri vengono nascosti. 2025-07-29 11:15:49 +02:00
4374dc243c Aggiunto soundAlert durante le scansioni in trasferimento pedane.
Aggiunto menu per eliminazione trasferimento non ancora chiuso.
2025-07-28 18:46:33 +02:00
26ee5c5fea Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-28 17:53:14 +02:00
f4d2e12073 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-07-28 17:53:01 +02:00
75914ab9c9 Finish v1.47.04(517) 2025-07-28 17:52:40 +02:00
d1976f3e21 Finish v1.47.04(517)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-28 17:52:39 +02:00
5ef5c4b28a -> v1.47.04 (517) 2025-07-28 17:52:34 +02:00
8acb8a04db Mini fix vari 2025-07-28 17:51:17 +02:00
05a5b3d6a3 In trasferimento pedane è stata migliorata la gestione dell'errore durante la stampa del documento.
Aggiunti a video gli estremi del documento generato.
2025-07-28 12:55:38 +02:00
e889f1e264 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-14 16:15:14 +02:00
40d9370e3a Merge branch 'develop' into feature/RefactoringGestioneColli 2025-07-14 16:14:57 +02:00
2c3d4bbc22 Finish v1.47.03(516) 2025-07-14 16:14:39 +02:00
fd8bb8e7da Finish v1.47.03(516)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-14 16:14:38 +02:00
60a088a7f4 -> v1.47.03 (516) 2025-07-14 16:14:31 +02:00
8ca5207a58 Aggiornato AGP a 8.11.1 2025-07-14 16:13:56 +02:00
9c3e4f0481 Fix su load sscc in trasferimento pedane 2025-07-14 16:05:44 +02:00
b93f5e5fa5 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-10 19:12:02 +02:00
87b45c6c27 Aggiunti controlli per trasferimento già chiuso 2025-07-10 19:11:42 +02:00
20f425354f Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-10 18:24:16 +02:00
805e939c43 Aggiunta stampa documento in trasferimento pedane 2025-07-10 18:23:47 +02:00
b9bfdb3b44 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-08 16:19:30 +02:00
acfe51e83a Merge branch 'develop' into feature/RefactoringGestioneColli 2025-07-08 16:19:10 +02:00
f2cc31e08a Finish v1.47.02(515)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-08 16:18:50 +02:00
e541031efe Finish v1.47.02(515) 2025-07-08 16:18:50 +02:00
d4b220d1e6 -> v1.47.02 (515) 2025-07-08 16:18:46 +02:00
e2a4a1ad67 Aggiunto documento in TrasferimentoPedane 2025-07-08 16:18:06 +02:00
136aa3bd9a Aggiunto documento in TrasferimentoPedane 2025-07-08 16:17:56 +02:00
6780f899d3 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-08 12:01:22 +02:00
0e46e5fae3 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	build.gradle
2025-07-08 12:01:01 +02:00
798835cb4c Finish v1.47.01(514)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-08 12:00:28 +02:00
ba72284c87 Finish v1.47.01(514) 2025-07-08 12:00:28 +02:00
603c5dd8b7 -> v1.47.01 (514) 2025-07-08 12:00:24 +02:00
43fc8be493 Aggiornato AGP a 8.11.0 2025-07-08 11:59:48 +02:00
e35284f724 Piccoli fix su Trasferimento Pedane. Aggiunte anche empty view. 2025-07-08 11:58:50 +02:00
b9de3e8b27 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-02 17:22:51 +02:00
825eaaf840 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-07-02 17:22:32 +02:00
22bace2402 Finish v1.47.00(513)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-07-02 17:22:13 +02:00
3b86460f48 Finish v1.47.00(513) 2025-07-02 17:22:13 +02:00
ddac54b513 -> v1.47.00 (513) 2025-07-02 17:22:08 +02:00
f1790c2595 Merge remote-tracking branch 'origin/feature/RefactoringGestioneColli' into feature/RefactoringGestioneColli 2025-07-02 17:20:06 +02:00
dafec91aff Aggiunta procedura di trasferimento pedane 2025-07-02 17:19:48 +02:00
d818994e3a Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaPvRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/model/pv/SaveNewVerificaRequestDTO.java
2025-07-01 15:52:06 +02:00
a385b01584 In verifica giagenza gestito salvataggio online per ogni riga 2025-07-01 15:40:02 +02:00
dec9f25c15 Nella lista degli UL gestita visualizzazione del barcode ul 2025-07-01 09:15:03 +02:00
0f3cb16ef9 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-06-30 16:55:02 +02:00
7920166110 Gestita setup per mostrare o no il cambio deposito 2025-06-30 15:31:48 +02:00
fdf719982f Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-26 18:29:18 +02:00
5d09453c39 Implementata gestione di posizioni recenti in posizionamento merce 2025-06-26 18:28:38 +02:00
f71d4e56e6 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/ean128/Ean128Service.java
2025-06-26 11:44:01 +02:00
e6f4cc9d6d Finish v1.46.24(512)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-26 11:41:01 +02:00
13d9c40119 Finish v1.46.24(512) 2025-06-26 11:41:01 +02:00
1d7125a821 -> v1.46.24 (512) 2025-06-26 11:40:57 +02:00
deb4d77203 Rimossa eliminazione del primo carattere (se 0) da SSCC durante la decodifica ean128 2025-06-26 11:40:08 +02:00
cf2f9e5ffd Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-24 16:49:45 +02:00
1f5a628eb1 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-06-24 16:49:30 +02:00
520a1cb07a Finish v1.46.23(511) 2025-06-24 16:49:12 +02:00
c620e9cb96 Finish v1.46.23(511)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-24 16:49:11 +02:00
6ef4961074 -> v1.46.23 (511) 2025-06-24 16:49:07 +02:00
01b91adc61 Migliorie login page 2025-06-24 16:48:27 +02:00
db3641668a Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-24 12:21:35 +02:00
4d81b24fd4 Refactoring thread rettifica giacenze 2025-06-24 12:21:23 +02:00
8f420111fc Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-23 15:32:22 +02:00
a20470c0f9 Fix close LU su main thread accettazione 2025-06-23 15:32:05 +02:00
31cee18b37 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-23 11:36:38 +02:00
ca9c62bc80 Aggiornato build.gradle
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-06-23 11:34:06 +02:00
dd2c19f12a Fix su @SerializedName e renderer di recupero_materiale_list_item.xml 2025-06-23 11:33:49 +02:00
36b6ba7ddd Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-20 18:50:05 +02:00
3b3ab8e7c5 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-06-20 18:49:49 +02:00
688a8e4bad Finish v1.46.22(510) 2025-06-20 18:49:21 +02:00
12796b11e5 Finish v1.46.22(510)
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-06-20 18:49:21 +02:00
f7dc857587 -> v1.46.22 (510) 2025-06-20 18:49:16 +02:00
404716d269 Migliorie in rientro merce 2025-06-20 18:48:33 +02:00
aa1c3b877d Fix gestione filtri in Spedizione 2025-06-20 18:15:30 +02:00
65e7d26655 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-20 12:18:31 +02:00
3ade0879f5 Abilitato minify in release 2025-06-20 12:18:20 +02:00
4d267acad4 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-20 11:59:12 +02:00
7c90a9b2fd Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	Jenkinsfile.groovy
2025-06-20 11:59:00 +02:00
f99c0e5514 Aggiornato Jenkinsfile 2025-06-20 11:58:45 +02:00
babc0d1736 Aggiunto minify
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-20 11:53:39 +02:00
704caa3ab2 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-20 11:40:11 +02:00
63552f6314 Aggiunta partita di magazzino in picking resi 2025-06-20 11:39:47 +02:00
60c3dd4eca Migliorie dialog filtro resi acquisti / vendite 2025-06-20 10:25:10 +02:00
6776a1e521 Fix su checkbox selectable in elenco ordini uscita / ordini accettazione 2025-06-20 10:07:34 +02:00
7d130ae1eb Refactoring message dialog 2025-06-20 09:54:43 +02:00
25e3a5ddc4 Completate implementazioni per resi fornitore 2025-06-19 17:30:05 +02:00
d44b726a66 Completato refactoring picking per resi fornitore 2025-06-18 12:09:22 +02:00
3d3113d2bf Completato refactoring picking per resi fornitore 2025-06-18 12:02:07 +02:00
e917b2a413 Completato refactoring elenco ultimi arrivi fornitore 2025-06-18 10:12:08 +02:00
96f827b692 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-17 18:21:11 +02:00
a41c09e980 Aggiunto minify 2025-06-17 18:20:42 +02:00
7961508de3 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-17 18:14:25 +02:00
3dcfe4773c Aggiornato Jenkinsfile 2025-06-17 18:14:04 +02:00
cc8b7de428 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-06-17 17:59:43 +02:00
4bf1b2a1e9 Refactoring ultimi arrivi fornitori 2025-06-17 17:59:12 +02:00
5e7af4ced4 Refactoring picking resi cliente. Da completare con picking resi fornitore. 2025-06-17 12:15:27 +02:00
b8bb20ce0d Refactoring elenco ultime consegne ed aggiunta del filtro per UDC 2025-06-16 12:29:53 +02:00
b0567e4eaa Refactoring elenco ultime consegne 2025-06-12 17:02:09 +02:00
b7e74d9bdc Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-11 10:22:11 +02:00
fd88e5cd64 Fix su anomalia barcode manager: all'apertura/chiusura del caricamento veniva sempre abilitata/disabilitata l'ultima callback del barcode manager. Adesso ogni onLoadingStarted / onLoadingEnded prova a disabilitare solo la callback della propria Activity 2025-06-11 10:21:50 +02:00
370c0b47bd Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-10 12:22:48 +02:00
04071f3bad Aggiornata gestione Rientro Merce per supportare la nuova logica dei colli 2025-06-10 12:22:23 +02:00
4901097f99 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-09 09:48:35 +02:00
6e02aec5e0 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-06-09 09:48:21 +02:00
f1c304eaeb Finish v1.46.21(509) 2025-06-09 09:48:01 +02:00
7b3fde1d71 Finish v1.46.21(509)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-09 09:48:00 +02:00
3c337fc138 -> v1.46.21 (509) 2025-06-09 09:47:57 +02:00
548cdd562a Aggiunti @SerializedName su altri DTO. 2025-06-09 09:46:56 +02:00
70a819ec83 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-06 17:43:00 +02:00
afd7ae25f3 Allineata UI di qta_layout. Aggiunti @SerializedName su altri DTO. 2025-06-06 17:42:22 +02:00
74b3613555 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-06 10:30:03 +02:00
1f1011e628 Migliorie interceptor http 2025-06-06 10:29:24 +02:00
3a8debdbc4 Migliorie rendering UI 2025-06-05 19:40:02 +02:00
143b8a5bda Aggiunti campi @SerializedName su DTO 2025-06-04 19:16:43 +02:00
d32c96818e Aggiunti campi @SerializedName su DTO ed EntityBase 2025-06-04 17:55:13 +02:00
20bc5c6da2 Migliorato fragment ordini uscita elenco 2025-06-04 16:11:41 +02:00
cfc19b00f0 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-04 09:35:49 +02:00
c2d82d0806 Refactoring: Utilizzato LocalDate al posto di date nei DTO degli ordini uscita inevasi 2025-06-03 19:35:12 +02:00
ae86a5cde8 Aggiunti filtri in Recupero Materiale 2025-06-03 17:40:12 +02:00
0a55c644d7 Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-03 11:48:15 +02:00
417172b31c Vario 2025-06-03 11:47:59 +02:00
bae4d1acac Aggiornato servizio ProdRecuperoMaterialeRESTConsumer 2025-06-03 11:45:25 +02:00
d5a86327d8 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-03 10:36:53 +02:00
fef03ebfbc Aggiornate dipendenze 2025-06-03 10:36:36 +02:00
021f6974f1 Aggiornato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-06-03 09:49:13 +02:00
448f361cd3 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-03 09:48:22 +02:00
7aa5960f87 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-06-03 09:48:08 +02:00
92abfe1da4 Finish v1.46.20(508) 2025-06-03 09:47:38 +02:00
6338c1dfa6 Finish v1.46.20(508)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-06-03 09:47:37 +02:00
657d85be86 -> v1.46.20 (508) 2025-06-03 09:47:33 +02:00
205ba184d3 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-30 17:53:16 +02:00
f759b20f96 Aggiornato Jenkinsfile 2025-05-30 17:52:57 +02:00
c845689ec8 Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-30 12:05:02 +02:00
4479779e4a Aggiunta commessa ordine nel recupero materiali 2025-05-30 12:04:46 +02:00
a35b3b7fc4 Refactoring UI della lista di materiali versati in produzione 2025-05-29 19:50:58 +02:00
5b31e2c6a9 Migliorato DialogUltimeConsegneFiltroAvanzatoView 2025-05-29 10:35:26 +02:00
6365cbfd5b Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:41:57 +02:00
9dbfa812c1 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 13:41:41 +02:00
97c907c992 Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:41:10 +02:00
caed709b64 Aggiornato build.gradle 2025-05-28 13:32:06 +02:00
2eb637e4bd Merge branch 'feature/RefactoringGestioneColli' into master-beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:04:43 +02:00
de91c7a8ec Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 13:04:28 +02:00
13800eecab Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 13:03:55 +02:00
c9bfd52586 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 12:51:24 +02:00
c4357f662c Finish v1.46.19(507) 2025-05-28 12:51:09 +02:00
67a8ca94db Finish v1.46.19(507)
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 12:51:09 +02:00
0bfd56c011 -> v1.46.19 (507) 2025-05-28 12:51:05 +02:00
eead844ac1 Aggiunte definizioni di @SerializedName per evitare minify di Proguard 2025-05-28 12:50:21 +02:00
65cfadcb6e Finish v1.46.18(506)
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 12:29:40 +02:00
00067ca1c9 Finish v1.46.18(506) 2025-05-28 12:29:40 +02:00
73ca8bb366 -> v1.46.18 (506) 2025-05-28 12:29:36 +02:00
3ffdb2c220 Fix AuthInterceptor 2025-05-28 12:28:13 +02:00
f3113a423c Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 12:25:27 +02:00
a5479595c7 Aggiornato build.gradle
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 12:24:24 +02:00
27e368f780 Fix compilazione beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 12:20:49 +02:00
e530c0dda9 Fix compilazione beta
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 12:07:57 +02:00
a3fbbb6dcc Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:49:44 +02:00
d3931a116a Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 11:47:53 +02:00
189c11c27f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 11:47:35 +02:00
cff971bef8 Merge branch 'master' into develop
# Conflicts:
#	Jenkinsfile.groovy
2025-05-28 11:47:20 +02:00
a5d3388665 Aggiornato build.gradle
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:45:51 +02:00
22ad23c5b7 Aggiornato build.gradle
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 11:44:41 +02:00
b1d5e10db4 Aggiornato build.gradle 2025-05-28 11:32:35 +02:00
75662bd8ae Merge branch 'feature/RefactoringGestioneColli' into master-beta
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-05-28 11:31:55 +02:00
763c96c7dc Aggiornato build.gradle 2025-05-28 11:31:37 +02:00
178b458030 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/build.gradle
2025-05-28 11:29:10 +02:00
bde41d21be Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head Something is wrong with the build of this commit
2025-05-28 11:26:12 +02:00
9d8228419c Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:25:14 +02:00
ad7d9059c0 Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:19:57 +02:00
4831a7ce19 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 11:19:10 +02:00
552b82feda Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 11:10:39 +02:00
6d62a7b10e Modificato Jenkinsfile
All checks were successful
WMS - Android (New)/pipeline/head This commit looks good
2025-05-28 10:57:42 +02:00
667f4aea74 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:53:55 +02:00
f80225b7bf Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:47:00 +02:00
7a02e1d8ad Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:46:25 +02:00
9cc70f4ee6 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:42:51 +02:00
7c4c5da1d6 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:41:32 +02:00
b960b6319a Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:40:47 +02:00
08ddaa7a11 Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:39:56 +02:00
bcce40094c Modificato Jenkinsfile
Some checks failed
WMS - Android (New)/pipeline/head There was a failure building this commit
2025-05-28 10:33:59 +02:00
960388adf8 Modificato Jenkinsfile 2025-05-28 10:31:48 +02:00
e76722018f Fix AuthInterceptor in caso di AccessToken nullo 2025-05-28 10:30:19 +02:00
917a810a59 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-28 10:19:06 +02:00
b69a053323 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-28 10:18:48 +02:00
fc30017021 Finish v1.46.17(505) 2025-05-28 10:18:03 +02:00
e1dd4f2140 Finish v1.46.17(505) 2025-05-28 10:18:03 +02:00
67a0679de7 -> v1.46.17 (505) 2025-05-28 10:17:58 +02:00
dfc87f7aec Fix AuthInterceptor in caso di AccessToken nullo 2025-05-28 10:17:09 +02:00
4da012b33c Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-27 18:44:41 +02:00
c5ae374854 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-27 18:44:20 +02:00
886ef6ba08 Finish v1.46.16(504) 2025-05-27 18:44:03 +02:00
fe77f90a7a Finish v1.46.16(504) 2025-05-27 18:44:02 +02:00
7a1f0d6cf6 -> v1.46.16 (504) 2025-05-27 18:43:56 +02:00
004bc3b926 Migliorie sulla gestione dell'access token nell'interceptor e durante il refresh.
Migliorie al loading popup durante il chiudi ordine in spedizione.
2025-05-27 18:43:01 +02:00
d1b9e22673 Refactoring dialog filtro ultime consegne 2025-05-27 17:51:02 +02:00
6edeba3246 Refactoring dialog filtro ultime consegne 2025-05-27 17:48:41 +02:00
5a0b45c6f9 Finish v1.46.15(503) 2025-05-27 17:48:12 +02:00
be5ebb89d7 Finish v1.46.15(503) 2025-05-27 17:48:12 +02:00
f81d61c4c5 -> v1.46.15 (503) 2025-05-27 17:47:59 +02:00
634bc502ce Fix null dovuto alla getBancaliGiaRegistratiSynchronized 2025-05-27 17:45:24 +02:00
7f9ebb3bc9 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-26 18:19:49 +02:00
20783026b8 Fix null pointer vari 2025-05-26 18:19:30 +02:00
99fb9f1d6a Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-26 09:45:06 +02:00
86632940eb Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-26 09:44:37 +02:00
d13dbf1ad3 Finish v1.46.14(502) 2025-05-26 09:44:01 +02:00
2f9ee642da Finish v1.46.14(502) 2025-05-26 09:44:00 +02:00
afecc11364 -> v1.46.14 (502) 2025-05-26 09:43:55 +02:00
53168632e7 Migliorata gestione errore caricamento Recupera Materiali 2025-05-23 18:13:06 +02:00
06f59bfaaa Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-23 17:43:47 +02:00
c83f75c5e4 Implementata nuova logica barcode ul in Recupera Materiali 2025-05-23 17:43:26 +02:00
185246597b Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_picking/AccettazioneOrdiniPickingActivity.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-05-20 15:38:15 +02:00
b33d566abd Implementato servizio di retrieve uds già registrate 2025-05-20 15:25:48 +02:00
141147aee1 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-19 11:06:39 +02:00
525570d918 Implementata scansione commessa nel dialog di richiesta commessa 2025-05-19 11:06:22 +02:00
49b4039bbe Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-16 18:14:49 +02:00
7a99df44c9 Fix vari 2025-05-16 18:13:08 +02:00
81ce09e605 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-15 18:31:27 +02:00
67936a3787 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-15 18:31:12 +02:00
69d880b587 Finish v1.46.13(501) 2025-05-15 18:30:56 +02:00
aeadea42e1 Finish v1.46.13(501) 2025-05-15 18:30:56 +02:00
f5c3dcfdc9 -> v1.46.13 (501) 2025-05-15 18:30:52 +02:00
9bf0dacda6 Fix vari in accettazione da ordine 2025-05-15 18:28:37 +02:00
d30af1e2a6 In VerificaGiacenze abilitato OverflowOrderQuantity 2025-05-15 12:53:12 +02:00
71a18e9ffa Fix scansione barcode alternativi in VerificaGiacenze 2025-05-15 12:52:42 +02:00
f4c64e5f04 Fix main thread in accettazione ordini 2025-05-15 11:11:45 +02:00
d54939d058 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-14 12:06:09 +02:00
a8674cb31e Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-14 12:05:51 +02:00
40e1fb4f83 Finish v1.46.12(500) 2025-05-14 12:05:35 +02:00
f3f0fd8fd8 Finish v1.46.12(500) 2025-05-14 12:05:35 +02:00
ed53b9e3b4 -> v1.46.12 (500) 2025-05-14 12:05:30 +02:00
37ac05b8ab Aggiornato gradle e librerie 2025-05-14 12:04:49 +02:00
d9070ee5fb Fix su rettifica giacenze 2025-05-14 12:04:28 +02:00
b3afc404f0 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-12 19:13:51 +02:00
168c4e4fb7 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-12 19:13:33 +02:00
1991be79d6 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-12 19:13:09 +02:00
c2a2983606 Fix su booleano che abilita il recupera UL 2025-05-12 19:12:24 +02:00
9866d5c4fd Cambiati parametri di chiamata servizio versamento automatico 2025-05-12 18:45:42 +02:00
823d0d7a33 Finish v1.46.11(499) 2025-05-07 12:01:10 +02:00
5b07ff5efa Finish v1.46.11(499) 2025-05-07 12:01:09 +02:00
c5639a643a -> v1.46.11 (499) 2025-05-07 12:01:00 +02:00
012f75198b Fix null sitArts 2025-05-07 12:00:17 +02:00
ee3728436c Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-05-05 17:01:18 +02:00
ed5c6c6b2f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-05 17:00:55 +02:00
d7e0e858d2 Finish v1.46.10(498) 2025-05-05 17:00:41 +02:00
339a5e5b68 Finish v1.46.10(498) 2025-05-05 17:00:40 +02:00
02a13911d8 -> v1.46.10 (498) 2025-05-05 17:00:34 +02:00
b6f51971f1 Fix su DialogChooseArtFromListaArts 2025-05-05 16:59:43 +02:00
57079c0062 Finish v1.46.09(497) 2025-04-29 11:50:02 +02:00
63c353a83c Finish v1.46.09(497) 2025-04-29 11:50:02 +02:00
c069d21cbf -> v1.46.09 (497) 2025-04-29 11:49:53 +02:00
afeb9ecc23 Fix thread picking libero 2025-04-29 11:48:36 +02:00
2ff8d80da3 In verifica giacenza permettere di caricare 0 nella quantità 2025-04-28 17:13:19 +02:00
891e2641fa Aggiunta possibilità di rendere non editabile qtaTot in accettazione bolla 2025-04-28 17:08:30 +02:00
ca79107809 Finish v1.46.08(496) 2025-04-28 13:08:20 +02:00
5c37b986ce Finish v1.46.08(496) 2025-04-28 13:08:19 +02:00
c426250cd5 -> v1.46.08 (496) 2025-04-28 13:08:04 +02:00
f090c11146 Fix scan barcode in verifica giacenze 2025-04-28 13:06:03 +02:00
5c90f22a49 Finish V1.46.07(495) 2025-04-16 12:54:27 +02:00
f1ddaa1fca Finish V1.46.07(495) 2025-04-16 12:54:27 +02:00
8490553a32 -> v1.46.07 (495) 2025-04-16 12:54:15 +02:00
66824fccb1 Fix thread scanBarcode in DialogInputQuantity 2025-04-16 12:53:13 +02:00
9c6c17ffa3 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-16 10:37:01 +02:00
39dce4d23f Merge remote-tracking branch 'origin/develop' into develop 2025-04-16 10:36:30 +02:00
c1dbbde905 Cambiato barcode di creazione UL in DialogScanOrCreateLUViewModel 2025-04-16 10:36:17 +02:00
8d2d0ad195 Finish v1.46.06(494) 2025-04-15 18:41:01 +02:00
927b14c9fc Finish v1.46.06(494) 2025-04-15 18:41:01 +02:00
f342cd0e5f -> v1.46.06 (494) 2025-04-15 18:40:53 +02:00
c287852ce6 Fix modal BatchLotSelection 2025-04-15 18:39:38 +02:00
c823692a72 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-10 20:09:22 +02:00
1fe4437163 Fix nel ricaricamento dei riferimenti in modifica riga di picking libero 2025-04-10 20:09:01 +02:00
4500696bcd Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-10 17:02:02 +02:00
17b0454f8b Fix vari 2025-04-10 17:01:43 +02:00
b9bbbabc5c Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-10 12:05:08 +02:00
4633a54152 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-10 12:04:47 +02:00
5dbb03531d Iniziata migrazione versamento materiale 2025-04-10 12:04:24 +02:00
edc9470e9b Finish v1.46.05(493) 2025-04-10 10:21:37 +02:00
7adeee589e Finish v1.46.05(493) 2025-04-10 10:21:37 +02:00
52a393c260 -> 1.46.05 (493) 2025-04-10 10:21:29 +02:00
60a405536c Fix thread su creaUl in PickingResi e su DialogBasket 2025-04-10 10:20:19 +02:00
5f5117c0f6 Finish v1.46.04(492) 2025-04-09 15:32:17 +02:00
0740faa964 Finish v1.46.04(492) 2025-04-09 15:32:16 +02:00
2f40302791 -> v1.46.04 (492) 2025-04-09 15:32:03 +02:00
13b3d5e63b Refactor dialog choose art form list Arts 2025-04-09 15:29:59 +02:00
5e00329292 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-09 14:53:37 +02:00
58521997c1 Fix su popup filtro resi Acquisto/Vendita 2025-04-09 14:53:10 +02:00
6b24111b39 Fix import 2025-04-09 14:39:51 +02:00
c2fe657bcf Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/MaterialiRESTConsumerService.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/ProdVersamentoMaterialeViewModel.java
2025-04-09 12:53:17 +02:00
af64ca04f9 Iniziata migrazione del nuovo versamento materiali 2025-04-09 09:29:44 +02:00
ad026cbd6b Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-08 15:56:43 +02:00
5481e25483 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/build.gradle
2025-04-08 15:56:19 +02:00
c7c151045d Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-08 15:55:43 +02:00
1e9d048264 Finish v1.46.03(491) 2025-04-08 15:54:57 +02:00
6f202c0c7a Finish v1.46.03(491) 2025-04-08 15:54:56 +02:00
94a9690045 -> v1.46.03 (491) 2025-04-08 15:54:52 +02:00
2b4aa11021 Fix su Spedizione e picking libero 2025-04-08 15:49:39 +02:00
f2d5bb76c5 Fix su loop nel caso di ricerca barcode kit in accettazione da bolla 2025-04-08 15:49:19 +02:00
61dc5fc9a4 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-08 11:15:06 +02:00
3440ecd4f1 Finish v1.46.02(490) 2025-04-08 11:08:21 +02:00
f6c7d98efa Finish v1.46.02(490) 2025-04-08 11:08:21 +02:00
e8821b0caf -> v1.46.02 (490) 2025-04-08 11:08:16 +02:00
627a0b402b Fix su Spedizione e picking libero 2025-04-08 11:06:18 +02:00
ab9353dee6 Iniziato refactoring versamento materiali 2025-04-08 09:00:04 +02:00
e956895e8c Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-07 11:58:42 +02:00
724a63acc1 Unificato layout di contenuto UL 2025-04-07 11:58:24 +02:00
3a5312d661 Merge branch 'feature/RefactoringGestioneColli' into master-beta 2025-04-07 10:00:02 +02:00
06dbae0ac5 Sistemato il riposizionamento da produzione 2025-04-07 09:59:33 +02:00
603fd59b05 Aggiornati servizi di sposta arts tra ul in modo da utilizzare il barcode dest invece della testata collo 2025-04-04 10:49:53 +02:00
ebbd515a34 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java
2025-04-03 09:54:08 +02:00
fd89c6394f Finish v1.46.01(489) 2025-04-03 09:53:47 +02:00
d72f685e01 Finish v1.46.01(489) 2025-04-03 09:53:46 +02:00
ea1f39a9db -> v1.46.01 (489) 2025-04-03 09:53:42 +02:00
518e6f0853 Fix su loop nel caso di ricerca barcode kit in accettazione da bolla 2025-04-03 09:53:00 +02:00
ce902cd2be Refactoring servizio di Picking libero e Versamento Merce 2025-04-03 09:30:21 +02:00
fde266922b Refactoring servizio di posizionamento UL 2025-04-02 16:17:43 +02:00
7bdb9b47f4 Fix su qtaCnfOrd in VerificaGiacenze 2025-04-01 17:27:36 +02:00
68bf6767b9 Implementato servizio di changePosizione 2025-04-01 16:52:24 +02:00
184d1f759c Finish v1.46.00(488) 2025-03-31 10:36:19 +02:00
2a26236d94 Finish v1.46.00(488) 2025-03-31 10:36:18 +02:00
71a00ac140 Finish v1.46.00/488) 2025-03-31 10:35:44 +02:00
f10aaaba6b Finish v1.46.00/488) 2025-03-31 10:35:43 +02:00
296675f0b0 -> v1.46.00 (488) 2025-03-31 10:35:39 +02:00
7f365be53d Finish FastPickingSpedizione 2025-03-31 10:33:46 +02:00
0180500e9a Merge branch 'feature/FastPickingSpedizione' into master-beta 2025-03-27 10:35:52 +01:00
9e85204d04 Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-27 10:35:31 +01:00
d5d80e71e7 Finish v1.45.05(487) 2025-03-27 10:34:52 +01:00
73b360f427 Finish v1.45.05(487) 2025-03-27 10:34:52 +01:00
722094bc3e -> v1.45.05 (487) 2025-03-27 10:34:47 +01:00
645b2cfe5d Cambiato servizio di retrieve giacenza in VerificaGiacenze 2025-03-27 10:32:41 +01:00
afcaa82069 Finish v1.45.04(486) 2025-03-19 18:22:08 +01:00
393bffe14c Finish v1.45.04(486) 2025-03-19 18:22:08 +01:00
d44b6f00c6 -> v1.45.04 (486) 2025-03-19 18:22:03 +01:00
de68c3b49f Merge remote-tracking branch 'origin/develop' into develop 2025-03-19 18:20:07 +01:00
0591b60fad Rimossa randomizzazione dati Verifica Giacenze 2025-03-19 18:18:42 +01:00
a6cebccad9 Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-18 17:54:49 +01:00
4186d90a32 Finish v1.45.03(485) 2025-03-18 17:54:28 +01:00
bb21441c3d Finish v1.45.03(485) 2025-03-18 17:54:27 +01:00
12b1b89713 -> v1.45.03 (485) 2025-03-18 17:54:15 +01:00
26512f5dc1 Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-18 17:51:36 +01:00
4d29e2ab41 In accettazione bolla sitemato ordinamento righe e aggiunto controllo anomalie 2025-03-18 17:50:48 +01:00
40d35bb4df Merge 2025-03-18 12:23:03 +01:00
1802ab5a2e Merge branch 'develop' into master-beta
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-03-18 12:21:56 +01:00
6c6fd38482 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneActivity.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneModule.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-03-18 12:20:54 +01:00
2e37e874c3 Finish v1.45.02(484) 2025-03-18 12:17:24 +01:00
c99e32998b Finish v1.45.02(484) 2025-03-18 12:17:23 +01:00
22ce078c74 -> v1.45.02 (484) 2025-03-18 12:17:19 +01:00
a93d80b2e2 Fix su handler in spedizione 2025-03-18 12:16:41 +01:00
1b4df1ecd1 Implementato flag che abilita/disabilita il fast-picking 2025-03-17 18:59:47 +01:00
ce5ab1cfc2 Resa synchronized l'init iniziale dell'app 2025-03-17 18:31:45 +01:00
3ac021d7ef Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-17 11:51:44 +01:00
fa7d561189 Finish v1.45.01(483) 2025-03-17 11:51:25 +01:00
2c59e9beec Finish v1.45.01(483) 2025-03-17 11:51:24 +01:00
01af72bd2f -> v1.45.01 (483) 2025-03-17 11:51:18 +01:00
2f42958394 Fix su Rettifica Giacenze 2025-03-17 11:50:41 +01:00
4613f13eae Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-14 18:20:18 +01:00
fba3801994 Finish v1.45.00(482) 2025-03-14 18:20:01 +01:00
7ec722fc26 Finish v1.45.00(482) 2025-03-14 18:20:00 +01:00
64295d565a -> v1.45.00 (482) 2025-03-14 18:19:57 +01:00
2db0027fff Correzioni Verifica Giacenze 2025-03-14 18:19:09 +01:00
71f077a617 Fix after merge 2025-03-14 13:25:40 +01:00
a80cf53f08 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-03-14 13:23:32 +01:00
80dac639da Completata gestione verifica giacenze 2025-03-14 13:12:16 +01:00
ff73a124f0 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-03-12 19:30:44 +01:00
a4fcc87088 Finish v1.44.12(481) 2025-03-12 19:29:55 +01:00
be1b993239 Finish v1.44.12(481) 2025-03-12 19:29:55 +01:00
63f9912347 -> v1.44.12 (481) 2025-03-12 19:29:49 +01:00
b887172032 Fix caricamento in closeOrder Spedizione 2025-03-12 19:28:18 +01:00
18937a3315 Fix vari su Synchronized e MainThread 2025-03-12 19:26:45 +01:00
fb6a74aef8 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_art/DialogScanArtView.java
2025-03-12 18:16:07 +01:00
cd89ce917e Fix vari su Synchronized e MainThread 2025-03-12 18:11:53 +01:00
6229a1a4b1 Aggiornato DialogScanArt 2025-03-06 12:16:38 +01:00
eb5ae8443d Merge branch 'develop' into feature/FastPickingSpedizione 2025-03-04 11:02:46 +01:00
a9028e65d9 Finish v1.44.11(480) 2025-03-04 11:02:32 +01:00
ba413e4d05 Finish v1.44.11(480) 2025-03-04 11:02:31 +01:00
6f759d969d -> v1.44.11 (480) 2025-03-04 11:02:26 +01:00
044bcbd852 Fix after merge 2025-03-04 11:01:38 +01:00
53ba5a962b Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/ask_position_of_lu/DialogAskPositionOfLUView.java
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/scan_or_create_lu/DialogScanOrCreateLUView.java
2025-03-04 10:58:15 +01:00
6f06eaf0a0 Rimosso vecchio dialog livello posizione 2025-03-04 10:57:35 +01:00
993191c083 Aggiornati dialog ask posizione e fixati problemi sul dismiss dei dialog 2025-03-04 10:56:19 +01:00
db178ce991 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java
2025-03-03 18:10:13 +01:00
329d53f8d0 Migliorato controllo di generazione documenti carico/scarico durante il picking libero. 2025-03-03 18:09:39 +01:00
7c35e19ed4 Fix vari 2025-03-03 17:50:18 +01:00
326a3a00b2 Fix check deposito 2025-03-03 13:30:43 +01:00
086597985b Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java
2025-03-03 12:35:33 +01:00
c3c3d32dfe Finish v1.44.10(479) 2025-03-03 11:52:21 +01:00
1756124b89 Finish v1.44.10(479) 2025-03-03 11:52:21 +01:00
5bc3619d6b -> v1.44.10 (479) 2025-03-03 11:52:17 +01:00
7ec04ac8da Fix su dialog caricamento in accettazione ordini 2025-03-03 11:51:31 +01:00
8d93f3bb61 Finish v1.44.09(478) 2025-03-03 10:12:14 +01:00
b31ea475c6 Finish v1.44.09(478) 2025-03-03 10:12:14 +01:00
a7e8ec4d99 -> v1.44.09 (478) 2025-03-03 10:12:08 +01:00
677ee127ff Fix su dismiss di dialog input quantity 2025-03-03 10:11:11 +01:00
d238cb1d88 Merge branch 'develop' into feature/FastPickingSpedizione 2025-02-28 17:01:03 +01:00
a02035e9b8 Finish v1.44.08(477) 2025-02-28 16:58:53 +01:00
b61948dac3 Finish v1.44.08(477) 2025-02-28 16:58:53 +01:00
deee26d55b -> v1.44.08 (477) 2025-02-28 16:58:48 +01:00
00443b46c8 Fix su dialog info aggiuntive in accettazione 2025-02-28 16:57:57 +01:00
5694d8bd1c Migliorata gestione callback e chiamate in background per Picking Libero 2025-02-28 15:26:02 +01:00
e5a4cf59c4 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity_v2/DialogInputQuantityV2View.java
2025-02-28 11:56:58 +01:00
9228eaf01b Finish v1.44.07(476) 2025-02-28 11:51:16 +01:00
51f9e1f58c Finish v1.44.07(476) 2025-02-28 11:51:15 +01:00
6747ee077b -> v1.44.07 (476) 2025-02-28 11:51:11 +01:00
e11e270101 Migliorata gestione caricamenti del Picking libero. 2025-02-28 11:50:11 +01:00
12fe5059a6 Merge branch 'master-beta' into feature/FastPickingSpedizione 2025-02-26 19:10:48 +01:00
e75121b0bd Refactor: Improve data recovery in MainFragment
- Replaced the previous data recovery mechanism with an ExecutorService-based approach.
- This allows for concurrent recovery operations, improving overall efficiency.
- Improved error handling by removing unnecessary callbacks and handling exceptions directly.
- Replaced cyclic recursion with a simpler iterative loop for session recovery.
2025-02-26 19:10:30 +01:00
0312f972bc Refactor: Update weight input dialog and LU closing logic
- Changed `DialogInputPesoLUView` to use `BindableBigDecimal` for weight fields.
- Updated `DialogInputPesoLUView` to invoke onComplete only after user confirmation
- Refactored `SpedizioneViewModel` to correctly set values coming from the weight input dialog
- Removed commented-out code in `SpedizioneViewModel`
- Added handling for null values in weight fields.
- `SpedizioneActivity` changed to pass current values to `DialogInputPesoLUView`
- Fixed recovery mode UI not collapsing
2025-02-26 19:01:04 +01:00
9d48fec426 Aggiunto controllo su deposito in fase di picking uscita 2025-02-26 18:36:17 +01:00
645045b492 Fix su filtri ordini uscita 2025-02-26 13:50:20 +01:00
1988fae4f9 Aggiunto profiler recyclerview solo in caso di debug 2025-02-26 13:12:00 +01:00
6c621d5ca8 Migliorie sul caricamento della lista di ordini di uscita 2025-02-26 13:06:56 +01:00
b8c8a9d8ea Merge branch 'develop' into feature/FastPickingSpedizione 2025-02-26 11:05:52 +01:00
bc27355ed6 Finish Release-2 2025-02-26 11:05:35 +01:00
078d9af116 Finish Release-2 2025-02-26 11:05:34 +01:00
9b14e1186e -> v1.44.06 (475) 2025-02-26 11:05:30 +01:00
779c606c2a Fix vari 2025-02-26 11:04:34 +01:00
002e855d82 Merge branch 'feature/GestioneDocumentiLavorazione' into feature/FastPickingSpedizione 2025-02-26 10:29:35 +01:00
1c6de11e04 Merge branch 'develop' into feature/FastPickingSpedizione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java
2025-02-26 10:27:27 +01:00
581e56a245 Finish Release-1 2025-02-26 10:25:30 +01:00
7f468e19bd Finish Release-1 2025-02-26 10:25:29 +01:00
e8a511d49e -> v1.44.05 (474) 2025-02-26 10:25:25 +01:00
1988ad993f Implementato pulsante di verifica aggiornamenti nelle settings 2025-02-26 10:24:28 +01:00
6105c44dab Gestita installazione delle versioni beta 2025-02-26 10:04:02 +01:00
d3b7cd8cd6 Aggiunta impostazione che permette di abilitare la ricezione degli aggiornamenti beta 2025-02-25 16:52:09 +01:00
ce3dfca6e0 Rimosso parametro inutilizzato in build.gradle 2025-02-24 18:55:45 +01:00
706878b1e4 Migliorato adapter avantielenco ordini di uscita 2025-02-24 18:35:17 +01:00
6c59e22101 Merge branch 'develop' into feature/FastPickingSpedizione 2025-02-24 15:31:40 +01:00
36c48f28d1 Finish v1.44.04(473) 2025-02-24 15:31:21 +01:00
93b18531ab Finish v1.44.04(473) 2025-02-24 15:31:21 +01:00
27edd84442 -> v1.44.04 (473) 2025-02-24 15:31:16 +01:00
e24e6858fb Fix su commessa nulla nel caso di picking libero 2025-02-24 15:30:34 +01:00
2d48f6687c Aggiunta logica di fast picking in spedizione, scansionando un barcode di una UL all'interno di DialogInputQuantity verrà automaticamente chiusa l'ul attuale e riavviato il processo di scansione del barcode 2025-02-24 12:05:39 +01:00
fa10973626 Migliorata gestione status code nel caso di UnauthorizedAccess nell'interceptor 2025-02-21 11:55:45 +01:00
521e2fe62b Finish v1.44.03(472) 2025-02-19 12:43:54 +01:00
7e7938ea1a Finish v1.44.03(472) 2025-02-19 12:43:53 +01:00
4fe48bd02a -> v1.44.03 (472) 2025-02-19 12:43:48 +01:00
f26bc28ba1 Fix su DialogProgressView 2025-02-19 12:42:58 +01:00
aaf8b96070 Finish v1.44.02(471) 2025-02-19 10:13:14 +01:00
c5720059f3 Finish v1.44.02(471) 2025-02-19 10:13:13 +01:00
361faf235d -> v1.44.02 (471) 2025-02-19 10:13:09 +01:00
f85f5d63a6 Fix su gestione access token negli interceptor 2025-02-19 10:09:10 +01:00
526bc11626 Fix su gestione rif nulla in bottomsheet 2025-02-19 09:37:09 +01:00
95d73b5bc5 Finish v1.44.01(470) 2025-02-18 13:24:11 +01:00
73e0f03886 Finish v1.44.01(470) 2025-02-18 13:24:11 +01:00
91bc82ed16 -> v1.44.01 (470) 2025-02-18 13:24:05 +01:00
c6a30588e6 Migliorata gestione di token scaduto in AuthInterceptor 2025-02-18 13:22:24 +01:00
26c09c02ab Finish v1.44.00(469) 2025-02-17 10:24:12 +01:00
c34e6723d8 Finish v1.44.00(469) 2025-02-17 10:24:11 +01:00
bf2a039700 -> v1.44.00 (469) 2025-02-17 10:24:07 +01:00
cebe5afd0a Fix di retrocompatibilità 2025-02-17 10:23:11 +01:00
2e8e4c0ccc Merge branch 'refs/heads/feature/TokenAuthentication' into develop 2025-02-17 09:54:33 +01:00
1c5c8c61cf Fix su UpdatesManager 2025-02-12 18:11:05 +01:00
726d9fd29c Fix login oauth 2025-02-12 16:28:08 +01:00
d7eeeeeac2 Merge branch 'develop' into feature/TokenAuthentication
# Conflicts:
#	.idea/deploymentTargetSelector.xml
#	app/build.gradle
#	app/src/main/java/it/integry/integrywmsnative/core/menu/MenuRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ArticoloRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/AziendaRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/DocumentRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GestSetupRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/GiacenzaRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ImballiRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PosizioniRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/PrinterRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_ordini_elenco/rest/OrdiniAccettazioneRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/rest/DocInterniRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/login/rest/LoginRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_accettazione_ord_produzione/rest/ProdOrdineProduzioneRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailModule.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/rest/ProdRientroMerceOrderDetailRESTConsumer.java
2025-02-11 10:34:36 +01:00
ee72f8364e Finish v1.43.03(468) 2025-02-11 10:33:15 +01:00
a95ff0b0e5 Finish v1.43.03(468) 2025-02-11 10:33:13 +01:00
57ced048a0 -> v1.43.03 (468) 2025-02-11 10:33:06 +01:00
ca545e2d44 Vario 2025-02-11 10:31:36 +01:00
0b777137d5 Fix su DialogProgressView.
Aggiunto barcodeUl nel caso venga battezzata un'etichetta fornitore in DialogScanOrCreateLU.
2025-02-10 18:24:50 +01:00
d19f4de424 Merge remote-tracking branch 'origin/develop' into develop 2025-02-10 17:24:34 +01:00
56d509b07b In inputQuantity l'avviso partita inattiva non è più bloccante ma chiede di continuare 2025-02-10 17:24:30 +01:00
fe3a9d84d5 Fix su DialogProgressView.
Aggiunto barcodeUl nel caso venga battezzata un'etichetta anonima in DialogScanOrCreateLU.
2025-02-10 16:52:55 +01:00
dc38311125 Sostituito FBToast con snackbar nativo.
Rimosse librerie inutilizzate.
2025-02-06 15:11:21 +01:00
bce8f2a8b7 Fix visibilità posizione in rettifica giacenze 2025-02-05 12:59:35 +01:00
13ec0c745e Creato nuovo dialog per notificare gli aggiornamenti dell'app 2025-02-04 11:50:19 +01:00
b5f7e12f5a Fix post merge 2025-02-04 10:25:58 +01:00
90e8ff128c Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/accettazione_bolla_picking/AccettazioneBollaPickingViewModel.java
2025-02-04 10:08:13 +01:00
998b1057e0 Sostituiti controlli su size == 0 con isEmpty() sulle liste 2025-02-04 09:55:34 +01:00
d4a7dee121 Migrata gestione del recupero materiale in un servizio dedicato 2025-02-04 09:48:03 +01:00
e85e05a526 Aggiunto filtro commessa in Rientro Merce 2025-01-27 13:04:15 +01:00
7f953e78cf Finish v1.43.02(467) 2025-01-24 18:38:31 +01:00
8b536eb0b0 Finish v1.43.02(467) 2025-01-24 18:38:30 +01:00
f390548d66 -> v1.43.02 (467) 2025-01-24 18:38:22 +01:00
c6a2b8c6ea In accettazione bolla fatto in modo che vengono riconosciuti i kit quando leggono i componenti 2025-01-24 18:36:47 +01:00
a046e31412 Migliorati errori letti dalle chiamate REST 2025-01-24 18:09:27 +01:00
716f6d4daa Merge branch 'develop' into feature/GestioneDocumentiLavorazione 2025-01-23 11:48:12 +01:00
9b451ff1bc Merge 2025-01-22 10:30:16 +01:00
6d48182d90 Finish v1.43.01(466) 2025-01-21 13:07:14 +01:00
e3d8defa5b Finish v1.43.01(466) 2025-01-21 13:07:13 +01:00
dc24b43311 -> v1.43.01 (466) 2025-01-21 13:07:06 +01:00
75f55ebd44 Fix null point in retrieveImballiSyncronized 2025-01-21 13:05:14 +01:00
09cebb1c7e Merge branch 'develop' into feature/GestioneDocumentiLavorazione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_rientro_merce/order_detail/ProdRientroMerceOrderDetailPickedQuantityDTO.java
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_lu_prod/adapter/DialogInputLUProdTipoColloAdapter.java
#	build.gradle
2025-01-20 18:19:28 +01:00
9dc0935cc1 Finish v1.43.00(465) 2025-01-20 17:57:59 +01:00
5bfd695f2d Finish v1.43.00(465) 2025-01-20 17:57:58 +01:00
8e0b05b6af -> v1.43.00 (465) 2025-01-20 17:57:54 +01:00
ddc441e76e Refactoring UI di ContenutoBancale.
Refactoring del model MtbTcol, adesso è completamente observable.
2025-01-20 17:57:05 +01:00
20602cadb5 Fix sulla descrizione durante il salvataggio di un nuovo articolo 2025-01-20 12:54:54 +01:00
416ac0a2a5 Finish v1.42.04(463) 2025-01-17 13:14:36 +01:00
49933c8493 Finish v1.42.04(463) 2025-01-17 13:14:34 +01:00
b1bc72a1a5 -> v1.42.04 (464) 2025-01-17 13:14:29 +01:00
c498a373f5 Rimosso layout dialog_ask_should_print.xml non più utilizzato 2025-01-17 13:13:34 +01:00
bd04d6263e Aggiornati build.gradle
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-01-17 13:12:12 +01:00
fbe9244000 Merge branch 'develop' into feature/GestioneDocumentiLavorazione
# Conflicts:
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumerService.java
#	app/src/main/java/it/integry/integrywmsnative/gest/spedizione/SpedizioneViewModel.java
2025-01-17 10:20:50 +01:00
6e52a3c0c7 Finish v1.42.03(463) 2025-01-16 16:57:33 +01:00
9f92274720 Finish v1.42.03(463) 2025-01-16 16:57:33 +01:00
6d431bb251 -> v1.42.03 (463) 2025-01-16 16:57:28 +01:00
5265b949af Eliminato vecchio dialog di richiesta stampa (sostituito con DialogYesNo) 2025-01-16 16:56:40 +01:00
db875491d0 Merge remote-tracking branch 'origin/develop' into develop 2025-01-16 16:47:46 +01:00
778fdff69a Implementato cambio deposito in Spedizione (basandosi sulla prima UDC scansionata).
Aggiornata icona app.
2025-01-16 16:47:18 +01:00
4b54aa3c02 In fase di accettazione in inputQuantity proporre uno nelle confezioni non la quantità presente in bolla 2025-01-15 16:15:33 +01:00
019688a5cc In accettazione da bolla l'ultima referenza scansionata deve comparire all'inizio dell'elenco 2025-01-15 16:02:01 +01:00
00fc3a59eb Aggiunta possibilità di variare l'ordinamento avanti elenco accettazione bolla 2025-01-15 15:28:05 +01:00
e5244e75a3 Nelle righe dell'inventario aggiunto id dispositivo 2025-01-15 12:05:50 +01:00
cb77c21656 Implementato switch deposito in home page 2025-01-13 15:54:23 +01:00
7b0f7f16ba Fix after merge 2025-01-08 17:40:10 +01:00
e23446654d Finish v1.42.02(462) 2025-01-08 14:48:25 +01:00
b3641534c9 Finish v1.42.02(462) 2025-01-08 14:48:25 +01:00
a3a5f65e53 -> v1.42.02 (462) 2025-01-08 14:48:07 +01:00
d5c0f388db Ripristinato controllo su percentuale hr 2025-01-07 10:23:06 +01:00
8ae3820aa2 Merge branch 'develop' into feature/GestioneDocumentiLavorazione
# Conflicts:
#	app/build.gradle
#	app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java
#	app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
#	app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java
#	app/src/main/java/it/integry/integrywmsnative/gest/prod_recupero_materiale/rest/ProdRecuperMaterialeRESTConsumer.java
#	app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogProgressView.java
2025-01-07 10:06:05 +01:00
ac6f64d494 Fix cancellazione e modifica ul in Accettazione bolla 2024-12-19 10:09:42 +01:00
9d001f8896 Finish v1.42.01(461) 2024-12-10 11:02:45 +01:00
24e9cffeea Finish v1.42.01(461) 2024-12-10 11:02:44 +01:00
b0f2763a85 -> v1.42.01 (461) 2024-12-10 11:02:38 +01:00
cc343c296f Fix su null quando viene creato un nuovo articolo e deve avviare automaticamente la ricerca del nuovo articolo in Rettifica Giacenze 2024-12-10 11:02:00 +01:00
bc9b60b0ac Finish v1.42.00(460) 2024-12-09 19:20:58 +01:00
856592e1fe Finish v1.42.00(460) 2024-12-09 19:20:57 +01:00
cd28d01354 -> v1.42.00 (460) 2024-12-09 19:20:51 +01:00
653cd3fd75 Implementata creazione di un nuovo articolo da Rettifica Giacenze 2024-12-09 19:18:03 +01:00
73b1a77a12 Migliorata gestione degli Updates in modo da forzare gli aggiornamenti di default a meno che non venga specificato forced=false nel file version.txt 2024-12-06 11:37:09 +01:00
777d6a3c5b Finish v1.41.11(459) 2024-12-05 17:25:47 +01:00
98f520427e Finish v1.41.11(459) 2024-12-05 17:25:47 +01:00
403f2ec57c -> v1.41.11 (459) 2024-12-05 17:25:42 +01:00
e69d99fdf1 Merge remote-tracking branch 'origin/develop' into develop 2024-12-05 17:25:01 +01:00
b48b2fbac9 Fix su sorting partita mag nulla in Spedizione 2024-12-05 17:24:48 +01:00
00515aaf9b Merge remote-tracking branch 'origin/develop' into develop 2024-12-05 16:09:08 +01:00
e70d5697c3 aggiunto isnull su numero risorse in query recuper materiale versato 2024-12-05 16:08:48 +01:00
fb6d206203 Finish v1.41.10(456) 2024-12-04 10:26:44 +01:00
d3a9c87d14 Finish v1.41.10(456) 2024-12-04 10:26:43 +01:00
39841f6b0d -> v1.41.10 (458) 2024-12-04 10:26:38 +01:00
7ed3b421a1 Fix su setup nulla in DialogSelectDocInfoViewModel 2024-12-04 10:25:10 +01:00
3b5eb32190 Finish v1.41.09(457) 2024-11-25 11:48:21 +01:00
be31b87eac Finish v1.41.09(457) 2024-11-25 11:48:20 +01:00
3d341ac99d -> v1.41.09 (457) 2024-11-25 11:48:13 +01:00
9df1c37ee9 Fix su esportazione log 2024-11-25 11:40:13 +01:00
385a28c29b Finish v1.41.08(456) 2024-11-21 18:34:09 +01:00
e26568cdf1 Finish v1.41.08(456) 2024-11-21 18:34:09 +01:00
191953a003 -> v1.41.08 (456) 2024-11-21 18:34:04 +01:00
47143fe97d Fix sul caricamento degli ordini di acquisto 2024-11-21 18:33:20 +01:00
387ce6a555 Finish v1.41.07(455) 2024-11-18 18:31:49 +01:00
47ff01805c Finish v1.41.07(455) 2024-11-18 18:31:48 +01:00
0e24f7188c -> v1.41.07 (455) 2024-11-18 18:31:43 +01:00
8b3d1f2a2e Ulteriori fix su DialogProgressView 2024-11-18 18:31:01 +01:00
dcdc823b5f Finish v1.41.06(454) 2024-11-18 16:36:52 +01:00
7201e5c8f8 Finish v1.41.06(454) 2024-11-18 16:36:51 +01:00
929c52b94c -> v1.41.06 (454) 2024-11-18 16:36:45 +01:00
2adfda5f30 Ulteriori fix su DialogProgressView 2024-11-18 16:34:02 +01:00
421accaf15 Finish v1.41.05(453) 2024-11-18 11:39:03 +01:00
574ad6176b Finish v1.41.05(453) 2024-11-18 11:39:03 +01:00
290d737ff7 -> v1.41.05 (453) 2024-11-18 11:38:59 +01:00
4b0fbd0b6b Rimossi destinatari che non sono attivi 2024-11-15 19:14:04 +01:00
6327089a55 Finish v1.41.04(452) 2024-11-14 10:02:03 +01:00
807c3a8cde Finish v1.41.04(452) 2024-11-14 10:02:02 +01:00
665c261b9a -> v1.41.04 (452) 2024-11-14 10:01:56 +01:00
bdd6f21522 Fix su DialogProgressView 2024-11-14 09:59:39 +01:00
482243ceff Implementato CaricoProdFin in Rientro Merce 2024-11-14 09:58:40 +01:00
9890fbfec0 Merge branch 'develop' into feature/GestioneDocumentiLavorazione 2024-11-05 11:25:22 +01:00
2a0465dc0f Finish v1.41.03(451) 2024-11-05 11:24:45 +01:00
3ebe311728 Finish v1.41.03(451) 2024-11-05 11:24:44 +01:00
95a51ecc7a -> v1.41.03 (451) 2024-11-05 11:24:39 +01:00
342753aeac Migliorata gestione del loading dialog (evitate concorrenze di apertura) 2024-11-05 11:23:51 +01:00
2b467f56d7 Migliorato servizio di importColliDaProduzione 2024-11-05 10:43:32 +01:00
a27db0ab68 Merge branch 'develop' into feature/GestioneDocumentiLavorazione 2024-10-23 17:39:18 +02:00
845a4c8faa Aggiornato logo Integry 2024-10-18 11:11:51 +02:00
7b9959e68d Merge branch 'develop' into feature/GestioneDocumentiLavorazione
# Conflicts:
#	.idea/runConfigurations.xml
#	app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java
#	build.gradle
#	gradle/wrapper/gradle-wrapper.properties
2024-10-18 10:13:22 +02:00
0328ebad85 Aggiornato Gradle Plugin 2024-10-18 10:11:08 +02:00
77c5252bf6 Finish v1.41.02(450) 2024-10-08 14:43:12 +02:00
c42a597bb4 Finish v1.41.02(450) 2024-10-08 14:43:12 +02:00
b40781db84 -> v1.41.02 (450) 2024-10-08 14:42:57 +02:00
f5a0bf67c8 In rettifica giacenze aggiunta setup per la richiesta della modifica posizione 2024-10-08 14:40:16 +02:00
044d60fb66 Finish v1.41.01(449) 2024-10-03 16:45:02 +02:00
7999e98bd9 Finish v1.41.01(449) 2024-10-03 16:45:01 +02:00
7c14688ef3 -> v1.41.01 (449) 2024-10-03 16:44:57 +02:00
8039d1942d Merge remote-tracking branch 'origin/develop' into develop 2024-10-03 16:43:44 +02:00
6c8fd2518e Stili 2024-10-03 16:43:10 +02:00
03e2f4390b Cambiato oggetto email log 2024-10-03 16:41:40 +02:00
08656ae276 Finish v1.41.00(448) 2024-09-17 18:33:30 +02:00
9f2ba56c59 Finish v1.41.00(448) 2024-09-17 18:33:29 +02:00
34e1ba8f95 -> v1.41.00 (448) 2024-09-17 18:33:22 +02:00
4e95f4f9c9 Aggiunto dialog per il suggerimento dei lotti già esistenti nei documenti interni 2024-09-17 18:32:09 +02:00
7ee59ea814 Implementata richiesta commessa in PickingLibero di Lavorazione.
Implementato servizio di spostamento arts tra UL in PickingLibero.
Implementata generazione documenti in CloseUDS in PickingLibero.
2024-09-16 10:33:59 +02:00
1463510b08 Finish v1.40.30(447) 2024-09-13 09:42:56 +02:00
a771335ff1 Finish v1.40.30(447) 2024-09-13 09:42:55 +02:00
7b1f58412a -> v1.40.30 (447) 2024-09-13 09:42:38 +02:00
d897c83165 Cambiato messaggio di warning per check documenti interni 2024-09-04 12:56:24 +02:00
44b9bc3fc1 Migliorato documento di reso quando effettuano le perdite 2024-09-03 10:19:07 +02:00
fa95ed1391 Finish v1.40.29(446) 2024-07-26 16:58:15 +02:00
26ca580ba4 Finish v1.40.29(446) 2024-07-26 16:58:15 +02:00
f65e69b745 -> v1.40.29 (446) 2024-07-26 16:58:10 +02:00
5a147fb0de Mini-improvement 2024-07-26 16:55:57 +02:00
64e38ce05a Aggiunto log eccezione in fase di ExportLog 2024-07-26 16:28:16 +02:00
6c79a1781d Finish v1.40.28(445) 2024-07-22 09:09:44 +02:00
6177d84131 Finish v1.40.28(445) 2024-07-22 09:09:43 +02:00
c6975badce -> v1.40.28 (445) 2024-07-22 09:09:27 +02:00
c548c6484f Aggiunto suggerimento data scadenza in caso di partita esistente 2024-07-19 17:55:14 +02:00
9aae16521f Finish v1.40.27(444) 2024-07-05 17:59:05 +02:00
559ff4e94c Finish v1.40.27(444) 2024-07-05 17:59:04 +02:00
7b11f503d8 -> v1.40.27 (444) 2024-07-05 17:58:49 +02:00
bc788c3a34 [DOLBO] Gestito extra quantity in duplica uds e aggiornamento quantità in elenco 2024-07-05 17:57:54 +02:00
f936c71188 Finish v1.40.26(443) 2024-06-26 16:13:52 +02:00
25a7982a87 Finish v1.40.26(443) 2024-06-26 16:13:52 +02:00
74a3749e44 -> v1.40.26 (443) 2024-06-26 16:13:43 +02:00
074fb10b44 Fix chiamata servizi duplicateUDS 2024-06-26 16:03:07 +02:00
4f490eb737 In accettazione da bolla inserita ricerca per descrizione articolo e aggiunta conferma della quantità al long click 2024-06-26 12:16:46 +02:00
2b981b6c40 Finish v1.40.25(442) 2024-06-25 09:06:17 +02:00
bec80d980f Finish v1.40.25(442) 2024-06-25 09:06:17 +02:00
8a5c8f5c94 -> v1.40.25 (442) 2024-06-25 09:06:02 +02:00
da301ec6b2 Permettere la duplicazione delle uds 2024-06-21 17:55:37 +02:00
a5a9cb1c50 Aggiunto blocco durante la lettura dell'SSCC fornitore nell'accettazione se il barcode ul è già presente in un collo 2024-06-18 16:06:02 +02:00
cef74ab71f Finish v1.40.24(441) 2024-06-18 09:52:38 +02:00
3f647952c0 Finish v1.40.24(441) 2024-06-18 09:52:37 +02:00
9bf55aae85 -> v1.40.24 (441) 2024-06-18 09:52:23 +02:00
f9a31faa78 Fix import docInterni 2024-06-18 09:49:23 +02:00
9a643837d4 Finish v1.40.23(440) 2024-06-17 17:55:25 +02:00
f458a52b18 Finish v1.40.23(440) 2024-06-17 17:55:24 +02:00
132437d134 -> v1.40.23 (440) 2024-06-17 17:55:10 +02:00
022841c195 Controllo documenti fruma 2024-06-17 17:53:46 +02:00
bdbecfb037 Finish v1.40.22(439) 2024-05-31 18:41:09 +02:00
1a501af172 Finish v1.40.22(439) 2024-05-31 18:41:08 +02:00
fe558a8be8 -> v.1.40.22 (439) 2024-05-31 18:41:02 +02:00
05d930d8f7 Aggiunta setup per "Disabilitare" il picking libero quando si spara un'etichetta cartone 2024-05-31 18:38:25 +02:00
267aa85e01 Finish v1.40.21(438) 2024-05-28 19:07:53 +02:00
89a98cac8b Finish v1.40.21(438) 2024-05-28 19:07:52 +02:00
efc052d622 -> v1.40.21 (438) 2024-05-28 19:07:48 +02:00
6f61f3af9b Fix date in recupero materiale 2024-05-28 19:07:01 +02:00
e7d06c9752 Finish v1.40.20(437) 2024-05-27 13:27:22 +02:00
81e3c70960 Finish v1.40.20(437) 2024-05-27 13:27:22 +02:00
76a0fe9b6f -> v1.40.20 (437) 2024-05-27 13:27:08 +02:00
a9bab6db56 Fix format LocalDate in recupero materiale 2024-05-27 13:26:11 +02:00
85197c1f9b Finish v1.40.19(436) 2024-05-21 12:15:37 +02:00
ece434806f Finish v1.40.19(436) 2024-05-21 12:15:36 +02:00
0962192144 -> v1.40.19 (436) 2024-05-21 12:15:29 +02:00
38139a1ec9 Merge remote-tracking branch 'origin/develop' into develop 2024-05-21 12:14:19 +02:00
56e5603256 Fix date in recupero materiale 2024-05-21 12:14:03 +02:00
b5c2efa9e2 Finish v1.40.18(435) 2024-05-14 16:57:12 +02:00
26f9f0e16c Finish v1.40.18(435) 2024-05-14 16:57:12 +02:00
9abba0ce82 -> v.1.40.18 (435) 2024-05-14 16:56:58 +02:00
c616a9d31a Fix InputQuantity in rettifica giaccenze 2024-05-14 16:55:45 +02:00
e45a980ce3 Aggiunto dateTimeRow in ArtDTO 2024-05-10 15:44:23 +02:00
91bca90e5d Fix AuthInterceptor 2024-05-07 18:35:51 +02:00
c5d09b0d8b Merge branch 'develop' into feature/TokenAuthentication 2024-05-07 18:32:48 +02:00
46c9fa184d Finish v1.40.17(434) 2024-05-07 18:22:31 +02:00
3a31fba1b4 Finish v1.40.17(434) 2024-05-07 18:22:30 +02:00
6cded1d2d1 -> v1.40.17 (434) 2024-05-07 18:22:23 +02:00
027d0e891b Fix stream in spedizione 2024-05-07 18:21:40 +02:00
0da31ef866 Aggiunto interceptor per il refresh del token 2024-05-07 18:14:05 +02:00
56f14c064e Rimosse tutte le chiamate statiche a RESTBuilder 2024-05-07 17:30:45 +02:00
09c929803f Implementata login OAuth 2024-05-06 18:39:52 +02:00
93abea0823 Merge remote-tracking branch 'origin/develop' into develop 2024-05-06 12:52:35 +02:00
5c5216e207 Aggiornato gradle plugin 8.4.0 2024-05-06 12:49:18 +02:00
7a20ff6ddc Finish v1.40.16(433) 2024-05-03 15:05:52 +02:00
048b7d7f56 Finish v1.40.16(433) 2024-05-03 15:05:51 +02:00
f009726cf0 -> v1.40.16 (433) 2024-05-03 15:05:37 +02:00
fb213cbdbb Aggiunta data delle righe dei colli nella generazione dei documenti interni 2024-05-03 11:33:12 +02:00
971dcaed87 Finish v1.40.15(432) 2024-04-30 16:46:14 +02:00
7b132def2a Finish v1.40.15(432) 2024-04-30 16:46:13 +02:00
998dc54292 -> v1.40.15 (432) 2024-04-30 16:46:08 +02:00
157eaf8760 Cambiate alcune logiche in versamento su Ordine 2024-04-29 12:08:10 +02:00
10ffcf7806 Refactoring progress views 2024-04-29 11:33:28 +02:00
392dd18338 Cambiata lettura barcode in Versamento su Ordine 2024-04-24 19:46:11 +02:00
d4c7cdf400 Fix codAnag vettore 2024-04-23 18:14:27 +02:00
cde96ae694 Fix codAnag vettore 2024-04-23 18:04:42 +02:00
e49d35fdbc Implementata gestione degli imballi in spedizione 2024-04-23 16:32:40 +02:00
55db6d362d Merge remote-tracking branch 'origin/develop' into develop 2024-04-19 17:33:03 +02:00
925cb6ae07 Implementata gestione degli imballi in accettazione 2024-04-19 17:32:32 +02:00
c4f1d53199 Finish v1.40.14(431) 2024-04-19 13:57:08 +02:00
e18ac7a390 Finish v1.40.14(431) 2024-04-19 13:57:08 +02:00
cc454aea1a -> v1.40.14 (431) 2024-04-19 13:56:55 +02:00
5cf275e43c Fix nullPoint StatoArtInventarioDto 2024-04-19 13:18:46 +02:00
53fe1db488 Finish v1.40.13(430)_2 2024-04-16 10:53:44 +02:00
64082fc5ee Finish v1.40.13(430)_2 2024-04-16 10:53:43 +02:00
f9c642ad13 Aggiornamenti librerie 2024-04-16 10:53:01 +02:00
bd7edf2357 Finish v1.40.13(430)_1 2024-04-16 10:48:05 +02:00
b7605bd28c Finish v1.40.13(430)_1 2024-04-16 10:48:04 +02:00
ad01283511 Aggiornamenti librerie 2024-04-16 10:46:56 +02:00
adeab93b17 Finish v1.40.13(430) 2024-04-16 08:56:03 +02:00
51480c2b06 Finish v1.40.13(430) 2024-04-16 08:56:03 +02:00
d04b3797ce -> v1.40.13 (430) 2024-04-16 08:55:44 +02:00
518a00becf Fix check newPartitaMag 2024-04-16 08:51:27 +02:00
c808cf7ce3 Finish v1.40.12(429) 2024-04-10 13:30:08 +02:00
8cb488d81f Finish v1.40.12(429) 2024-04-10 13:30:07 +02:00
ed3f84d0ea -> v1.40.12 (429) 2024-04-10 13:29:53 +02:00
d9b02c4402 Fix import MagazzinoRESTConsumer 2024-04-10 13:28:49 +02:00
23522c9370 Finish v1.40.11(428) 2024-04-10 13:27:26 +02:00
f79b40c574 Finish v1.40.11(428) 2024-04-10 13:27:26 +02:00
835915b46a -> v1.40.11 (428) 2024-04-10 13:27:06 +02:00
e643f25aa3 Fix response retrievePartitaMagSyncronized 2024-04-10 13:26:12 +02:00
230a32139d Aggiunto retrievePartitaMagSyncronized in MagazzinoRESTConsumer 2024-04-10 12:21:29 +02:00
b0272cd9e0 Fix thread in validation DialogInputQuantityV2 2024-04-10 12:07:41 +02:00
fa9947f22b Finish v1.40.10(427) 2024-04-09 10:06:58 +02:00
5d3bb333e1 Finish v1.40.10(427) 2024-04-09 10:06:58 +02:00
9f7085dfed -> v1.40.10 (427) 2024-04-09 10:06:32 +02:00
95f765756c Fix vari 2024-04-09 10:04:12 +02:00
a846ec00d7 Finish v1.40.09(426) 2024-04-04 12:26:54 +02:00
6edc1917e1 Finish v1.40.09(426) 2024-04-04 12:26:54 +02:00
1b864253b5 -> v1.40.09 (426) 2024-04-04 12:26:38 +02:00
f212987547 Aggiunto in UtilityString determineDateFormat 2024-04-04 12:25:25 +02:00
76f9c7030b Finish v1.40.08(425) 2024-04-04 11:54:19 +02:00
05bc6e3fbe Finish v1.40.08(425) 2024-04-04 11:54:18 +02:00
38dc5e134c -> v1.40.08 (425) 2024-04-04 11:53:56 +02:00
76cf6c7d66 Fix LocalDate deserializer 2024-04-04 11:52:24 +02:00
21100d517c Finish v1.40.07(424) 2024-03-27 18:16:12 +01:00
37f83cd642 Finish v1.40.07(424) 2024-03-27 18:16:11 +01:00
f29f832387 -> v1.40.07 (424) 2024-03-27 18:16:05 +01:00
dd523ed6d8 Rimossa apertura loading popup che causava crash 2024-03-27 18:15:11 +01:00
879cfc5f7e Fix vari 2024-03-25 12:45:21 +01:00
83a6dd29f2 Aggiornato AGP 2024-03-25 10:58:19 +01:00
cc85d83267 Finish v1.40.06(423) 2024-03-18 12:09:26 +01:00
5d427a258e Finish v1.40.06(423) 2024-03-18 12:09:26 +01:00
75e0a13f10 -> v1.40.06 (423) 2024-03-18 12:09:07 +01:00
0862727176 Fix nessun selezionato filtro gruppo merceologico 2024-03-18 12:06:58 +01:00
6c02fcc9d5 Finish v1.40.05(422) 2024-03-15 18:28:52 +01:00
cd38c1b301 Finish v1.40.05(422) 2024-03-15 18:28:51 +01:00
c822f14a10 -> v1.40.05 (422) 2024-03-15 18:28:29 +01:00
76683cb80c Fix nullPoint List<StatoArtInventarioDTO> in riposizionamento da prod 2024-03-15 18:25:48 +01:00
3041498ff1 Fix modal stato inventario 2024-03-14 16:44:39 +01:00
66e0ce15cb Fix filtro gruppo merceologico in approvvigionamento linee 2024-03-14 15:22:10 +01:00
e12da84fa3 Nel "riposizionamento da produzione" aggiunte le informazioni per "in arrivo" e "in magazzino" 2024-03-14 13:04:48 +01:00
bd4f28eb6d Fix rettifica giacenza 2024-03-13 12:59:26 +01:00
c25b2e6cb5 Aggiunto filtro per per gruppo merceologico in approvvigionamento linee 2024-03-13 11:08:55 +01:00
b86a1eb1bd Nella sezione "rettifica giacenza" aggiunto avviso nell'inserimento di una nuova della partita per articolo 2024-03-12 16:34:52 +01:00
a9b5483005 Refactor nomi varibili setup 2024-03-12 16:10:38 +01:00
29c181cff1 Refactor nomi varibili setup in settinsManager 2024-03-12 16:07:46 +01:00
614da5ec5a Refactor nomi varibili setup 2024-03-12 16:05:58 +01:00
5342f96076 Finish v1.40.04(421) 2024-03-11 17:33:45 +01:00
479950df14 Finish v1.40.04(421) 2024-03-11 17:33:44 +01:00
51fa32d48d -> v1.40.04 (421) 2024-03-11 17:33:38 +01:00
e491c56f3f Merge remote-tracking branch 'origin/develop' into develop 2024-03-11 17:32:28 +01:00
5c505e2fe1 Implementato flag per gestire la qta suggerita in accettazione bolle 2024-03-11 17:32:09 +01:00
67e88d01e7 Implementato in rettifica giacenza avviso se l'articolo che si sta inserendo è attivo o meno 2024-03-11 13:32:08 +01:00
9454614af6 Rimosso tipo report WMS_SPEDIZIONE_ETICHETTE_SSCC_ORD 2024-03-07 16:11:52 +01:00
535a095b0a Finish v1.40.03(420) 2024-03-07 12:10:19 +01:00
c6457ccf1c Finish v1.40.03(420) 2024-03-07 12:10:19 +01:00
3f470df462 -> v1.40.03 (420) 2024-03-07 12:10:04 +01:00
af5c5338b7 Fix linea di impiego in dialog in approv. linee 2024-03-07 12:03:44 +01:00
e832db3214 Finish v1.40.02(419) 2024-03-07 10:17:55 +01:00
8b432d1b19 Finish v1.40.02(419) 2024-03-07 10:17:55 +01:00
d33eb81968 -> v1.40.02 (419) 2024-03-07 10:17:50 +01:00
be60cdb971 Merge remote-tracking branch 'origin/develop' into develop 2024-03-07 10:16:46 +01:00
062f877777 Fix su folder di download degli aggiornamenti 2024-03-07 10:16:37 +01:00
5187564250 Aggiunta setup per dialog info situazione articolo in picking da ordine di lavorazione 2024-03-05 16:22:59 +01:00
fc22c119f6 Finish v1.40.01(418) 2024-03-05 11:08:45 +01:00
dd8b696862 Finish v1.40.01(418) 2024-03-05 11:08:44 +01:00
99a5e162de -> v1.40.01 (418) 2024-03-05 11:08:28 +01:00
84dcf30aac In Accettazione bolla evidenziato di un colore diverso le righe in cui è stata accettata più merce del previsto 2024-03-05 11:04:54 +01:00
388c0641cf Finish v1.40.00(417) 2024-03-04 14:51:40 +01:00
40f2c86eec Finish v1.40.00(417) 2024-03-04 14:51:39 +01:00
34bd0109c0 -> v1.40.00 (417) 2024-03-04 14:50:58 +01:00
b4199f38aa Creata gestione "Articoli in giacenza" 2024-03-04 14:45:25 +01:00
299e066436 Finish v1.39.03(416) 2024-03-01 18:01:33 +01:00
0098fdaf5a Finish v1.39.03(416) 2024-03-01 18:01:32 +01:00
76d26765ef -> v1.39.03 (416) 2024-03-01 18:01:29 +01:00
c5b6e80aaf Merge remote-tracking branch 'origin/develop' into develop 2024-03-01 18:00:46 +01:00
a1b3517b07 Fix su serializzatore GSON 2024-03-01 18:00:28 +01:00
bd3fdd9ab1 Aggiunto filtro descrizione in gestione Riposizionamento da prod 2024-02-26 13:04:31 +01:00
377950c978 Aggiunto try catch per catturare le eccezioni in caso di re-add del dialog di progress 2024-02-22 15:53:42 +01:00
d17e528158 Finish v1.39.02(415) 2024-02-22 12:34:12 +01:00
a0c9c40ab5 Finish v1.39.02(415) 2024-02-22 12:34:11 +01:00
175f9e226b -> v1.39.02 (415) 2024-02-22 12:33:54 +01:00
5f2a2d96e9 [VGALIMENTI]
Corretta lettura data scadenza in decodifica ean128
2024-02-22 12:29:54 +01:00
3a167befae Finish v1.39.01(414) 2024-02-21 11:38:50 +01:00
364c627f2d Finish v1.39.01(414) 2024-02-21 11:38:49 +01:00
c0a9477000 -> v1.39.01 (414) 2024-02-21 11:38:44 +01:00
f1f56b97d6 Aggiornato servizio di createUdc in Rettifica Giacenze 2024-02-21 11:34:16 +01:00
4a79b6c1bf Fix su logica di richiesta lotto in Spedizione nel caso di più lotti presenti in una UL 2024-02-21 10:05:28 +01:00
3fddb6bcf7 Aggiunta lettura di SSCC fornitore in accettazione merce 2024-02-20 11:40:22 +01:00
435b6d753a Aggiunto in locale decode ean128 2024-02-20 09:36:59 +01:00
f0e1cf7f0b Implementati suoni alla scansione dei barcode 2024-02-16 09:26:52 +01:00
7049552f16 In accettazione aggiunta possibilità di far sparire le righe quando si evadono completamente gli ordini 2024-02-15 10:14:29 +01:00
4e53189d56 Finish v1.39.00(413) 2024-02-07 17:13:22 +01:00
9aa38b6fca Finish v1.39.00(413) 2024-02-07 17:13:22 +01:00
5745d249f0 -> v1.39.00 (413) 2024-02-07 17:13:18 +01:00
089ca061a7 Fix null su picking senza gestione giacenza 2024-02-07 17:12:17 +01:00
725372befe Aggiunto filtro posizione in riposizionamento da prod 2024-02-07 10:07:31 +01:00
6a84828506 Implementato riposizionamento da produzione 2024-02-05 16:46:57 +01:00
1c0dc8c6f2 Finish v1.38.02(412) 2024-02-01 10:34:07 +01:00
59350f768e Finish v1.38.02(412) 2024-02-01 10:34:07 +01:00
0ebcf934ff -> v1.38.02 (412) 2024-02-01 10:34:02 +01:00
20c934a28e Aggiunto supporto ad Honeywell EDA52 2024-02-01 10:33:34 +01:00
b6abeee972 Ripristinati template 2024-01-30 10:52:07 +01:00
7ecf9e4807 Finish v1.38.01(411) 2024-01-23 18:20:57 +01:00
8030a90e8e Finish v1.38.01(411) 2024-01-23 18:20:56 +01:00
61810c44c7 -> v1.38.01 (411) 2024-01-23 18:20:52 +01:00
d64bc584f0 Merge remote-tracking branch 'origin/develop' into develop 2024-01-23 18:19:11 +01:00
4f4dea9097 Fix descrizione riga UL in ContenutoBancaleActivity 2024-01-23 18:19:03 +01:00
707c852377 Fix per fabbisogno linee 2024-01-23 16:10:54 +01:00
0ae1ac87d5 Finish v1.38.00(410) 2024-01-23 11:16:15 +01:00
f03fe78ed3 Finish v1.38.00(410) 2024-01-23 11:16:14 +01:00
77cf6ac4db -> v1.38.00 (410) 2024-01-23 11:16:08 +01:00
48d1a34c52 Merge remote-tracking branch 'origin/develop' into develop 2024-01-23 11:14:46 +01:00
258f150dbb Fix in accettazione ordini di produzione: venivano raggruppati gli ordini di lavoro sotto il primo ordine trovato 2024-01-23 11:14:15 +01:00
14783dfef5 Fix codMdep in chiusura ul 2024-01-22 15:32:40 +01:00
e62e5d11f0 Impedito prelevamento merce posizionata su depositi diversi 2024-01-19 17:27:38 +01:00
648d908e95 In rettifica giacenze passo lista mtbaart in caso di ean128 2024-01-17 12:11:44 +01:00
db3eb1b062 Aggiunto nella sezione Approvvigionamento avanti elenco degli ordini e filtro per numOrd 2024-01-17 09:14:44 +01:00
fb2bed2dbf Fix per Tuidi 2024-01-16 11:54:45 +01:00
f45010650a Finish v1.37.01(409) 2024-01-15 13:36:44 +01:00
6022cfea1f Finish v1.37.01(409) 2024-01-15 13:36:43 +01:00
1ceb8c9cf9 -> v1.37.01 (409) 2024-01-15 13:36:34 +01:00
3c86db62c0 Fix per Tuidi 2024-01-15 13:34:38 +01:00
49687efc16 Finish v1.37.00(408) 2024-01-12 13:15:31 +01:00
62835878a6 Finish v1.37.00(408) 2024-01-12 13:15:30 +01:00
02cd92f2dd -> v1.37.00 (408) 2024-01-12 12:42:51 +01:00
1014043c53 Completato versamento materiale su ordine 2024-01-12 12:39:31 +01:00
bd087fbf73 Finish v1.36.14(407) 2024-01-10 11:05:29 +01:00
12a1ce1654 Finish v1.36.14(407) 2024-01-10 11:05:27 +01:00
fbb7d414f1 -> v1.36.14 (407) 2024-01-10 11:05:22 +01:00
a09ed92945 Aggiunto flag in setup per permettere o meno il recupero delle UL in accettazione bolla 2024-01-10 11:02:56 +01:00
0194a5a49d Finish v1.36.13(406) 2024-01-09 18:43:35 +01:00
112110e10f Finish v1.36.13(406) 2024-01-09 18:43:34 +01:00
8045d8b4e9 -> v1.36.13 (406) 2024-01-09 18:43:29 +01:00
d839d94d34 Aggiunto parametro ID in fase di SaveTerminalino in Documenti Interni 2024-01-09 18:42:42 +01:00
5728481a94 Migliorie processBarcode in PVOrdineAcquistoEditActivity 2024-01-09 18:23:13 +01:00
4b1632c265 Probabile fix per popup caricamento in PVOrdineAcquistoEditActivity 2024-01-09 18:06:06 +01:00
b95863d66d Sostituito fab in doc interni edit form con Material3 2024-01-09 18:01:29 +01:00
2e360e8104 Aggiunta la cancellazione delle udc create 2024-01-09 15:51:15 +01:00
7c52a692e3 Merge remote-tracking branch 'origin/develop' into develop 2024-01-08 12:05:17 +01:00
17e3b8856c Inserendo il PLU in fase di inventario entra in modifica quantità 2024-01-08 12:05:12 +01:00
550cf3506e AGP Update 2024-01-08 10:20:18 +01:00
243d0d1d30 Finish v1.36.12(405) 2024-01-05 18:25:59 +01:00
98649e3a42 Finish v1.36.12(405) 2024-01-05 18:25:59 +01:00
9dabbee1c7 -> v1.36.12 (405) 2024-01-05 18:25:52 +01:00
1c9f4de437 Fix null point in approvvigionamento linee 2024-01-02 16:26:02 +01:00
b6bd8d5e01 Finish v1.36.11(404) 2023-12-19 16:09:23 +01:00
502ff6f684 Finish v1.36.11(404) 2023-12-19 16:09:23 +01:00
50e58446b4 -> v1.36.11 (404) 2023-12-19 16:08:57 +01:00
f8df1ffa96 Fix assegnazione lotto in export documenti interni 2023-12-19 16:04:05 +01:00
adf80ae3f5 Finish v1.36.10(403) 2023-12-15 15:31:32 +01:00
d81f623ee6 Finish v1.36.10(403) 2023-12-15 15:31:30 +01:00
84c6b7099b -> v1.36.10 (403) 2023-12-15 15:31:19 +01:00
965a60b6e8 Cambiato fab button in accettazione bolla 2023-12-15 12:01:24 +01:00
4ba1b847e7 Fix su tara non presente in anagrafica articolo. Cambiato servizio di retrieve by codMart. 2023-12-15 10:16:44 +01:00
f5ad8e8b64 Merge tag 'v1.36.09(402)' into develop
Finish v1.36.09(402)
2023-12-13 15:56:58 +01:00
4863b31bb6 Finish v1.36.09(402) 2023-12-13 15:56:58 +01:00
8411b0fc17 Fix documenti interni nullpoint 2023-12-13 15:56:30 +01:00
6541f17555 Fix warning partita scaduta e blocco per partita inattiva 2023-12-13 10:13:16 +01:00
143a6c9e9c Aggiunti codici e descrizioni di gruppo e sotto gruppo merceologico in approvvigionamento linee 2023-12-06 15:05:13 +01:00
8ef216318e Finish v1.36.08(401) 2023-12-04 17:01:29 +01:00
946d3e6593 Finish v1.36.08(401) 2023-12-04 17:01:28 +01:00
0bdc3a0638 -> v1.36.08 (401) 2023-12-04 17:01:17 +01:00
49782755bc Finish RemoveSetupCheckFornitore 2023-12-04 16:41:34 +01:00
2c5fb3ba48 Merge branch 'develop' into feature/RemoveSetupCheckFornitore 2023-12-04 16:41:13 +01:00
bf732a1182 Aggiunte note in colli 2023-12-04 16:40:08 +01:00
a73ecc1e81 Implementate nuove logiche picking libero per scarichi di lavorazione 2023-12-01 17:00:20 +01:00
818351f1d0 Rimossa setup checkForniore e fatto controllo con dati passati dai servizi 2023-11-30 15:17:31 +01:00
27577d10cf Completato refactoring DialogInfoAggiuntiveLU 2023-11-28 10:38:09 +01:00
09dd2ef31e Finish v1.36.07(400) 2023-11-27 09:55:52 +01:00
86507d41c7 Finish v1.36.07(400) 2023-11-27 09:55:51 +01:00
ea6585152c -> v1.36.07 (400) 2023-11-27 09:55:45 +01:00
01d7e433b5 Aggiornato Gradle Plugin 2023-11-27 09:54:26 +01:00
185288b221 Fix sul bottone annulla del DialogAskMagazzinoProssimita 2023-11-24 16:02:46 +01:00
ba35a6b32d Rimossa processSql e implentata chiamata ai servizi per retriveFabbisogno 2023-11-24 15:13:11 +01:00
04838ce08f Finish v1.36.06(399) 2023-11-21 14:49:14 +01:00
7c936bc387 Finish v1.36.06(399) 2023-11-21 14:49:13 +01:00
6c30400aa9 -> v1.36.06 (399) 2023-11-21 14:49:00 +01:00
03aa2b17ac Rinominata setup flagOverflowQuantityWarning 2023-11-21 13:07:41 +01:00
8c24f5f025 Aggiunto un messaggio di allert quando viene inserita una quantità superiore rispetto a quella presente nell'ordine. 2023-11-21 13:02:06 +01:00
7f9524e0b2 Alla lettura ean128 viene valorizzato il lotto nel collo 2023-11-17 11:25:00 +01:00
e6b50ef7da Aggiunta data consegna in picking di accettazione 2023-11-15 17:31:09 +01:00
2275db39b3 Aggiunta descrizione estesa ordine in picking di accettazione 2023-11-14 17:42:56 +01:00
3a3680b2b2 Finish v1.36.05(398) 2023-10-26 15:32:52 +02:00
2189acce5a Finish v1.36.05(398) 2023-10-26 15:32:51 +02:00
4a4e290a9c -> v1.36.05 (398) 2023-10-26 15:32:36 +02:00
1d92759653 Fix format data in DocInterni 2023-10-26 15:31:45 +02:00
bc9f4121ef Finish v1.36.04(397) 2023-10-20 16:11:15 +02:00
cc54c6decb Finish v1.36.04(397) 2023-10-20 16:11:14 +02:00
c592ba0795 -> v1.36.04 (397) 2023-10-20 16:11:09 +02:00
09d009bcc5 Fix height in dialog_basket_lu 2023-10-20 16:10:39 +02:00
0aca5df3fe Finish v1.36.03(396) 2023-10-06 11:34:58 +02:00
1117 changed files with 58349 additions and 21240 deletions

3
.gitignore vendored
View File

@@ -149,3 +149,6 @@ crashlytics.properties
crashlytics-build.properties
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar
copilot.*.xml
/.idea/dataSources.xml

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

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
</component>
</project>

41
.idea/appInsightsSettings.xml generated Normal file
View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="selectedTabId" value="Firebase Crashlytics" />
<option name="tabSettings">
<map>
<entry key="Android Vitals">
<value>
<InsightsFilterSettings>
<option name="connection">
<ConnectionSetting>
<option name="appId" value="it.integry.ordify.dulciar" />
</ConnectionSetting>
</option>
<option name="signal" value="SIGNAL_UNSPECIFIED" />
<option name="timeIntervalDays" value="SEVEN_DAYS" />
<option name="visibilityType" value="ALL" />
</InsightsFilterSettings>
</value>
</entry>
<entry key="Firebase Crashlytics">
<value>
<InsightsFilterSettings>
<option name="connection">
<ConnectionSetting>
<option name="appId" value="it.integry.integrywmsnative" />
<option name="mobileSdkAppId" value="1:963231271247:android:6d73ab369f33c450" />
<option name="projectId" value="wmsfirebaseproject-64854" />
<option name="projectNumber" value="963231271247" />
</ConnectionSetting>
</option>
<option name="signal" value="SIGNAL_UNSPECIFIED" />
<option name="timeIntervalDays" value="THIRTY_DAYS" />
<option name="visibilityType" value="ALL" />
</InsightsFilterSettings>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@@ -1,5 +1,40 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JavaCodeStyleSettings>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="false" module="true" />
<package name="android" withSubpackages="true" static="true" />
<package name="androidx" withSubpackages="true" static="true" />
<package name="com" withSubpackages="true" static="true" />
<package name="junit" withSubpackages="true" static="true" />
<package name="net" withSubpackages="true" static="true" />
<package name="org" withSubpackages="true" static="true" />
<package name="java" withSubpackages="true" static="true" />
<package name="javax" withSubpackages="true" static="true" />
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="android" withSubpackages="true" static="false" />
<emptyLine />
<package name="androidx" withSubpackages="true" static="false" />
<emptyLine />
<package name="com" withSubpackages="true" static="false" />
<emptyLine />
<package name="junit" withSubpackages="true" static="false" />
<emptyLine />
<package name="net" withSubpackages="true" static="false" />
<emptyLine />
<package name="org" withSubpackages="true" static="false" />
<emptyLine />
<package name="java" withSubpackages="true" static="false" />
<emptyLine />
<package name="javax" withSubpackages="true" static="false" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
<emptyLine />
</value>
</option>
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>

13
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="Prod_Android.WMS.app">
<State />
</entry>
<entry key="app">
<State />
</entry>
</value>
</component>
</project>

18
.idea/deploymentTargetSelector.xml generated Normal file
View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-06-10T08:33:51.753564600Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=21088B8EFD" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState>
</selectionStates>
</component>
</project>

13
.idea/deviceManager.xml generated Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DeviceTable">
<option name="columnSorters">
<list>
<ColumnSorterState>
<option name="column" value="Name" />
<option name="order" value="ASCENDING" />
</ColumnSorterState>
</list>
</option>
</component>
</project>

View File

@@ -0,0 +1,97 @@
#set( $regex = "([a-z])([A-Z]+)")
#set( $replacement = "$1_$2")
#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
public class ${NAME}Activity extends BaseActivity {
/*
- Create the following layout resource file [activity_${dashName}.xml]
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
- Create an entry in AndroidManifest.xml
Fix the android:name tag with current path
<activity
android:name="${NAME}Activity"
android:label="@string/activity_${dashName}_title"
android:screenOrientation="portrait"
android:theme="@style/Light" />
*/
@Inject
${NAME}ViewModel mViewModel;
//private Activity${NAME}Binding mBindings;
//Pass here all external parameters
public static void startActivity(Context context) {
Intent myIntent = new Intent(context, ${NAME}Activity.class);
//String keyExtraItem = DataCache.addItem(var);
//myIntent.putExtra("keyExtraItem", keyExtraItem);
context.startActivity(myIntent);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//mBindings = DataBindingUtil.setContentView(this, R.layout.activity_${dashName});
//mBindings.setLifecycleOwner(this);
/*
- Add following lines into MainApplicationComponent
[a] into @Component
${NAME}Module.class
[b] into interface body
${NAME}Component.Factory ${variableName}Component();
*/
MainApplication.appComponent
.${variableName}Component()
.create()
.inject(this);
}
}

View File

@@ -0,0 +1,12 @@
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = ${NAME}Component.class)
public class ${NAME}Module {
@Provides
${NAME}ViewModel provides${NAME}ViewModel() {
return new ${NAME}ViewModel();
}
}

View File

@@ -0,0 +1,12 @@
import dagger.Subcomponent;
@Subcomponent
public interface ${NAME}Component {
@Subcomponent.Factory
interface Factory {
${NAME}Component create();
}
void inject(${NAME}Activity ${NAME}Activity);
}

View File

@@ -0,0 +1,3 @@
public class ${NAME}ViewModel {
}

190
.idea/fileTemplates/Android Dialog.java generated Normal file
View File

@@ -0,0 +1,190 @@
#set( $regex = "([a-z])([A-Z]+)")
#set( $replacement = "$1_$2")
#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LifecycleOwner;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.expansion.BaseMaterialAlertDialogBuilder;
public class Dialog${NAME}View extends BaseMaterialAlertDialogBuilder implements DialogInterface.OnShowListener, DialogInterface.OnDismissListener {
/*
Create the following layout resource file [dialog_${dashName}.xml]
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="16dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="16dp">
<androidx.appcompat.widget.AppCompatImageView
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/ic_error_white_24dp"
app:tint="?colorPrimary" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="16dp"
android:text="Title here" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/description_text"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Description here" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>
</layout>
*/
@Inject
Dialog${NAME}ViewModel mViewModel;
//private Dialog${NAME}Binding mBindings;
private Context mContext;
//Pass here all external parameters
public static Dialog${NAME}View newInstance(@NonNull Context context) {
return new Dialog${NAME}View(context);
}
/*
- Add following lines into MainApplicationComponent
[a] into @Component
Dialog${NAME}Module.class
[b] into interface body
Dialog${NAME}Component.Factory dialog${NAME}Component();
*/
private Dialog${NAME}View(@NonNull Context context) {
super(context);
this.mContext = context;
MainApplication.appComponent
.dialog${NAME}Component()
.create()
.inject(this);
//mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
if (context instanceof LifecycleOwner) {
//mBindings.setLifecycleOwner((LifecycleOwner) context);
}
setCancelable(true);
setView(mBindings.getRoot());
/*
setPositiveButton(R.string.ok, (dialog, which) -> {
onOk();
});
setNegativeButton(R.string.abort, (dialog, which) -> {
onKo();
});
*/
//this.setupBarcode();
}
@NonNull
@Override
public AlertDialog create() {
AlertDialog alertDialog = super.create();
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setOnShowListener(this);
alertDialog.setOnDismissListener(this);
return alertDialog;
}
@Override
public void onShow(DialogInterface dialogInterface) {
//Init here all data or lists
//this.initList();
}
@Override
public void onDismiss(DialogInterface dialog) {
//BarcodeManager.removeCallback(mBarcodeScannerInstanceID);
}
/*
private void setupBarcode() {
BarcodeManager.enable(mBarcodeScannerInstanceID);
mBarcodeScannerInstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getContext(), ex, false)));
super.initBarcodeManager(mBarcodeScannerInstanceID);
}
*/
public static class Result {
private final Object returnData;
private final boolean isAborted;
private Result(Object returnData, boolean isAborted) {
this.returnData = returnData;
this.isAborted = isAborted;
}
public static Result completed(Object returnData) {
return new Result(returnData, false);
}
public static Result aborted() {
return new Result(null, true);
}
public boolean isAborted() {
return isAborted;
}
public Object getReturnData() {
return returnData;
}
}
}

View File

@@ -0,0 +1,12 @@
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = Dialog${NAME}Component.class)
public class Dialog${NAME}Module {
@Provides
Dialog${NAME}ViewModel providesDialog${NAME}ViewModel() {
return new Dialog${NAME}ViewModel();
}
}

View File

@@ -0,0 +1,12 @@
import dagger.Subcomponent;
@Subcomponent
public interface Dialog${NAME}Component {
@Subcomponent.Factory
interface Factory {
Dialog${NAME}Component create();
}
void inject(Dialog${NAME}View dialog${NAME}View);
}

View File

@@ -0,0 +1,3 @@
public class Dialog${NAME}ViewModel {
}

View File

@@ -0,0 +1,82 @@
#set( $regex = "([a-z])([A-Z]+)")
#set( $replacement = "$1_$2")
#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
public class ${NAME}Fragment extends BaseFragment {
/*
- Create the following layout resource file [fragment_${dashName}.xml]
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
*/
@Inject
${NAME}ViewModel mViewModel;
//private Fragment${NAME}Binding mBindings;
public ${NAME}Fragment() {
// Required empty public constructor
}
public static ${NAME}Fragment newInstance() {
return new ${NAME}Fragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
setRetainInstance(true);
//mBindings = Fragment${NAME}Binding.inflate(inflater, container, false);
//mBindings.setLifecycleOwner(this);
/*
- Add following lines into MainApplicationComponent
[a] into @Component
${NAME}Module.class
[b] into interface body
${NAME}Component.Factory ${variableName}Component();
*/
MainApplication.appComponent
.${variableName}Component()
.create()
.inject(this);
return mBindings.getRoot();
}
}

View File

@@ -0,0 +1,3 @@
public class ${NAME}ViewModel {
}

View File

@@ -0,0 +1,12 @@
import dagger.Subcomponent;
@Subcomponent
public interface ${NAME}Component {
@Subcomponent.Factory
interface Factory {
${NAME}Component create();
}
void inject(${NAME}Fragment ${NAME}Fragment);
}

View File

@@ -0,0 +1,12 @@
import dagger.Module;
import dagger.Provides;
@Module(subcomponents = ${NAME}Component.class)
public class ${NAME}Module {
@Provides
${NAME}ViewModel provides${NAME}ViewModel() {
return new ${NAME}ViewModel();
}
}

2
.idea/kotlinc.xml generated
View File

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

17
.idea/runConfigurations.xml generated Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@@ -1,6 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS.app.main" />
<module name="WMS.app" />
<option name="ANDROID_RUN_CONFIGURATION_SCHEMA_VERSION" value="1" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,14 +9,17 @@
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="ALLOW_ASSUME_VERIFIED" value="false" />
<option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base,WMS.dynamic_vgalimenti" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="RESTORE_ENABLED" value="false" />
<option name="RESTORE_FILE" value="" />
<option name="RESTORE_FRESH_INSTALL_ONLY" value="false" />
<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="TARGET_SELECTION_MODE" value="DEVICE_AND_SNAPSHOT_COMBO_BOX" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
@@ -25,6 +29,8 @@
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
@@ -32,14 +38,21 @@
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Hybrid>
<Java />
<Java>
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</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" />
<option name="ATTACH_ON_WAIT_FOR_DEBUGGER" value="false" />
<option name="DEBUG_SANDBOX_SDK" value="false" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
@@ -50,6 +63,7 @@
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />

72
Jenkinsfile.groovy Normal file
View File

@@ -0,0 +1,72 @@
pipeline {
agent {
label 'master'
}
options {
buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '10'))
disableConcurrentBuilds()
}
environment {
// ANDROID_HOME = "/usr/local/android/sdk" // Cambia in base al tuo sistema
JAVA_HOME = tool 'JDK 17.0.6 x64' // Nome dello strumento configurato in Jenkins
PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
}
stages {
stage('Preparing') {
when {
expression {
return env.GIT_BRANCH == "master-beta"
}
}
steps {
bat "./gradlew addBetaSuffix"
}
}
stage('Build') {
steps {
bat "./gradlew assembleRelease"
archiveArtifacts artifacts: 'app/build/outputs/apk/release/', onlyIfSuccessful: true
}
}
stage('Publish') {
steps {
azureUpload allowAnonymousAccess: true, fileShareName: 'storage-ci', filesPath: 'app/build/outputs/apk/release/*.apk,app/build/outputs/apk/release/*.txt', removePrefixPath: 'app/build/outputs/apk/release/', storageCredentialId: '83a86793-c1d6-4776-b20f-1ff652a57fee', storageType: 'filestorage', uploadArtifactsOnlyIfSuccessful: true, verbose: true, virtualPath: 'wms'
}
}
}
post {
success {
script {
bat 'curl -k "https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false"'
bat 'curl -k "https://devservices.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta"'
bat 'curl -k "https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false"'
bat 'curl -k "https://services.studioml.it/ems-api/updateWMSApp?overrideForced=false&suffix=beta"'
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#008000', message: 'WMS è stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
}
}
}
unstable {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: 'WMS è INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
}
}
}
failure {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "master-beta") {
office365ConnectorSend adaptiveCards: true, color: '#FF2C2C', message: 'Errore di compilazione su WMS', status: 'FAILURE', webhookUrl: 'https://default0b9c060c159c4e5f82a77459a72572.16.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/a73f903a4044474c84ad9a0d68a9a479/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=gXc43FQXqIq7Xpfvis2XgFoPl8lpg0Sf5HtuxZG_jeI'
}
}
}
}
}

View File

@@ -5,13 +5,14 @@ if (!project.hasProperty("disable-performance-plugin")) {
}
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'kotlin-android'
//apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 396
def appVersionName = '1.36.03'
def appVersionCode = 553
def appVersionName = '1.50.04'
signingConfigs {
release {
@@ -25,8 +26,8 @@ android {
}
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
applicationVariants.configureEach { variant ->
variant.outputs.configureEach { output ->
output.outputFileName = "android-release.apk"
}
}
@@ -34,10 +35,10 @@ android {
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
targetSdkVersion 33
targetSdk 36
versionCode appVersionCode
versionName appVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release
javaCompileOptions {
@@ -51,17 +52,26 @@ android {
buildTypes {
debug {
ext.enableCrashlytics = false
minifyEnabled true // Abilita la minimizzazione del codice
// shrinkResources true // Rimuove risorse non utilizzate
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
// minifyEnabled true // Abilita la minimizzazione del codice
// shrinkResources true // Rimuove risorse non utilizzate
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
firebaseCrashlytics {
mappingFileUploadEnabled true
}
}
}
android.buildFeatures.dataBinding true
android.buildFeatures.buildConfig true
android.dataBinding.enabledForTests true
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
@@ -72,51 +82,55 @@ android {
}
build {
doLast {
delete "$projectDir/build/outputs/apk/release/version.txt"
file("$projectDir/build/outputs/apk/release/version.txt").text = appVersionCode + '\n' + appVersionName
}
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile.class) {
tasks.withType(JavaCompile.class).tap {
configureEach {
options.compilerArgs << "-Xmaxerrs" << "10000"
}
}
}
lint {
abortOnError false
}
namespace 'it.integry.integrywmsnative'
compileSdk 33
compileSdk 36
}
configurations {
all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7'
all*.exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
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"
// androidTestImplementation('androidx.test.espresso:espresso-core:3.6.1', {
// exclude group: 'com.android.support', module: 'support-annotations'
// })
// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.github.lupaulus:logger:2.3.2'
//Firebase
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:29.1.0')
implementation platform('com.google.firebase:firebase-bom:33.16.0')
implementation 'com.google.firebase:firebase-analytics'
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.2.0'
implementation 'com.google.android.gms:play-services-basement:18.7.1'
//JJWT
implementation 'io.jsonwebtoken:jjwt-api:0.12.6'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.6'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.6'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.3.1'
implementation 'androidx.recyclerview:recyclerview:1.4.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation('androidx.preference:preference-ktx:1.2.1') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
@@ -124,43 +138,35 @@ dependencies {
}
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0"
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:retrofit:3.0.0'
implementation 'com.squareup.retrofit2:converter-gson:3.0.0'
implementation 'com.annimon:stream:1.2.2'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.2'
// implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'org.apache.commons:commons-text:1.9'
implementation 'androidx.lifecycle:lifecycle-runtime:2.9.1'
implementation 'org.apache.commons:commons-text:1.13.1'
//MVVM
def dagger2_version = '2.46.1'
api "com.google.dagger:dagger:$dagger2_version"
def dagger2_version = '2.56.2'
implementation "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version"
api "com.google.dagger:dagger-android-support:$dagger2_version"
implementation "com.google.dagger:dagger-android:$dagger2_version"
implementation "com.google.dagger:dagger-android-support:$dagger2_version"
// if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
//FAB
implementation 'com.github.clans:fab:1.6.4'
//CUSTOM VIEWS
implementation 'com.github.NaimishTrivedi:FBToast:1.0'
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'
implementation 'com.github.zhukic:sectioned-recyclerview:1.2.3'
implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
def room_version = "2.5.2"
def room_version = "2.7.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-rxjava3:$room_version"
//AppUpdate
implementation 'com.github.javiersantos:AppUpdater:2.7'
//Barcode
implementation project(':pointmobilescannerlibrary')
implementation project(':zebrascannerlibrary')
@@ -178,11 +184,16 @@ dependencies {
//Bluetooth device manager
implementation 'com.github.harry1453:android-bluetooth-serial:v1.1'
implementation 'com.github.harry1453:android-bluetooth-serial:v1.1.2'
// RxJava is also required.
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
//Barcode generator
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
implementation("org.javatuples:javatuples:1.2")
}
repositories {
@@ -190,3 +201,49 @@ repositories {
google()
maven { url 'https://jitpack.io' }
}
tasks.register('addBetaSuffix') {
doLast {
def gradleFile = file("build.gradle")
def content = gradleFile.text
// Modifica appVersionName
content = content.replaceAll(/appVersionName\s*=\s*'(.*?)'/) { fullMatch, version ->
"appVersionName = '${version}-beta'"
}
// Modifica outputFileName
content = content.replaceAll(/output\.outputFileName\s*=\s*"(.*?)"/) { fullMatch, filename ->
"output.outputFileName = \"${filename.replace('.apk', '-beta.apk')}\""
}
// Modifica direttamente la riga che crea 'version.txt' in 'version-beta.txt'
content = content.replace(
"def versionFile = new File(outputDir, \"version.txt\")",
"def versionFile = new File(outputDir, \"version-beta.txt\")"
)
// Sovrascrivi il file
gradleFile.write(content)
}
}
tasks.register('createVersionFile') {
doLast {
def outputDir = file("${projectDir}/build/outputs/apk/release")
def versionFile = new File(outputDir, "version.txt")
// Cancella il file se esiste
if (versionFile.exists()) {
versionFile.delete()
}
// Crea il file con i contenuti desiderati
versionFile.write("${android.defaultConfig.versionCode}\n${android.defaultConfig.versionName}\nforced=true")
}
}
afterEvaluate {
tasks.assembleRelease.finalizedBy createVersionFile
}

View File

@@ -18,8 +18,55 @@
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-dontwarn android.os.ServiceManager
-keep class io.jsonwebtoken.** { *; }
-dontwarn io.jsonwebtoken.**
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclasseswithmembers class * {
<init>(...);
@com.google.gson.annotations.SerializedName <fields>;
}
# Per JJWT
-keep class io.jsonwebtoken.** { *; }
-keepnames class io.jsonwebtoken.* { *; }
-keepnames interface io.jsonwebtoken.* { *; }
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowshrinking class * extends com.google.gson.reflect.TypeToken
-keep,allowshrinking class com.google.common.reflect.TypeToken
-keep,allowshrinking class * extends com.google.common.reflect.TypeToken
-keep class it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }
-keep class * extends it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse { *; }
-keep class * extends it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView { *; }
-keep class * implements it.integry.barcode_base_android_library.interfaces.BarcodeReaderInterface { *; }
# Regole ProGuard per Gson e classi modello
-keepattributes Signature
-keepattributes InnerClasses
# Se usi ObservableArrayList o altre classi specifiche di AndroidX Data Binding con Gson,
# potresti aver bisogno di mantenerle esplicitamente se non sono coperte sopra.
-keep class androidx.databinding.ObservableArrayList { *; }
-keepclassmembers class androidx.databinding.ObservableArrayList { *; }
-keep class * implements it.integry.integrywmsnative.view.dialogs.ask_cliente.viewmodel.IDialogAskClienteViewModel { *; }

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

@@ -2,6 +2,9 @@
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
@@ -24,8 +27,8 @@
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
@@ -33,65 +36,59 @@
android:requestLegacyExternalStorage="true">
<activity
android:name=".gest.spedizione.SpedizioneActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.prod_dettaglio_linea.ProdDettaglioLineaActivity"
android:theme="@style/Light"
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:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.main.MainActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".gest.login.LoginActivity"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.accettazione_ordini_picking.AccettazioneOrdiniPickingActivity"
android:theme="@style/Light"
android:windowSoftInputMode="adjustNothing"
android:windowSoftInputMode="adjustPan"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.lista_bancali.ListaBancaliActivity"
android:label="@string/activity_lista_bancali_title"
android:theme="@style/Light"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".gest.contenuto_bancale.ContenutoBancaleActivity"
android:label="@string/activity_contenuto_bancale_title"
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"/>
<activity
android:name=".gest.trasferimento_pedane.edit.TrasferimentoPedaneEditActivity"
android:label="@string/activity_trasferimento_pedane_edit_title"
android:windowSoftInputMode="adjustNothing"
android:configChanges="orientation|screenSize|keyboardHidden" />
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="true" />
@@ -110,8 +107,7 @@
<activity
android:name=".gest.accettazione_bolla_picking.AccettazioneBollaPickingActivity"
android:screenOrientation="portrait"
android:theme="@style/Light" />
android:screenOrientation="portrait" />
<provider
android:name=".core.update.GenericFileProvider"

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -11,6 +11,7 @@ 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.core.expansion.BaseMaterialAlertDialogBuilderComponent;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoComponent;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoModule;
import it.integry.integrywmsnative.gest.accettazione_bolla_picking.AccettazioneBollaPickingComponent;
@@ -19,6 +20,8 @@ import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazi
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoModule;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingComponent;
import it.integry.integrywmsnative.gest.accettazione_ordini_picking.AccettazioneOrdiniPickingModule;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaComponent;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniModule;
import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoComponent;
@@ -27,6 +30,8 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniE
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.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectLotti.DialogSelectLottiModule;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent;
import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule;
import it.integry.integrywmsnative.gest.inventario.ElencoInventariComponent;
@@ -67,6 +72,11 @@ import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMate
import it.integry.integrywmsnative.gest.prod_recupero_materiale.ProdRecuperoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_rientro_merce.ProdRientroMerceComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_detail.ProdRientroMerceOrderDetailComponent;
import it.integry.integrywmsnative.gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListComponent;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdComponent;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.ProdRiposizionamentoDaProdModule;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaComponent;
import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dialogs.info_giacenza.DialogInfoGiacenzaModule;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeComponent;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeModule;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferComponent;
@@ -80,6 +90,8 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.selectArt
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoComponent;
import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeModule;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.settings.MainSettingsComponent;
@@ -92,10 +104,20 @@ import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazi
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.trasferimento_pedane.TrasferimentoPedaneComponent;
import it.integry.integrywmsnative.gest.trasferimento_pedane.TrasferimentoPedaneModule;
import it.integry.integrywmsnative.gest.trasferimento_pedane.dialog.confirm_export.DialogTrasferimentoPedaneConfirmExportComponent;
import it.integry.integrywmsnative.gest.trasferimento_pedane.dialog.confirm_export.DialogTrasferimentoPedaneConfirmExportModule;
import it.integry.integrywmsnative.gest.trasferimento_pedane.edit.TrasferimentoPedaneEditComponent;
import it.integry.integrywmsnative.gest.trasferimento_pedane.edit.TrasferimentoPedaneEditModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteComponent;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.UltimeConsegneClienteModule;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoComponent;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog.DialogUltimeConsegneFiltroAvanzatoModule;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreComponent;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.UltimiArriviFornitoreModule;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzatoComponent;
import it.integry.integrywmsnative.gest.ultimi_arrivi_fornitore.dialog.DialogUltimiArriviFornitoreFiltroAvanzatoModule;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceComponent;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceModule;
import it.integry.integrywmsnative.view.bottom_sheet__item_edit.BottomSheetItemEditComponent;
@@ -104,17 +126,41 @@ import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetM
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.ask_commessa.DialogAskCommessaComponent;
import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoComponent;
import it.integry.integrywmsnative.view.dialogs.ask_deposito.DialogAskDepositoModule;
import it.integry.integrywmsnative.view.dialogs.ask_info_trasferimento.DialogAskInfoTrasferimentoComponent;
import it.integry.integrywmsnative.view.dialogs.ask_info_trasferimento.DialogAskInfoTrasferimentoModule;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdComponent;
import it.integry.integrywmsnative.view.dialogs.ask_linea_prod.DialogAskLineaProdModule;
import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneComponent;
import it.integry.integrywmsnative.view.dialogs.ask_livello_posizione.DialogAskLivelloPosizioneModule;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUComponent;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLUModule;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesComponent;
import it.integry.integrywmsnative.view.dialogs.ask_unknown_barcode_notes.DialogAskUnknownBarcodeNotesModule;
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreComponent;
import it.integry.integrywmsnative.view.dialogs.ask_vettore.DialogAskVettoreModule;
import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUComponent;
import it.integry.integrywmsnative.view.dialogs.basket_lu.DialogBasketLUModule;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageComponent;
import it.integry.integrywmsnative.view.dialogs.bind_product_barcode_with_package.DialogBindProductBarcodeWithPackageModule;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsComponent;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArtsModule;
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.create_new_art.DialogCreateNewArtComponent;
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtModule;
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeComponent;
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeModule;
import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoComponent;
import it.integry.integrywmsnative.view.dialogs.extra_info.DialogExtraInfoModule;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUComponent;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.DialogInfoAggiuntiveLUModule;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdComponent;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.DialogInputLUProdModule;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPesoLUComponent;
@@ -129,6 +175,14 @@ 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;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLUModule;
import it.integry.integrywmsnative.view.dialogs.select_position_of_lu.DialogSelectPositionOfLuComponent;
import it.integry.integrywmsnative.view.dialogs.select_position_of_lu.DialogSelectPositionOfLuModule;
import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoComponent;
import it.integry.integrywmsnative.view.dialogs.switch_user_depo.DialogSwitchUserDepoModule;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiComponent;
import it.integry.integrywmsnative.view.dialogs.tracciamento_imballi.DialogTracciamentoImballiModule;
import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAvailableComponent;
import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAvailableModule;
// Definition of the Application graph
@Singleton
@@ -160,6 +214,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogInputLUProdModule.class,
DialogScanArtModule.class,
DialogScanOrCreateLUModule.class,
DialogBasketLUModule.class,
ProdFabbisognoLineeProdModule.class,
VersamentoMerceModule.class,
DialogAskMagazzinoProssimitaModule.class,
@@ -173,6 +228,7 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogSelectDocInfoModule.class,
DocInterniEditFormModule.class,
DialogSelectDocRowsModule.class,
DialogSelectLottiModule.class,
DialogAskClienteModule.class,
DialogEditArticoloModule.class,
DialogPrintOrderSSCCListModule.class,
@@ -195,7 +251,33 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr
DialogBindProductBarcodeWithPackageModule.class,
DialogAskUnknownBarcodeNotesModule.class,
ProdVersamentoMaterialeInBufferModule.class,
DialogInputQuantityToReturnModule.class
DialogInputQuantityToReturnModule.class,
DialogInfoAggiuntiveLUModule.class,
DialogAskLineaProdModule.class,
ProdRiposizionamentoDaProdModule.class,
DialogInfoGiacenzaModule.class,
ArticoliInGiacenzaModule.class,
DialogTracciamentoImballiModule.class,
DialogAskVettoreModule.class,
DialogAskVettoreModule.class,
DialogCreateNewArtModule.class,
DialogSwitchUserDepoModule.class,
DialogUpdateAvailableModule.class,
DialogAskPositionOfLUModule.class,
DialogAskLivelloPosizioneModule.class,
VerificaGiacenzeModule.class,
DialogExtraInfoModule.class,
DialogAskDepositoModule.class,
DialogChooseArtFromListaArtsModule.class,
DialogUltimeConsegneFiltroAvanzatoModule.class,
DialogUltimiArriviFornitoreFiltroAvanzatoModule.class,
DialogSelectPositionOfLuModule.class,
TrasferimentoPedaneModule.class,
DialogAskInfoTrasferimentoModule.class,
TrasferimentoPedaneEditModule.class,
DialogTrasferimentoPedaneConfirmExportModule.class,
DialogChooseArtFromListaArtsModule.class,
DialogDeviceEndOfLifeModule.class
})
public interface MainApplicationComponent {
@@ -205,6 +287,8 @@ public interface MainApplicationComponent {
BaseDialogFragmentComponent.Factory baseDialogFragmentComponent();
BaseMaterialAlertDialogBuilderComponent.Factory baseMaterialAlertDialogComponent();
SplashActivityComponent.Factory splashActivityComponent();
LoginComponent.Factory loginActivityComponent();
@@ -251,6 +335,8 @@ public interface MainApplicationComponent {
DialogScanOrCreateLUComponent.Factory dialogScanOrCreateLUComponent();
DialogBasketLUComponent.Factory dialogBasketLUComponent();
ProdFabbisognoLineeProdComponent.Factory prodFabbisognoLineeProdComponent();
VersamentoMerceComponent.Factory versamentoMerceComponent();
@@ -281,8 +367,6 @@ public interface MainApplicationComponent {
DocInterniEditFormComponent.Factory docInterniEditFormComponent();
InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent();
DialogEditArticoloComponent.Factory dialogEditArticoloComponent();
DialogPrintOrderSSCCListComponent.Factory dialogPrintOrderSSCCListComponent();
@@ -314,6 +398,7 @@ public interface MainApplicationComponent {
DialogInfoSituazioneArticoloComponent.Factory dialogInfoSituazioneArticoloComponent();
DialogSelectDocRowsComponent.Factory dialogSelectDocRowsNewComponent();
DialogSelectLottiComponent.Factory dialogSelectLottiComponent();
DialogSelectArtToOrderComponent.Factory dialogSelectArtToOrderNewComponent();
@@ -329,6 +414,58 @@ public interface MainApplicationComponent {
DialogInputQuantityToReturnComponent.Factory dialogInputQuantityToReturnComponent();
DialogInfoAggiuntiveLUComponent.Factory dialogInfoAggiuntiveLUComponent();
DialogAskLineaProdComponent.Factory dialogAskLineaProdComponent();
ProdRiposizionamentoDaProdComponent.Factory prodRiposizionamentoDaprodComponent();
DialogInfoGiacenzaComponent.Factory dialogInfoGiacenzaComponent();
ArticoliInGiacenzaComponent.Factory controlloGiacenzeComponent();
DialogTracciamentoImballiComponent.Factory dialogTracciamentoImballiComponent();
DialogAskVettoreComponent.Factory dialogAskVettoreComponent();
DialogAskCommessaComponent.Factory dialogAskCommessaComponent();
DialogCreateNewArtComponent.Factory dialogCreateNewArtComponent();
DialogSwitchUserDepoComponent.Factory dialogSwitchUserDepoComponent();
ProdRientroMerceOrderListComponent.Factory prodRientroMerceOrderListComponent();
DialogUpdateAvailableComponent.Factory dialogUpdateAvailableComponent();
DialogAskPositionOfLUComponent.Factory dialogAskPositionOfLUComponent();
DialogAskLivelloPosizioneComponent.Factory dialogAskLivelloPosizioneComponent();
VerificaGiacenzeComponent.Factory verificaGiacenzeComponent();
DialogExtraInfoComponent.Factory dialogExtraInfoComponent();
DialogAskDepositoComponent.Factory dialogAskDepositoComponent();
DialogChooseArtFromListaArtsComponent.Factory dialogChooseArtFromListaArtsComponent();
DialogUltimeConsegneFiltroAvanzatoComponent.Factory dialogUltimeConsegneFiltroAvanzatoComponent();
DialogUltimiArriviFornitoreFiltroAvanzatoComponent.Factory dialogUltimiArriviFornitoreFiltroAvanzatoComponent();
DialogSelectPositionOfLuComponent.Factory dialogSelectPositionOfLuComponent();
TrasferimentoPedaneComponent.Factory trasferimentoPedaneComponent();
DialogAskInfoTrasferimentoComponent.Factory dialogAskInfoTrasferimentoComponent();
TrasferimentoPedaneEditComponent.Factory traferimentoPedaneEditComponent();
DialogTrasferimentoPedaneConfirmExportComponent.Factory dialogTrasferimentoPedaneConfirmExportComponent();
DialogDeviceEndOfLifeComponent.Factory dialogDeviceEndOfLifeComponent();
void inject(MainApplication mainApplication);
void inject(AppContext mainApplication);

View File

@@ -16,8 +16,11 @@ import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.ean128.Ean128Service;
import it.integry.integrywmsnative.core.menu.MenuRESTConsumer;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.AuthInterceptor;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.AziendaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
@@ -30,22 +33,29 @@ import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DocumentRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ImballiRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoBufferRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MaterialiRESTConsumer;
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.ProduzioneRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.VettoriRESTConsumer;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.sound.SoundAlertService;
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.gest.login.rest.AuthenticationRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@@ -78,8 +88,8 @@ public class MainApplicationModule {
@Provides
@Singleton
public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) {
return new SettingsManager(mApplication, systemRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer);
public SettingsManager provideSettingsManager(SystemRESTConsumer systemRESTConsumer, ImballiRESTConsumer imballiRESTConsumer, AziendaRESTConsumer aziendaRESTConsumer, PosizioniRESTConsumer posizioniRESTConsumer, GestSetupRESTConsumer gestSetupRESTConsumer) {
return new SettingsManager(mApplication, systemRESTConsumer, imballiRESTConsumer, aziendaRESTConsumer, gestSetupRESTConsumer, posizioniRESTConsumer);
}
@Provides
@@ -90,8 +100,14 @@ public class MainApplicationModule {
@Provides
@Singleton
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) {
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer);
ServerStatusChecker providesServerStatusChecker(Handler handler) {
return new ServerStatusChecker(handler);
}
@Provides
@Singleton
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, AuthenticationRESTConsumer authenticationRESTConsumer, ExecutorService executorService, Handler handler, ServerStatusChecker serverStatusChecker) {
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, authenticationRESTConsumer, executorService, handler, serverStatusChecker);
}
@Provides
@@ -102,6 +118,19 @@ public class MainApplicationModule {
return colliDataRecoverService;
}
@Provides
@Singleton
Ean128Service provideEan128Service() {
return new Ean128Service();
}
@Provides
@Singleton
RESTBuilder providesRESTBuilder(AuthInterceptor authInterceptor) {
return new RESTBuilder(authInterceptor);
}
@Provides
@Singleton
MenuService provideMenuService(MenuRESTConsumer menuRESTConsumer) {
@@ -110,8 +139,8 @@ public class MainApplicationModule {
@Provides
@Singleton
UpdatesManager provideUpdatesManager() {
return new UpdatesManager();
UpdatesManager provideUpdatesManager(ExecutorService executorService, Handler handler, SystemRESTConsumer systemRESTConsumer) {
return new UpdatesManager(executorService, handler, systemRESTConsumer);
}
@Provides
@@ -128,119 +157,139 @@ public class MainApplicationModule {
@Provides
@Singleton
OrdiniRESTConsumer provideOrdiniRESTConsumer(SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
return new OrdiniRESTConsumer(systemRESTConsumer, entityRESTConsumer);
OrdiniRESTConsumer provideOrdiniRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer, EntityRESTConsumer entityRESTConsumer) {
return new OrdiniRESTConsumer(restBuilder, executorService, systemRESTConsumer, entityRESTConsumer);
}
@Provides
@Singleton
GestSetupRESTConsumer provideGestSetupRESTConsumer() {
return new GestSetupRESTConsumer();
GestSetupRESTConsumer provideGestSetupRESTConsumer(RESTBuilder restBuilder) {
return new GestSetupRESTConsumer(restBuilder);
}
@Provides
@Singleton
ArticoloRESTConsumer provideArticoloRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new ArticoloRESTConsumer(systemRESTConsumer);
ArticoloRESTConsumer provideArticoloRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
return new ArticoloRESTConsumer(restBuilder, executorService, systemRESTConsumer);
}
@Provides
@Singleton
CommessaRESTConsumer provideCommessaRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new CommessaRESTConsumer(systemRESTConsumer);
CommessaRESTConsumer provideCommessaRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
return new CommessaRESTConsumer(executorService, systemRESTConsumer);
}
@Provides
@Singleton
DepositoRESTConsumer provideDepositoRESTConsumer(EntityRESTConsumer entityRESTConsumer, SystemRESTConsumer systemRESTConsumer) {
return new DepositoRESTConsumer(entityRESTConsumer, systemRESTConsumer);
DepositoRESTConsumer provideDepositoRESTConsumer(ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
return new DepositoRESTConsumer(executorService, systemRESTConsumer);
}
@Provides
@Singleton
MenuRESTConsumer provideMenuRESTConsumer() {
return new MenuRESTConsumer();
MenuRESTConsumer provideMenuRESTConsumer(RESTBuilder restBuilder) {
return new MenuRESTConsumer(restBuilder);
}
@Provides
@Singleton
MagazzinoRESTConsumer provideMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new MagazzinoRESTConsumer(systemRESTConsumer);
MagazzinoRESTConsumer provideMagazzinoRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SystemRESTConsumer systemRESTConsumer) {
return new MagazzinoRESTConsumer(restBuilder, executorService, systemRESTConsumer);
}
@Provides
@Singleton
MesRESTConsumer provideMesRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new MesRESTConsumer(systemRESTConsumer);
MesRESTConsumer provideMesRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
return new MesRESTConsumer(executorService, restBuilder, systemRESTConsumer);
}
@Provides
@Singleton
EntityRESTConsumer provideEntityRESTConsumer() {
return new EntityRESTConsumer();
EntityRESTConsumer provideEntityRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new EntityRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(SystemRESTConsumer systemRESTConsumer,
ColliMagazzinoRESTConsumer provideColliMagazzinoRESTConsumer(ExecutorService executorService,
RESTBuilder restBuilder,
SystemRESTConsumer systemRESTConsumer,
ArticoloRESTConsumer articoloRESTConsumer,
EntityRESTConsumer entityRESTConsumer,
SettingsManager settingsManager) {
return new ColliMagazzinoRESTConsumer(systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager);
return new ColliMagazzinoRESTConsumer(executorService, restBuilder, systemRESTConsumer, articoloRESTConsumer, entityRESTConsumer, settingsManager);
}
@Provides
@Singleton
AziendaRESTConsumer provideAziendaRESTConsumer() {
return new AziendaRESTConsumer();
AziendaRESTConsumer provideAziendaRESTConsumer(RESTBuilder restBuilder) {
return new AziendaRESTConsumer(restBuilder);
}
@Provides
@Singleton
BarcodeRESTConsumer provideBarcodeRESTConsumer() {
return new BarcodeRESTConsumer();
ProduzioneRESTConsumer provideProduzioneRESTConsumer(RESTBuilder restBuilder) {
return new ProduzioneRESTConsumer(restBuilder);
}
@Provides
@Singleton
PrinterRESTConsumer providePrinterRESTConsumer() {
return new PrinterRESTConsumer();
BarcodeRESTConsumer provideBarcodeRESTConsumer(Ean128Service ean128Service) {
return new BarcodeRESTConsumer(ean128Service);
}
@Provides
@Singleton
SystemRESTConsumer provideSystemRESTConsumer() {
return new SystemRESTConsumer();
PrinterRESTConsumer providePrinterRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new PrinterRESTConsumer(executorService, restBuilder);
}
@Provides
@Singleton
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new PVOrdiniAcquistoRESTConsumer(magazzinoRESTConsumer);
SystemRESTConsumer provideSystemRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new SystemRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new PosizioniRESTConsumer(systemRESTConsumer);
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new PVOrdiniAcquistoRESTConsumer(restBuilder, magazzinoRESTConsumer);
}
@Provides
@Singleton
ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new ProdFabbisognoLineeProdRESTConsumer(systemRESTConsumer);
PosizioniRESTConsumer providesPosizioniRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer, ExecutorService executorService) {
return new PosizioniRESTConsumer(restBuilder, systemRESTConsumer, executorService);
}
@Provides
@Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DocInterniRESTConsumer(magazzinoRESTConsumer);
DocInterniRESTConsumer provideDocInterniRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DocInterniRESTConsumer(restBuilder, magazzinoRESTConsumer);
}
@Provides
@Singleton
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer);
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(restBuilder, executorService, articoloRESTConsumer);
}
@Provides
@Singleton
GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder) {
return new GiacenzaPvRESTConsumer(restBuilder);
}
@Provides
@Singleton
ImballiRESTConsumer provideImballiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new ImballiRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
VettoriRESTConsumer provideVettoriRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new VettoriRESTConsumer(restBuilder, executorService);
}
@Provides
@@ -251,44 +300,58 @@ public class MainApplicationModule {
@Provides
@Singleton
ProductionLinesRESTConsumer provideProductionLinesRESTConsumer() {
return new ProductionLinesRESTConsumer();
ProductionLinesRESTConsumer provideProductionLinesRESTConsumer(RESTBuilder restBuilder) {
return new ProductionLinesRESTConsumer(restBuilder);
}
@Provides
@Singleton
DocumentRESTConsumer provideDocumentiRESTConsumer() {
return new DocumentRESTConsumer();
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new DocumentRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer() {
return new ColliAccettazioneRESTConsumer();
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new ColliAccettazioneRESTConsumer(executorService, restBuilder);
}
@Provides
@Singleton
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer() {
return new ColliSpedizioneRESTConsumer();
ColliSpedizioneRESTConsumer provideColliSpedizioneRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new ColliSpedizioneRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(SettingsManager settingsManager) {
return new ColliLavorazioneRESTConsumer(settingsManager);
ColliLavorazioneRESTConsumer provideColliLavorazioneRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService, SettingsManager settingsManager) {
return new ColliLavorazioneRESTConsumer(restBuilder, executorService, settingsManager);
}
@Provides
@Singleton
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer() {
return new MagazzinoAutomaticoRESTConsumer();
MagazzinoAutomaticoRESTConsumer provideMagazzinoAutomaticoRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new MagazzinoAutomaticoRESTConsumer(executorService, restBuilder);
}
@Provides
@Singleton
MagazzinoBufferRESTConsumer provideMagazzinoBufferRESTConsumer() {
return new MagazzinoBufferRESTConsumer();
MagazzinoBufferRESTConsumer provideMagazzinoBufferRESTConsumer(RESTBuilder restBuilder) {
return new MagazzinoBufferRESTConsumer(restBuilder);
}
@Provides
@Singleton
MaterialiRESTConsumer provideMaterialiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new MaterialiRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
SoundAlertService provideSoundAlertService() {
SoundAlertService soundAlertService = new SoundAlertService(mApplication.getApplicationContext());
soundAlertService.init();
return soundAlertService;
}
}

View File

@@ -4,15 +4,19 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.SpannableString;
import android.text.Spanned;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import javax.inject.Inject;
@@ -26,6 +30,7 @@ import it.integry.integrywmsnative.databinding.ActivitySplashBinding;
import it.integry.integrywmsnative.gest.login.LoginActivity;
import it.integry.integrywmsnative.gest.main.MainActivity;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.device_end_of_life.DialogDeviceEndOfLifeView;
public class SplashActivity extends BaseActivity implements MainContext.Listener {
@@ -37,6 +42,9 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
@Inject
MainContext mainContext;
@Inject
Handler handler;
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
public static void startActivity(Context context) {
@@ -61,9 +69,24 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
UtilityContext.initMainActivity(this);
LocalDate endSupportDate = LocalDate.of(2026, 1, 31);
boolean isOldAndroid = Build.VERSION.SDK_INT < Build.VERSION_CODES.O;
executorService.execute(() -> {
if (isOldAndroid)
showDeviceEndOfLifeMessage();
handler.post(() -> {
if (LocalDate.now().isBefore(endSupportDate) || !isOldAndroid) {
initAppVersion();
initPermissions(this::init);
} else {
this.finish();
}
});
});
}
private void initAppVersion() {
@@ -101,14 +124,29 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
}
}
private void showDeviceEndOfLifeMessage() {
CountDownLatch latch = new CountDownLatch(1);
DialogDeviceEndOfLifeView.newInstance(latch::countDown)
.show(this.getSupportFragmentManager(), "dialog_device_end_of_life");
try {
latch.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
@Override
public void onDBDataLoading(String item) {
mBinding.loadingInfoTextview.setText("Caricamento " + item);
handler.post(() -> mBinding.loadingInfoTextview.setText("Caricamento " + item));
}
@Override
public void onMenuLoading() {
mBinding.loadingInfoTextview.setText("Caricamento menù");
handler.post(() -> mBinding.loadingInfoTextview.setText("Caricamento menù"));
}
@Override
@@ -151,11 +189,13 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
@Override
public void onError(Spanned message) {
DialogSimpleMessageView.makeErrorDialog(
handler.post(() -> {
DialogSimpleMessageView.makeErrorDialog(this,
message, null, this::finish, R.string.logout, () -> {
this.mainContext.logout(MainApplication::exit);
})
.show(this.getSupportFragmentManager(), "tag");
.show();
});
}
}

View File

@@ -24,19 +24,4 @@ public class CommonConst {
public static String RECOVER_COLLO_FILE = "recover_ul.json";
}
public static class Mail {
public static String[] forErrorsDebug = {
"g.scorrano@integry.it",
"v.castellana@integry.it"
};
public static String[] forErrors = {
// "syslogs@integry.it",
"g.scorrano@integry.it",
"v.castellana@integry.it"
};
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.integrywmsnative.core.authentication;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
public class JwtUtils {
private final static String SIGNING_KEY = "gICy3bjD56i/YFnBZZKe5ibiz3Snsp08nybGGziCV4ZcvyXBbyqWUnJ2wTrRXhOuf/xdljPXX0yBaqdAgvKthQ==";
public static Claims parseJwt(String token) {
Jws<Claims> jws = Jwts.parser()
.verifyWith(Keys.hmacShaKeyFor(Decoders.BASE64.decode(SIGNING_KEY)))
.build()
.parseSignedClaims(token);
return jws.getPayload();
}
}

View File

@@ -7,6 +7,7 @@ public class BarcodeCallbackDTO {
private int ID = -1;
private boolean enabled = true;
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull;
private RunnableArgs<Exception> onScanFailed;
@@ -19,6 +20,15 @@ public class BarcodeCallbackDTO {
return this;
}
public boolean isEnabled() {
return enabled;
}
public BarcodeCallbackDTO setEnabled(boolean enabled) {
this.enabled = enabled;
return this;
}
public RunnableArgs<BarcodeScanDTO> getOnScanSuccessfull() {
return onScanSuccessfull;
}

View File

@@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.barcode_reader;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import android.util.Pair;
import android.view.KeyEvent;
@@ -24,10 +25,15 @@ public class BarcodeManager {
private static BarcodeReaderInterface mCurrentBarcodeInterface;
private static final List<BarcodeCallbackDTO> mBarcodeCallbacksStacktrace = new ArrayList<>();
private static boolean mEnabled = true;
// 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 {
@@ -56,12 +62,12 @@ public class BarcodeManager {
mCurrentBarcodeInterface.register(data -> {
BarcodeCallbackDTO callback = getValidCallback();
if (callback != null && mEnabled) {
if (callback != null && callback.isEnabled()) {
callback.getOnScanSuccessfull().run(data);
}
}, ex -> {
BarcodeCallbackDTO callback = getValidCallback();
if (callback != null && mEnabled) {
if (callback != null && callback.isEnabled()) {
callback.getOnScanFailed().run(ex);
}
});
@@ -85,7 +91,7 @@ public class BarcodeManager {
private static BarcodeCallbackDTO getValidCallback() {
if (mBarcodeCallbacksStacktrace.size() > 0) {
if (!mBarcodeCallbacksStacktrace.isEmpty()) {
return mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1);
} else {
return null;
@@ -103,10 +109,9 @@ public class BarcodeManager {
}
public static int addCallback(BarcodeCallbackDTO barcodeCallbackDTO) {
int newID = -1;
if (mBarcodeCallbacksStacktrace.size() > 0) {
if (!mBarcodeCallbacksStacktrace.isEmpty()) {
newID = mBarcodeCallbacksStacktrace.get(mBarcodeCallbacksStacktrace.size() - 1).getID() + 1;
} else {
newID = 1;
@@ -133,18 +138,48 @@ public class BarcodeManager {
}
public static void disable() {
mEnabled = false;
// UtilityLogger.info("Barcode reader disabled");
public static void disable(int instanceId) {
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
.findFirst().ifPresent(x -> {
x.setEnabled(false);
Log.d("BarcodeManager", "Disabled callback " + x.getID() + ": " + x.getOnScanSuccessfull());
});
}
public static void enable() {
mEnabled = true;
// UtilityLogger.info("Barcode reader enabled");
public static void disableLastCallback() {
BarcodeCallbackDTO validCallback = getValidCallback();
if (validCallback != null) {
validCallback.setEnabled(false);
// Log.d("BarcodeManager", "Last callback disabled: " + validCallback.getOnScanSuccessfull());
}
}
public static boolean isEnabled() {
return mEnabled;
public static void enable(int instanceId) {
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
.findFirst()
.ifPresent(x -> {
x.setEnabled(true);
// Log.d("BarcodeManager", "Enabled callback " + x.getID() + ": " + x.getOnScanSuccessfull());
});
}
public static void enableLastCallback() {
BarcodeCallbackDTO validCallback = getValidCallback();
if (validCallback != null) {
validCallback.setEnabled(true);
Log.d("BarcodeManager", "Last callback enabled: " + validCallback.getOnScanSuccessfull());
}
}
public static boolean isEnabled(int instanceId) {
return mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
.findFirst()
.map(BarcodeCallbackDTO::isEnabled)
.orElse(false);
}
public static boolean isLastCallbackEnabled() {
return getValidCallback() != null && getValidCallback().isEnabled();
}
public static void changeSettings(List<Pair<String, Object>> settings) {

View File

@@ -0,0 +1,5 @@
package it.integry.integrywmsnative.core.base;
public interface Callable<I, O> {
O call(I input);
}

View File

@@ -0,0 +1,5 @@
package it.integry.integrywmsnative.core.base;
public interface CallableII<I, L, O> {
O call(I input, L input2);
}

View File

@@ -2,8 +2,10 @@ package it.integry.integrywmsnative.core.class_router.configs;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.accettazione_bolla_elenco.MainAccettazioneBollaElencoFragment;
import it.integry.integrywmsnative.gest.accettazione_ordini_elenco.MainAccettazioneOrdiniElencoFragment;
import it.integry.integrywmsnative.gest.articoli_in_giacenza.ArticoliInGiacenzaFragment;
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;
@@ -13,11 +15,14 @@ import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.ProdFabbisogn
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_riposizionamento_da_prod.ProdRiposizionamentoDaProdFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment;
import it.integry.integrywmsnative.gest.prod_versamento_materiale_su_mag_prossimita.ProdVersamentoMaterialeInBufferFragment;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.pv_verifica_giacenze.VerificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.info_situazione_articolo.DialogInfoSituazioneArticoloView;
import it.integry.integrywmsnative.gest.trasferimento_pedane.TrasferimentoPedaneFragment;
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;
@@ -85,7 +90,8 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleText(R.string.free_picking)
.setTitleIcon(R.drawable.ic_dashboard_picking_libero)
.setDrawerIcon(R.drawable.ic_black_barcode_scanner)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(GestioneEnum.VENDITA)))
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_picking, GestioneEnum.VENDITA,
SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, false)))
.addItem(new MenuItem()
.setID(R.id.nav_resi_cliente)
@@ -113,7 +119,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.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)))
.setFragmentFactory(() -> OrdiniUscitaElencoFragment.newInstance(GestioneEnum.PRODUZIONE, GestioneEnum.LAVORAZIONE, -1, SettingsManager.iDB().isFlagProduzioneShowInfo() ? DialogInfoSituazioneArticoloView.class : null)))
.addItem(new MenuItem()
.setID(R.id.nav_free_lav_picking)
@@ -121,7 +127,8 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.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.LAVORAZIONE)))
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.free_lav_picking, GestioneEnum.LAVORAZIONE,
SettingsManager.iDB().isFlagAskClienteInPickingLibero(), false, SettingsManager.iDB().isFlagAskCommessaInPickingLiberoLav())))
.addItem(new MenuItem()
.setID(R.id.nav_prod_posizionamento_da_ord)
@@ -170,6 +177,22 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_materiale)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(ProdVersamentoMaterialeInBufferFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_prod_versamento_su_ordine)
.setCodMenu("MG068")
.setTitleText(R.string.prod_versamento_su_ordine_title_fragment)
.setTitleIcon(R.drawable.ic_dashboard_prod_versamento_su_ord)
.setDrawerIcon(R.drawable.ic_black_external)
.setFragmentFactory(() -> PickingLiberoFragment.newInstance(R.string.prod_versamento_su_ordine_title_fragment, GestioneEnum.LAVORAZIONE, false, true, false)))
.addItem(new MenuItem()
.setID(R.id.nav_prod_riposizionamento_da_ord)
.setCodMenu("MG069")
.setTitleText(R.string.prod_riposizionamento_da_prod_title)
.setTitleIcon(R.drawable.ic_production_line_produzione)
.setDrawerIcon(R.drawable.ic_black_load_shelf)
.setFragmentFactory(ProdRiposizionamentoDaProdFragment::newInstance))
).addGroup(
new MenuGroup()
.setGroupText(R.string.internal_handling)
@@ -200,6 +223,21 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(ElencoInventariFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_articoli_in_giacenza)
.setCodMenu("MG070")
.setTitleText(R.string.articoli_in_giacenza_title)
.setTitleIcon(R.drawable.ic_dashboard_articoli_in_giacenza)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(ArticoliInGiacenzaFragment::newInstance))
.addItem(new MenuItem()
.setID(R.id.nav_trasferimento_pedane)
.setCodMenu("MG076")
.setTitleText(R.string.trasferimento_pedane_title)
.setTitleIcon(R.drawable.ic_dashboard_trasferimento_pedane)
.setDrawerIcon(R.drawable.ic_black_empty_box)
.setFragmentFactory(TrasferimentoPedaneFragment::newInstance))
).addGroup(
new MenuGroup()
@@ -214,6 +252,7 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentFactory(PVOrdiniAcquistoGrigliaFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG058")
.setID(it.integry.integrywmsnative.R.id.nav_pv_doc_interni)
@@ -222,6 +261,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.setDrawerIcon(R.drawable.ic_documents_outline)
.setFragmentFactory(DocInterniFragment::newInstance))
.addItem(new MenuItem()
.setCodMenu("MG075")
.setID(it.integry.integrywmsnative.R.id.nav_pv_verifica_giacenze)
.setTitleText(R.string.verifica_giacenze_menu)
.setTitleIcon(R.drawable.ic_dashboard_verifica_giacenze)
.setDrawerIcon(R.drawable.ic_drawer_verifica_giacenze)
.setFragmentFactory(VerificaGiacenzeFragment::newInstance))
// .addItem(new MenuItem()
// .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
// .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders)

View File

@@ -89,11 +89,25 @@ 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));
File dataDir = mApplicationContext.getExternalFilesDir(null);
logsFolder = new File(dataDir, "logs");
if (!logsFolder.exists())
logsFolder.mkdirs();
//Temporary clean
File[] wrongFilesToBeDeleted = dataDir.listFiles((file, s) -> s.startsWith("logs_"));
if (wrongFilesToBeDeleted != null)
for (File fileToDelete : wrongFilesToBeDeleted) {
fileToDelete.delete();
}
removeOldLogs(logsFolder);
int maxBytesSize = 5 * 1024 * 1024;
Logger.addLogAdapter(new DiskLogAdapter(logsFolder, maxBytesSize));
}
private void removeOldLogs(File logsFolder) {

View File

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.context;
import android.content.Context;
import android.os.Handler;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
@@ -9,16 +10,16 @@ import android.text.SpannedString;
import com.google.firebase.installations.FirebaseInstallations;
import java.net.ConnectException;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityThread;
import it.integry.integrywmsnative.gest.login.rest.AuthenticationRESTConsumer;
@Singleton
public class MainContext {
@@ -26,19 +27,24 @@ public class MainContext {
private final Context applicationContext;
private final MenuService menuService;
private final AppDatabase appDatabase;
private final SystemRESTConsumer systemRESTConsumer;
private final AuthenticationRESTConsumer authenticationRESTConsumer;
private final ExecutorService executorService;
private final Handler handler;
private final ServerStatusChecker serverStatusChecker;
private Listener mListener;
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) {
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, AuthenticationRESTConsumer authenticationRESTConsumer, ExecutorService executorService, Handler handler, ServerStatusChecker serverStatusChecker) {
this.applicationContext = applicationContext;
this.menuService = menuService;
this.appDatabase = appDatabase;
this.systemRESTConsumer = systemRESTConsumer;
this.authenticationRESTConsumer = authenticationRESTConsumer;
this.executorService = executorService;
this.handler = handler;
this.serverStatusChecker = serverStatusChecker;
}
public void init() {
try {
BarcodeManager.init(applicationContext);
} catch (Exception exception) {
@@ -46,20 +52,39 @@ public class MainContext {
}
this.initDeviceId(() -> {
this.initDBData(() -> {
this.initMenu(() -> {
executorService.execute(() -> {
try {
this.initDBData();
this.initMenu();
serverStatusChecker.init();
if (mListener != null) mListener.onContextInitialized();
});
});
});
} catch (Exception ex) {
Spanned message = null;
this.initServerStatusChecker();
if (ex.getCause() != null && ex.getCause() instanceof ConnectException) {
message = Html.fromHtml("Impossibile collegarsi all'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
} else if (ex.getMessage().startsWith("Status 404:")) {
message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
} else {
message = new SpannableString(ex.getMessage());
}
if (mListener != null) mListener.onError(message);
}
});
}
private void initAuthSession(Runnable onComplete) {
this.authenticationRESTConsumer.me(obj -> {
onComplete.run();
}, ex -> {
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
});
}
private void initDeviceId(Runnable onComplete) {
if (SettingsManager.i().getUserSession().getDeviceId() != null) {
@@ -72,61 +97,39 @@ public class MainContext {
SettingsManager.i().getUserSession().setDeviceId(fid.getResult());
SettingsManager.update();
systemRESTConsumer.registerDevice(onComplete, ex -> {
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
});
// systemRESTConsumer.registerDevice(onComplete, ex -> {
// if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
// });
});
}
public void logout(Runnable onLoggedOut) {
menuService.invalidateCache();
UtilityThread.executeParallel(() -> {
executorService.execute(() -> {
SettingsManager.i().setUser(null);
SettingsManager.i().setUserSession(null);
SettingsManager.update();
appDatabase.clearAllTables();
handler.post(() -> {
onLoggedOut.run();
}, true);
});
});
}
private void initServerStatusChecker() {
ServerStatusChecker.init();
}
private void initDBData(Runnable onComplete) {
private void initDBData() throws Exception {
SettingsManager.loadDBVariables(item -> {
if (mListener != null) mListener.onDBDataLoading(item);
},
onComplete,
ex -> {
Spanned message = null;
if (ex.getCause() != null && ex.getCause() instanceof ConnectException) {
message = Html.fromHtml("Impossibile collegarsi all'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
} else if (ex.getMessage().startsWith("Status 404:")) {
message = Html.fromHtml("Errore 404. Non è stato possibile soddisfare la richiesta sull'host <b>" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "</b>. Riprovare più tardi.");
} else {
message = new SpannableString(ex.getMessage());
}
if (mListener != null) mListener.onError(message);
}
);
}
private void initMenu(Runnable onComplete) {
if (mListener != null) mListener.onMenuLoading();
this.menuService.init(onComplete, ex -> {
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
});
}
private void initMenu() throws Exception {
if (mListener != null) mListener.onMenuLoading();
this.menuService.init();
}
public MainContext setListener(Listener listener) {
this.mListener = listener;

View File

@@ -30,7 +30,7 @@ public class DataCache {
Object foundDataCache = null;
if(dataCacheTemp != null && dataCacheTemp.size() > 0) {
if(dataCacheTemp != null && !dataCacheTemp.isEmpty()) {
foundDataCache = dataCacheTemp.get(0).getItem();
dataCacheList.remove(dataCacheTemp.get(0));
}

View File

@@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.data_recover;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDate;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColt;
@@ -7,13 +10,26 @@ import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public class ColliDataRecoverDTO {
@SerializedName("id")
private int id;
@SerializedName("numCollo")
private int numCollo;
@SerializedName("serCollo")
private String serCollo;
private String dataCollo;
@SerializedName("dataCollo")
private LocalDate dataCollo;
@SerializedName("gestioneCollo")
private String gestioneCollo;
@SerializedName("filtro")
private String filtro;
@SerializedName("testateOrdini")
private List<OrdineUscitaInevasoDTO> testateOrdini;
public int getId() {
@@ -43,11 +59,11 @@ public class ColliDataRecoverDTO {
return this;
}
public String getDataCollo() {
public LocalDate getDataCollo() {
return dataCollo;
}
public ColliDataRecoverDTO setDataCollo(String dataCollo) {
public ColliDataRecoverDTO setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}

View File

@@ -2,7 +2,6 @@ package it.integry.integrywmsnative.core.data_recover;
import android.content.Context;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.android.gms.common.util.IOUtils;
import com.google.gson.Gson;
@@ -14,6 +13,7 @@ import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import javax.inject.Inject;
@@ -22,6 +22,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.utility.UtilityGson;
@Singleton
public class ColliDataRecoverService {
@@ -45,7 +46,7 @@ public class ColliDataRecoverService {
}
public boolean thereIsAnExistantSession() {
return mtbColtsSessions != null && mtbColtsSessions.size() > 0;
return mtbColtsSessions != null && !mtbColtsSessions.isEmpty();
}
public List<Integer> getAllSessionIDs() {
@@ -64,9 +65,9 @@ public class ColliDataRecoverService {
}
private ColliDataRecoverDTO getIfExists(int id) {
Optional<ColliDataRecoverDTO> recoverDTOOptional = Stream.of(mtbColtsSessions)
Optional<ColliDataRecoverDTO> recoverDTOOptional = mtbColtsSessions.stream()
.filter(x -> x.getId() == id)
.findSingle();
.findFirst();
return recoverDTOOptional.isPresent() ? recoverDTOOptional.get() : null;
@@ -84,7 +85,7 @@ public class ColliDataRecoverService {
ColliDataRecoverDTO recoverDTO = new ColliDataRecoverDTO()
.setId(newId)
.setDataCollo(mtbColtSession.getDataColloS())
.setDataCollo(mtbColtSession.getDataColloLD())
.setNumCollo(mtbColtSession.getNumCollo())
.setSerCollo(mtbColtSession.getSerCollo())
.setGestioneCollo(mtbColtSession.getGestione())
@@ -108,7 +109,7 @@ public class ColliDataRecoverService {
private void loadLocalFile() {
InputStream inputStream;
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
try {
inputStream = mApplicationContext.openFileInput(CommonConst.Files.RECOVER_COLLO_FILE);
@@ -130,7 +131,7 @@ public class ColliDataRecoverService {
private void updateLocalFile() {
FileOutputStream outputStream;
Gson gson = new Gson();
Gson gson = UtilityGson.createObject();
String jsonText = gson.toJson(mtbColtsSessions);
try {

View File

@@ -22,14 +22,22 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
@Database(entities = {
ArticoloGriglia.class,
@@ -38,10 +46,14 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
ArticoloOrdine.class,
SqlMtbColt.class,
SqlMtbColr.class,
InventarioRoomDTO.class,
InventarioRowRoomDTO.class
InventarioEntity.class,
InventarioRowRoomDTO.class,
VerificaGiacenzeEntity.class,
VerificaGiacenzeRowEntity.class,
TrasferimentoPedaneEntity.class,
TrasferimentoPedaneRowEntity.class
},
version = 17)
version = 21)
@TypeConverters({
DateConverter.class,
BigDecimalConverter.class,
@@ -70,7 +82,11 @@ public abstract class AppDatabase extends RoomDatabase {
.addMigrations(MIGRATION_13_14)
.addMigrations(MIGRATION_14_15)
.addMigrations(MIGRATION_15_16)
.addMigrations(MIGRATION_16_17);
.addMigrations(MIGRATION_16_17)
.addMigrations(MIGRATION_17_18)
.addMigrations(MIGRATION_18_19)
.addMigrations(MIGRATION_19_20)
.addMigrations(MIGRATION_20_21);
sInstance = builder.build();
}
@@ -95,6 +111,14 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract InventarioRowDao inventarioRowDao();
public abstract VerificaGiacenzeDao verificaGiacenzeDao();
public abstract VerificaGiacenzeRowDao verificaGiacenzeRowDao();
public abstract TrasferimentoPedaneDao trasferimentoPedaneDao();
public abstract TrasferimentoPedaneRowDao trasferimentoPedaneRowDao();
static final Migration MIGRATION_10_11 = new Migration(10, 11) {
@@ -161,11 +185,13 @@ public abstract class AppDatabase extends RoomDatabase {
database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_articoli_ordine_id_ordine_cod_mart ON articoli_ordine (id_ordine, cod_mart);");
}
};
static final Migration MIGRATION_15_16 = new Migration(15, 16) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
}
};
static final Migration MIGRATION_16_17 = new Migration(16, 17) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
@@ -182,4 +208,93 @@ public abstract class AppDatabase extends RoomDatabase {
database.execSQL("DROP TABLE _inventario_rows_old;");
}
};
static final Migration MIGRATION_17_18 = new Migration(17, 18) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS verifica_giacenze (_id INTEGER PRIMARY KEY AUTOINCREMENT, cod_mdep TEXT NOT NULL, data INTEGER, remote_sync_date INTEGER);");
database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze__id ON verifica_giacenze (_id);");
database.execSQL("CREATE TABLE IF NOT EXISTS verifica_giacenze_rows (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"parent_id INTEGER, " +
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
"cod_mart TEXT, " +
"partita_mag TEXT, " +
"descrizione TEXT, " +
"qta_in_giacenza REAL NOT NULL DEFAULT 0, " +
"qta REAL NOT NULL DEFAULT 0, " +
"num_cnf REAL NOT NULL DEFAULT 0, " +
"qta_cnf REAL NOT NULL DEFAULT 0, " +
"scan_cod_barre TEXT, " +
"remote_sync_date INTEGER, " +
"FOREIGN KEY(parent_id) REFERENCES verifica_giacenze(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze_rows__id ON verifica_giacenze_rows (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_verifica_giacenze_rows_parent_id ON verifica_giacenze_rows (parent_id)");
}
};
static final Migration MIGRATION_18_19 = new Migration(18, 19) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane (" +
"cod_mdep_dest TEXT NOT NULL, " +
"descrizione_depo_dest TEXT NOT NULL, " +
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
"status INTEGER NOT NULL, " +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"remote_sync_date INTEGER);");
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane__id ON trasferimento_pedane (_id);");
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane_rows (" +
"parent_id INTEGER, " +
"barcode_ul TEXT NOT NUll, " +
"progressivo_ul INTEGER, " +
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
"flag_inconsistent INTEGER NOT NULL DEFAULT 0, " +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"remote_sync_date INTEGER," +
"FOREIGN KEY(parent_id) REFERENCES trasferimento_pedane(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows__id ON trasferimento_pedane_rows (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows_parent_id ON trasferimento_pedane_rows (parent_id)");
}
};
static final Migration MIGRATION_19_20 = new Migration(19, 20) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("DROP TABLE IF EXISTS trasferimento_pedane_rows;");
database.execSQL("CREATE TABLE IF NOT EXISTS trasferimento_pedane_rows (" +
"parent_id INTEGER NOT NULL, " +
"barcode_ul TEXT NOT NULL, " +
"progressivo_ul INTEGER NOT NULL, " +
"flag_inconsistent INTEGER NOT NULL DEFAULT 0, " +
"created_at INTEGER DEFAULT CURRENT_TIMESTAMP, " +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"remote_sync_date INTEGER, " +
"FOREIGN KEY(parent_id) REFERENCES trasferimento_pedane(_id) ON UPDATE NO ACTION ON DELETE CASCADE );");
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows__id ON trasferimento_pedane_rows (_id)");
database.execSQL("CREATE INDEX IF NOT EXISTS index_trasferimento_pedane_rows_parent_id ON trasferimento_pedane_rows (parent_id)");
}
};
static final Migration MIGRATION_20_21 = new Migration(20, 21) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE trasferimento_pedane"
+ " ADD COLUMN document_cod_anag TEXT;");
database.execSQL("ALTER TABLE trasferimento_pedane"
+ " ADD COLUMN document_cod_dtip TEXT");
database.execSQL("ALTER TABLE trasferimento_pedane"
+ " ADD COLUMN document_num INTEGER");
database.execSQL("ALTER TABLE trasferimento_pedane"
+ " ADD COLUMN document_ser TEXT");
database.execSQL("ALTER TABLE trasferimento_pedane"
+ " ADD COLUMN document_data INTEGER");
}
};
}

View File

@@ -18,6 +18,10 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
@@ -32,10 +36,17 @@ import it.integry.integrywmsnative.core.data_store.db.repository.datasource.SqlM
import it.integry.integrywmsnative.core.data_store.db.repository.datasource.SqlMtbColtDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.InventarioRowRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.VerificaGiacenzeRowRepository;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioRowLocalDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeLocalDataSource;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeRowLocalDataSource;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
import it.integry.integrywmsnative.core.mapper.InventarioRowMapper;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
@Module
@@ -108,6 +119,11 @@ public class RoomModule {
return appDatabase.inventarioRowDao();
}
@Singleton
@Provides
InventarioMapper providesInventarioMapper(InventarioRowMapper inventarioRowMapper) {
return new InventarioMapper(inventarioRowMapper);
}
@Singleton
@Provides
@@ -117,8 +133,38 @@ public class RoomModule {
@Singleton
@Provides
InventarioMapper providesInventarioMapper(InventarioRowMapper inventarioRowMapper) {
return new InventarioMapper(inventarioRowMapper);
VerificaGiacenzeDao providesVerificaGiacenzeDao(AppDatabase appDatabase) {
return appDatabase.verificaGiacenzeDao();
}
@Singleton
@Provides
VerificaGiacenzeRowDao providesVerificaGiacenzeRowDao(AppDatabase appDatabase) {
return appDatabase.verificaGiacenzeRowDao();
}
@Singleton
@Provides
TrasferimentoPedaneDao providesTrasferimentoPedaneDao(AppDatabase appDatabase) {
return appDatabase.trasferimentoPedaneDao();
}
@Singleton
@Provides
TrasferimentoPedaneRowDao providesTrasferimentoPedaneRowDao(AppDatabase appDatabase) {
return appDatabase.trasferimentoPedaneRowDao();
}
@Singleton
@Provides
VerificaGiacenzeMapper providesVerificaGiacenzeMapper(VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
return new VerificaGiacenzeMapper(verificaGiacenzeRowMapper);
}
@Singleton
@Provides
VerificaGiacenzeRowMapper providesVerificaGiacenzeRowMapper() {
return new VerificaGiacenzeRowMapper();
}
@@ -182,4 +228,20 @@ public class RoomModule {
return new InventarioRowRepository(inventarioRowLocalDataSource, inventarioRESTConsumer, inventarioRowMapper, handler);
}
@Provides
VerificaGiacenzeRepository providesVerificaGiacenzeRepository(ExecutorService executorService, Handler handler,
VerificaGiacenzeLocalDataSource verificaGiacenzeLocalDataSource,
GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
VerificaGiacenzeMapper verificaGiacenzeMapper) {
return new VerificaGiacenzeRepository(verificaGiacenzeLocalDataSource, giacenzaPvRESTConsumer, verificaGiacenzeMapper, handler, executorService);
}
@Provides
VerificaGiacenzeRowRepository providesVerificaGiacenzeRowRepository(ExecutorService executorService, Handler handler,
VerificaGiacenzeRowLocalDataSource verificaGiacenzeRowLocalDataSource,
GiacenzaPvRESTConsumer giacenzaPvRESTConsumer,
VerificaGiacenzeRowMapper verificaGiacenzeRowMapper) {
return new VerificaGiacenzeRowRepository(verificaGiacenzeRowLocalDataSource, giacenzaPvRESTConsumer, verificaGiacenzeRowMapper, handler, executorService);
}
}

View File

@@ -7,21 +7,21 @@ import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
public interface InventarioDao extends EntityDaoInterface<InventarioRoomDTO> {
public interface InventarioDao extends EntityDaoInterface<InventarioEntity> {
@Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
@Query("SELECT * FROM " + InventarioEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
List<InventarioRoomDTO> selectAll(boolean toBeSync);
List<InventarioEntity> selectAll(boolean toBeSync);
@Query("SELECT * FROM " + InventarioRoomDTO.TABLE_NAME +
@Query("SELECT * FROM " + InventarioEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + InventarioRoomDTO.Columns.DATA_INVENTARIO + " DESC")
Flowable<List<InventarioRoomDTO>> selectAllFlowable(boolean toBeSync);
" ORDER BY " + InventarioEntity.Columns.DATA_INVENTARIO + " DESC")
Flowable<List<InventarioEntity>> selectAllFlowable(boolean toBeSync);
}

View File

@@ -0,0 +1,39 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Query;
import androidx.room.Transaction;
import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
import it.integry.integrywmsnative.core.data_store.db.wrappers.TrasferimentoPedaneWithRowsWrapper;
@Dao
public interface TrasferimentoPedaneDao extends EntityDaoInterface<TrasferimentoPedaneEntity> {
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
" WHERE " + BaseSyncDTO.Columns.ID + " = :id")
TrasferimentoPedaneWithRowsWrapper select(long id);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
" WHERE " + BaseSyncDTO.Columns.ID + " = :id")
Flowable<TrasferimentoPedaneWithRowsWrapper> selectFlowable(long id);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + TrasferimentoPedaneEntity.Columns.CREATED_AT + " DESC")
List<TrasferimentoPedaneWithRowsWrapper> selectAll(boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + TrasferimentoPedaneEntity.Columns.CREATED_AT + " DESC")
Flowable<List<TrasferimentoPedaneWithRowsWrapper>> selectAllFlowable(boolean toBeSync);
}

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Query;
import androidx.room.Transaction;
import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
public interface TrasferimentoPedaneRowDao extends EntityDaoInterface<TrasferimentoPedaneRowEntity> {
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
List<TrasferimentoPedaneRowEntity> selectAll(boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
Flowable<List<TrasferimentoPedaneRowEntity>> selectAllFlowable(boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" AND " + TrasferimentoPedaneRowEntity.Columns.PARENT_ID + " = :trasferimentoId " +
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
List<TrasferimentoPedaneRowEntity> selectAll(long trasferimentoId, boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + TrasferimentoPedaneRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" AND " + TrasferimentoPedaneRowEntity.Columns.PARENT_ID + " = :trasferimentoId " +
" ORDER BY " + TrasferimentoPedaneRowEntity.Columns.CREATED_AT + " DESC")
Flowable<List<TrasferimentoPedaneRowEntity>> selectAllFlowable(long trasferimentoId, boolean toBeSync);
}

View File

@@ -0,0 +1,42 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Query;
import androidx.room.Transaction;
import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
import it.integry.integrywmsnative.core.data_store.db.wrappers.VerificaGiacenzeWithRowsWrapper;
@Dao
public interface VerificaGiacenzeDao extends EntityDaoInterface<VerificaGiacenzeEntity> {
@Transaction
@Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
List<VerificaGiacenzeWithRowsWrapper> selectAll(boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + VerificaGiacenzeEntity.Columns.DATA + " DESC")
Flowable<List<VerificaGiacenzeWithRowsWrapper>> selectAllFlowable(boolean toBeSync);
@Transaction
@Query("SELECT * FROM " + VerificaGiacenzeEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))" +
" ORDER BY " + VerificaGiacenzeEntity.Columns.DATA + " DESC" +
" LIMIT 1")
VerificaGiacenzeWithRowsWrapper selectLast(boolean toBeSync);
@Query("SELECT COALESCE(strftime('%s', 'now') - MAX(" + VerificaGiacenzeRowEntity.Columns.CREATED_AT + ") < :maxMinutes * 60, 0) as any_verifica_to_be_recovered" +
" FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
" WHERE (" + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL)")
boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes);
}

View File

@@ -0,0 +1,25 @@
package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao;
import androidx.room.Query;
import java.util.List;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityDaoInterface;
@Dao
public interface VerificaGiacenzeRowDao extends EntityDaoInterface<VerificaGiacenzeRowEntity> {
@Query("SELECT * FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
List<VerificaGiacenzeRowEntity> selectAll(boolean toBeSync);
@Query("SELECT * FROM " + VerificaGiacenzeRowEntity.TABLE_NAME +
" WHERE ((:toBeSync = 1 AND " + BaseSyncDTO.Columns.COLUMN_REMOTE_SYNC_DATE + " IS NULL) OR (:toBeSync = 0))")
Flowable<List<VerificaGiacenzeRowEntity>> selectAllFlowable(boolean toBeSync);
}

View File

@@ -5,7 +5,7 @@ import android.provider.BaseColumns;
import androidx.room.ColumnInfo;
import androidx.room.PrimaryKey;
import java.util.Date;
import java.time.LocalDateTime;
public abstract class BaseSyncDTO extends BaseRoomDTO {
@@ -21,7 +21,7 @@ public abstract class BaseSyncDTO extends BaseRoomDTO {
private Long id;
@ColumnInfo(name = Columns.COLUMN_REMOTE_SYNC_DATE)
private Date remoteSyncDate;
private LocalDateTime remoteSyncDate;
public Long getId() {
return id;
@@ -31,11 +31,11 @@ public abstract class BaseSyncDTO extends BaseRoomDTO {
this.id = id;
}
public Date getRemoteSyncDate() {
public LocalDateTime getRemoteSyncDate() {
return remoteSyncDate;
}
public void setRemoteSyncDate(Date remoteSyncDate) {
public void setRemoteSyncDate(LocalDateTime remoteSyncDate) {
this.remoteSyncDate = remoteSyncDate;
}

View File

@@ -12,8 +12,8 @@ import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(tableName = InventarioRoomDTO.TABLE_NAME)
public class InventarioRoomDTO extends BaseSyncDTO implements EntityModelInterface {
@Entity(tableName = InventarioEntity.TABLE_NAME)
public class InventarioEntity extends BaseSyncDTO implements EntityModelInterface {
public static final String TABLE_NAME = "inventari";

View File

@@ -4,7 +4,6 @@ import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.PrimaryKey;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -12,10 +11,11 @@ import java.time.LocalDateTime;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(
inheritSuperIndices = true,
tableName = InventarioRowRoomDTO.TABLE_NAME,
foreignKeys = {
@ForeignKey(
entity = InventarioRoomDTO.class,
entity = InventarioEntity.class,
parentColumns = {BaseSyncDTO.Columns.ID},
childColumns = {InventarioRowRoomDTO.Columns.PARENT_ID},
onDelete = ForeignKey.CASCADE
@@ -40,13 +40,6 @@ public class InventarioRowRoomDTO extends BaseSyncDTO implements EntityModelInte
public static final String ZONA = "zona";
}
/**
* The unique ID
*/
@PrimaryKey(autoGenerate = true)
@ColumnInfo(index = true, name = BaseSyncDTO.Columns.ID)
private Long id;
@ColumnInfo(index = true, name = Columns.PARENT_ID)
private Long parentId;

View File

@@ -0,0 +1,158 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
import it.integry.integrywmsnative.core.model.secondary.TrasferimentoPedaneStatusEnum;
@Entity(
inheritSuperIndices = true,
tableName = TrasferimentoPedaneEntity.TABLE_NAME
)
public class TrasferimentoPedaneEntity extends BaseSyncDTO implements EntityModelInterface {
public static final String TABLE_NAME = "trasferimento_pedane";
public static class Columns {
public static final String COD_MDEP_DEST = "cod_mdep_dest";
public static final String DESCRIZIONE_DEPO_DEST = "descrizione_depo_dest";
public static final String STATUS = "status";
public static final String DOCUMENT_COD_ANAG = "document_cod_anag";
public static final String DOCUMENT_COD_DTIP = "document_cod_dtip";
public static final String DOCUMENT_NUM = "document_num";
public static final String DOCUMENT_SER = "document_ser";
public static final String DOCUMENT_DATA = "document_data";
public static final String CREATED_AT = "created_at";
}
@NonNull
@ColumnInfo(name = TrasferimentoPedaneEntity.Columns.COD_MDEP_DEST)
private String codMdepDest;
@NonNull
@ColumnInfo(name = Columns.DESCRIZIONE_DEPO_DEST)
private String descrizioneDepoDest;
@NonNull
@ColumnInfo(name = Columns.STATUS)
private short status = TrasferimentoPedaneStatusEnum.APERTO.getValue();
@ColumnInfo(name = Columns.DOCUMENT_COD_ANAG)
private String documentCodAnag;
@ColumnInfo(name = Columns.DOCUMENT_COD_DTIP)
private String documentCodDtip;
@ColumnInfo(name = Columns.DOCUMENT_NUM)
private Integer documentNum;
@ColumnInfo(name = Columns.DOCUMENT_SER)
private String documentSer;
@ColumnInfo(name = Columns.DOCUMENT_DATA)
private LocalDate documentData;
@ColumnInfo(name = TrasferimentoPedaneEntity.Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
private LocalDateTime createdAt = LocalDateTime.now();
@Ignore
private List<TrasferimentoPedaneRowEntity> trasferimentoPedaneRowList;
@NonNull
public String getCodMdepDest() {
return codMdepDest;
}
public void setCodMdepDest(@NonNull String codMdepDest) {
this.codMdepDest = codMdepDest;
}
@NonNull
public String getDescrizioneDepoDest() {
return descrizioneDepoDest;
}
public void setDescrizioneDepoDest(@NonNull String descrizioneDepoDest) {
this.descrizioneDepoDest = descrizioneDepoDest;
}
public short getStatus() {
return status;
}
public void setStatus(short status) {
this.status = status;
}
public String getDocumentCodAnag() {
return documentCodAnag;
}
public void setDocumentCodAnag(String documentCodAnag) {
this.documentCodAnag = documentCodAnag;
}
public String getDocumentCodDtip() {
return documentCodDtip;
}
public void setDocumentCodDtip(String documentCodDtip) {
this.documentCodDtip = documentCodDtip;
}
public Integer getDocumentNum() {
return documentNum;
}
public void setDocumentNum(Integer documentNum) {
this.documentNum = documentNum;
}
public String getDocumentSer() {
return documentSer;
}
public void setDocumentSer(String documentSer) {
this.documentSer = documentSer;
}
public LocalDate getDocumentData() {
return documentData;
}
public void setDocumentData(LocalDate documentData) {
this.documentData = documentData;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public List<TrasferimentoPedaneRowEntity> getTrasferimentoPedaneRowList() {
return trasferimentoPedaneRowList;
}
public void setTrasferimentoPedaneRowList(List<TrasferimentoPedaneRowEntity> trasferimentoPedaneRowList) {
this.trasferimentoPedaneRowList = trasferimentoPedaneRowList;
}
@Ignore
public TrasferimentoPedaneStatusEnum getStatusEnum() {
return TrasferimentoPedaneStatusEnum.fromValue(getStatus());
}
}

View File

@@ -0,0 +1,131 @@
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.Ignore;
import java.time.LocalDateTime;
import java.util.Objects;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
import it.integry.integrywmsnative.core.model.MtbColt;
@Entity(
inheritSuperIndices = true,
tableName = TrasferimentoPedaneRowEntity.TABLE_NAME,
foreignKeys = {
@ForeignKey(
entity = TrasferimentoPedaneEntity.class,
parentColumns = {BaseSyncDTO.Columns.ID},
childColumns = {TrasferimentoPedaneRowEntity.Columns.PARENT_ID},
onDelete = ForeignKey.CASCADE
)
}
)
public class TrasferimentoPedaneRowEntity extends BaseSyncDTO implements EntityModelInterface, Cloneable {
public static final String TABLE_NAME = "trasferimento_pedane_rows";
public static class Columns {
public static final String PARENT_ID = "parent_id";
public static final String CREATED_AT = "created_at";
public static final String BARCODE_UL = "barcode_ul";
public static final String PROGRESSIVO_UL = "progressivo_ul";
public static final String FLAG_INCONSISTENT = "flag_inconsistent";
// public static final String COD_MART = "cod_mart";
// public static final String PARTITA_MAG = "partita_mag";
// public static final String DESCRIZIONE = "descrizione";
// public static final String QTA_IN_GIACENZA = "qta_in_giacenza";
// public static final String QTA = "qta";
// public static final String NUM_CNF = "num_cnf";
// public static final String QTA_CNF = "qta_cnf";
// public static final String SCAN_COD_BARRE = "scan_cod_barre";
}
@NonNull
@ColumnInfo(index = true, name = TrasferimentoPedaneRowEntity.Columns.PARENT_ID)
private Long parentId;
@NonNull
@ColumnInfo(name = Columns.BARCODE_UL)
private String barcodeUl;
@NonNull
@ColumnInfo(name = Columns.PROGRESSIVO_UL)
private int progressivoUl;
@ColumnInfo(name = Columns.FLAG_INCONSISTENT, defaultValue = "0")
private boolean flagInconsistent = false;
@ColumnInfo(name = TrasferimentoPedaneRowEntity.Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
private LocalDateTime createdAt = LocalDateTime.now();
@Ignore
private MtbColt detailMtbColt;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getBarcodeUl() {
return barcodeUl;
}
public void setBarcodeUl(String barcodeUl) {
this.barcodeUl = barcodeUl;
}
public int getProgressivoUl() {
return progressivoUl;
}
public void setProgressivoUl(int progressivoUl) {
this.progressivoUl = progressivoUl;
}
public boolean isFlagInconsistent() {
return flagInconsistent;
}
public void setFlagInconsistent(boolean flagInconsistent) {
this.flagInconsistent = flagInconsistent;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public MtbColt getDetailMtbColt() {
return detailMtbColt;
}
public void setDetailMtbColt(MtbColt detailMtbColt) {
this.detailMtbColt = detailMtbColt;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
TrasferimentoPedaneRowEntity that = (TrasferimentoPedaneRowEntity) o;
return getProgressivoUl() == that.getProgressivoUl() && isFlagInconsistent() == that.isFlagInconsistent() && Objects.equals(getParentId(), that.getParentId()) && Objects.equals(getBarcodeUl(), that.getBarcodeUl()) && Objects.equals(getCreatedAt(), that.getCreatedAt());
}
@Override
public int hashCode() {
return Objects.hash(getParentId(), getBarcodeUl(), getProgressivoUl(), isFlagInconsistent(), getCreatedAt());
}
}

View File

@@ -0,0 +1,78 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(
inheritSuperIndices = true,
tableName = VerificaGiacenzeEntity.TABLE_NAME
)
public class VerificaGiacenzeEntity extends BaseSyncDTO implements EntityModelInterface {
public static final String TABLE_NAME = "verifica_giacenze";
public static class Columns {
public static final String COD_MDEP = "cod_mdep";
public static final String DATA = "data";
}
@NonNull
@ColumnInfo(name = VerificaGiacenzeEntity.Columns.COD_MDEP)
private String codMdep;
@ColumnInfo(name = VerificaGiacenzeEntity.Columns.DATA)
private LocalDateTime data;
@Ignore
private List<VerificaGiacenzeRowEntity> verificaGiacenzeRowList;
@NonNull
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(@NonNull String codMdep) {
this.codMdep = codMdep;
}
public LocalDateTime getData() {
return data;
}
public void setData(LocalDateTime data) {
this.data = data;
}
public List<VerificaGiacenzeRowEntity> getVerificaGiacenzeRowList() {
return verificaGiacenzeRowList;
}
public void setVerificaGiacenzeRowList(List<VerificaGiacenzeRowEntity> verificaGiacenzeRowList) {
this.verificaGiacenzeRowList = verificaGiacenzeRowList;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
VerificaGiacenzeEntity that = (VerificaGiacenzeEntity) o;
return getId().equals(that.getId()) && getCodMdep().equals(that.getCodMdep()) && Objects.equals(getData(), that.getData()) && Objects.equals(getVerificaGiacenzeRowList(), that.getVerificaGiacenzeRowList());
}
@Override
public int hashCode() {
int result = getId().hashCode();
result = 31 * result + getCodMdep().hashCode();
result = 31 * result + Objects.hashCode(getData());
result = 31 * result + Objects.hashCode(getVerificaGiacenzeRowList());
return result;
}
}

View File

@@ -0,0 +1,211 @@
package it.integry.integrywmsnative.core.data_store.db.entity;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
import it.integry.integrywmsnative.core.data_store.db.interfaces.EntityModelInterface;
@Entity(
inheritSuperIndices = true,
tableName = VerificaGiacenzeRowEntity.TABLE_NAME,
foreignKeys = {
@ForeignKey(
entity = VerificaGiacenzeEntity.class,
parentColumns = {BaseSyncDTO.Columns.ID},
childColumns = {VerificaGiacenzeRowEntity.Columns.PARENT_ID},
onDelete = ForeignKey.CASCADE
)
}
)
public class VerificaGiacenzeRowEntity extends BaseSyncDTO implements EntityModelInterface, Cloneable {
public static final String TABLE_NAME = "verifica_giacenze_rows";
public static class Columns {
public static final String PARENT_ID = "parent_id";
public static final String CREATED_AT = "created_at";
public static final String COD_MART = "cod_mart";
public static final String PARTITA_MAG = "partita_mag";
public static final String DESCRIZIONE = "descrizione";
public static final String QTA_IN_GIACENZA = "qta_in_giacenza";
public static final String QTA = "qta";
public static final String NUM_CNF = "num_cnf";
public static final String QTA_CNF = "qta_cnf";
public static final String SCAN_COD_BARRE = "scan_cod_barre";
}
@ColumnInfo(index = true, name = Columns.PARENT_ID)
private Long parentId;
@ColumnInfo(name = Columns.CREATED_AT, defaultValue = "CURRENT_TIMESTAMP")
private LocalDateTime createdAt = LocalDateTime.now();
@ColumnInfo(name = Columns.COD_MART)
private String codMart;
@ColumnInfo(name = Columns.PARTITA_MAG)
private String partitaMag;
@ColumnInfo(name = Columns.DESCRIZIONE)
private String descrizione;
@NonNull
@ColumnInfo(name = Columns.QTA_IN_GIACENZA, defaultValue = "0")
private BigDecimal qtaInGiacenza;
@NonNull
@ColumnInfo(name = Columns.QTA, defaultValue = "0")
private BigDecimal qta;
@NonNull
@ColumnInfo(name = Columns.NUM_CNF, defaultValue = "0")
private BigDecimal numConf;
@NonNull
@ColumnInfo(name = Columns.QTA_CNF, defaultValue = "0")
private BigDecimal qtaConf;
@ColumnInfo(name = Columns.SCAN_COD_BARRE)
private String scanCodBarre;
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
public void setCreatedAt(LocalDateTime createdAt) {
this.createdAt = createdAt;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
@NonNull
public BigDecimal getQtaInGiacenza() {
return qtaInGiacenza;
}
public void setQtaInGiacenza(@NonNull BigDecimal qtaInGiacenza) {
this.qtaInGiacenza = qtaInGiacenza;
}
@NonNull
public BigDecimal getQta() {
return qta;
}
public void setQta(@NonNull BigDecimal qta) {
this.qta = qta;
}
@NonNull
public BigDecimal getNumConf() {
return numConf;
}
public void setNumConf(@NonNull BigDecimal numConf) {
this.numConf = numConf;
}
@NonNull
public BigDecimal getQtaConf() {
return qtaConf;
}
public void setQtaConf(@NonNull BigDecimal qtaConf) {
this.qtaConf = qtaConf;
}
public String getScanCodBarre() {
return scanCodBarre;
}
public void setScanCodBarre(String scanCodBarre) {
this.scanCodBarre = scanCodBarre;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
VerificaGiacenzeRowEntity that = (VerificaGiacenzeRowEntity) o;
return getId().equals(that.getId()) && getParentId().equals(that.getParentId()) && getCodMart().equals(that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && getQta().equals(that.getQta()) && getNumConf().equals(that.getNumConf()) && getQtaConf().equals(that.getQtaConf()) && Objects.equals(getScanCodBarre(), that.getScanCodBarre());
}
@Override
public int hashCode() {
int result = getId().hashCode();
result = 31 * result + getParentId().hashCode();
result = 31 * result + getCodMart().hashCode();
result = 31 * result + Objects.hashCode(getPartitaMag());
result = 31 * result + getQta().hashCode();
result = 31 * result + getNumConf().hashCode();
result = 31 * result + getQtaConf().hashCode();
result = 31 * result + Objects.hashCode(getScanCodBarre());
return result;
}
@NonNull
@Override
public VerificaGiacenzeRowEntity clone() throws CloneNotSupportedException {
try {
VerificaGiacenzeRowEntity clone = (VerificaGiacenzeRowEntity) super.clone();
// Clona ID
clone.setId(getId() != null ? new Long(getId()) : null);
clone.setParentId(getParentId() != null ? new Long(getParentId()) : null);
// Clona le stringhe
clone.setCodMart(getCodMart() != null ? new String(getCodMart()) : null);
clone.setPartitaMag(getPartitaMag() != null ? new String(getPartitaMag()) : null);
clone.setDescrizione(getDescrizione() != null ? new String(getDescrizione()) : null);
clone.setScanCodBarre(getScanCodBarre() != null ? new String(getScanCodBarre()) : null);
// Clona i BigDecimal
clone.setQta(getQta() != null ? new BigDecimal(getQta().toString()) : null);
clone.setNumConf(getNumConf() != null ? new BigDecimal(getNumConf().toString()) : null);
clone.setQtaConf(getQtaConf() != null ? new BigDecimal(getQtaConf().toString()) : null);
return clone;
} catch (CloneNotSupportedException e) {
throw new AssertionError(); // Can't happen
}
}
}

View File

@@ -6,6 +6,7 @@ import android.util.Log;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -15,7 +16,7 @@ import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import io.reactivex.rxjava3.schedulers.Schedulers;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.InventarioLocalDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.InventarioMapper;
@@ -24,13 +25,13 @@ import it.integry.integrywmsnative.core.rest.consumers.InventarioRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLiveData;
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioRoomDTO, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioEntity, InventarioMapper, InventarioLocalDataSource, InventarioRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
private final MutableLiveData<List<InventarioRoomDTO>> internalLiveData = new MutableLiveData<>();
private final MutableLiveData<List<InventarioEntity>> internalLiveData = new MutableLiveData<>();
@Inject
public InventarioRepository(InventarioLocalDataSource localDataSource,
@@ -44,7 +45,7 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
}
public LiveData<List<InventarioRoomDTO>> retrieve(Runnable onComplete, RunnableArgs<Exception> onError) {
public LiveData<List<InventarioEntity>> retrieve(Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeSynchronousRetrieveAllLive(false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
@@ -84,15 +85,15 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
});
}
public void insert(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
public void insert(InventarioEntity 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) {
public void export(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
remoteDataSource.makeInsertRequest(dataMapper.mapRoomToRest(inventarioDTO), () -> {
inventarioDTO.setRemoteSyncDate(new Date());
inventarioDTO.setRemoteSyncDate(LocalDateTime.now());
localDataSource.makeUpdateRequest(inventarioDTO, (ignored) -> {
handler.post(onComplete);
@@ -100,7 +101,7 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioR
}, onError);
}
public void delete(InventarioRoomDTO inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
public void delete(InventarioEntity inventarioDTO, Runnable onComplete, RunnableArgs<Exception> onError) {
localDataSource.makeDeleteRequest(inventarioDTO, onComplete, onError);
}

View File

@@ -0,0 +1,82 @@
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 java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.schedulers.Schedulers;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.TrasferimentoPedaneLocalDataSource;
import it.integry.integrywmsnative.core.mapper.TrasferimentoPedaneMapper;
import it.integry.integrywmsnative.core.rest.consumers.TrasferimentoPedaneRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneDTO;
@Singleton
public class TrasferimentoPedaneRepository extends _BaseRepository<TrasferimentoPedaneDTO, TrasferimentoPedaneEntity, TrasferimentoPedaneMapper, TrasferimentoPedaneLocalDataSource, TrasferimentoPedaneRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
@Inject
public TrasferimentoPedaneRepository(TrasferimentoPedaneLocalDataSource localDataSource,
TrasferimentoPedaneRESTConsumer remoteDataSource,
TrasferimentoPedaneMapper dataMapper,
Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
this.executorService = executorService;
}
public LiveData<TrasferimentoPedaneEntity> retrieveLive(long id) {
MutableLiveData<TrasferimentoPedaneEntity> internalLiveData = new MutableLiveData<>();
localDataSource.makeRetrieveRequest(id)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
return internalLiveData;
}
public TrasferimentoPedaneEntity retrieve(long id) {
return localDataSource.makeSynchronousRetrieveRequest(id);
}
public LiveData<List<TrasferimentoPedaneEntity>> retrieveLive() {
MutableLiveData<List<TrasferimentoPedaneEntity>> internalLiveData = new MutableLiveData<>();
localDataSource.makeSynchronousRetrieveAllLive(false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
return internalLiveData;
}
public long insert(String codMdepDest, String descrizioneDepoDest) {
var trasferimentoPedane = new TrasferimentoPedaneEntity();
trasferimentoPedane.setCodMdepDest(codMdepDest);
trasferimentoPedane.setDescrizioneDepoDest(descrizioneDepoDest);
localDataSource.makeSynchronousInsertRequest(trasferimentoPedane);
return trasferimentoPedane.getId();
}
public void updateSynchronized(TrasferimentoPedaneEntity entity) {
localDataSource.makeSynchronousUpdateRequest(entity);
}
public void deleteSynchronized(TrasferimentoPedaneEntity entity) {
localDataSource.makeSynchronousDeleteRequest(entity);
}
}

View File

@@ -0,0 +1,74 @@
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 java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.schedulers.Schedulers;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.TrasferimentoPedaneRowsLocalDataSource;
import it.integry.integrywmsnative.core.mapper.TrasferimentoPedaneRowMapper;
import it.integry.integrywmsnative.core.rest.consumers.TrasferimentoPedaneRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneRowDTO;
@Singleton
public class TrasferimentoPedaneRowRepository extends _BaseRepository<TrasferimentoPedaneRowDTO, TrasferimentoPedaneRowEntity, TrasferimentoPedaneRowMapper, TrasferimentoPedaneRowsLocalDataSource, TrasferimentoPedaneRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
@Inject
public TrasferimentoPedaneRowRepository(TrasferimentoPedaneRowsLocalDataSource localDataSource,
TrasferimentoPedaneRESTConsumer remoteDataSource,
TrasferimentoPedaneRowMapper dataMapper,
Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
this.executorService = executorService;
}
public LiveData<List<TrasferimentoPedaneRowEntity>> retrieve(long trasferimentoPedaneId) {
MutableLiveData<List<TrasferimentoPedaneRowEntity>> internalLiveData = new MutableLiveData<>();
localDataSource.makeSynchronousRetrieveAllLive(trasferimentoPedaneId, false)
.observeOn(Schedulers.io())
.subscribe(internalLiveData::postValue);
return internalLiveData;
}
public TrasferimentoPedaneRowEntity insertSynchronized(long parentId, String barcodeUl, int progressivoUl) {
TrasferimentoPedaneRowEntity entity = new TrasferimentoPedaneRowEntity() {{
setParentId(parentId);
setBarcodeUl(barcodeUl);
setProgressivoUl(progressivoUl);
}};
localDataSource.makeSynchronousInsertRequest(entity);
return entity;
}
public void updateSynchronized(TrasferimentoPedaneRowEntity entity) {
localDataSource.makeSynchronousUpdateRequest(entity);
}
public void updateAllSynchronized(List<TrasferimentoPedaneRowEntity> entities) {
localDataSource.makeSynchronousUpdateAllRequest(entities);
}
public void deleteSynchronized(TrasferimentoPedaneRowEntity entity) {
localDataSource.makeSynchronousDeleteRequest(entity);
}
}

View File

@@ -0,0 +1,59 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.ExecutorService;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeLocalDataSource;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeMapper;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeDTO;
public class VerificaGiacenzeRepository extends _BaseRepository<VerificaGiacenzeDTO, VerificaGiacenzeEntity, VerificaGiacenzeMapper, VerificaGiacenzeLocalDataSource, GiacenzaPvRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
public VerificaGiacenzeRepository(VerificaGiacenzeLocalDataSource localDataSource,
GiacenzaPvRESTConsumer remoteDataSource,
VerificaGiacenzeMapper dataMapper,
Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
this.executorService = executorService;
}
public List<VerificaGiacenzeEntity> retrieve() {
return localDataSource.makeSynchronousRetrieveAllRequest(false);
}
public VerificaGiacenzeEntity retrieveLast() {
return localDataSource.makeSynchronousRetrieveLastRequest(false);
}
public boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes) {
return localDataSource.isAnotherVerificaGiacenzeInProgress(maxMinutes);
}
public void clearPreviousSessions() {
var entities = retrieve();
for (var entity : entities) {
localDataSource.makeSynchronousDeleteRequest(entity);
}
}
public void insert(VerificaGiacenzeEntity entity) {
localDataSource.makeSynchronousInsertRequest(entity);
}
public void delete(VerificaGiacenzeEntity entity) {
localDataSource.makeSynchronousDeleteRequest(entity);
}
}

View File

@@ -0,0 +1,55 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new;
import android.os.Handler;
import java.util.concurrent.ExecutorService;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
import it.integry.integrywmsnative.core.data_store.db.respository_new.data_source.VerificaGiacenzeRowLocalDataSource;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.mapper.VerificaGiacenzeRowMapper;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaPvRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.pv.VerificaGiacenzeRowDTO;
public class VerificaGiacenzeRowRepository extends _BaseRepository<VerificaGiacenzeRowDTO, VerificaGiacenzeRowEntity, VerificaGiacenzeRowMapper, VerificaGiacenzeRowLocalDataSource, GiacenzaPvRESTConsumer> {
private final ExecutorService executorService;
private final Handler handler;
public VerificaGiacenzeRowRepository(VerificaGiacenzeRowLocalDataSource localDataSource,
GiacenzaPvRESTConsumer remoteDataSource,
VerificaGiacenzeRowMapper dataMapper,
Handler handler,
ExecutorService executorService) {
super(dataMapper, localDataSource, remoteDataSource);
this.handler = handler;
this.executorService = executorService;
}
public void insertSynchronized(VerificaGiacenzeRowEntity entity) {
localDataSource.makeSynchronousInsertRequest(entity);
}
public void insert(VerificaGiacenzeRowEntity entity, RunnableArgs<VerificaGiacenzeRowEntity> onComplete, RunnableArgs<Exception> onFailed) {
localDataSource.makeInsertRequest(entity, onComplete, onFailed);
}
public void updateSynchronized(VerificaGiacenzeRowEntity entity) {
localDataSource.makeSynchronousUpdateRequest(entity);
}
public void update(VerificaGiacenzeRowEntity entity, RunnableArgs<VerificaGiacenzeRowEntity> onComplete, RunnableArgs<Exception> onFailed) {
localDataSource.makeUpdateRequest(entity, onComplete, onFailed);
}
public void deleteSynchronized(VerificaGiacenzeRowEntity entity) {
localDataSource.makeSynchronousDeleteRequest(entity);
}
public void delete(VerificaGiacenzeRowEntity entity, Runnable onComplete, RunnableArgs<Exception> onFailed) {
localDataSource.makeDeleteRequest(entity, onComplete, onFailed);
}
}

View File

@@ -8,24 +8,24 @@ import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.InventarioDao;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRoomDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.InventarioEntity;
@Singleton
public class InventarioLocalDataSource extends _BaseRoomDataSource<InventarioRoomDTO, InventarioDao> {
public class InventarioLocalDataSource extends _BaseRoomDataSource<InventarioEntity, InventarioDao> {
@Inject
public InventarioLocalDataSource(ExecutorService executorService, InventarioDao entityDao) {
super(executorService, entityDao, InventarioRoomDTO.TABLE_NAME);
super(executorService, entityDao, InventarioEntity.TABLE_NAME);
}
@Override
public List<InventarioRoomDTO> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
public List<InventarioEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
return entityDao
.selectAll(onlyToBeSync);
}
@Override
public Flowable<List<InventarioRoomDTO>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
public Flowable<List<InventarioEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(onlyToBeSync);
}

View File

@@ -0,0 +1,64 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneDao;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.data_store.db.wrappers.TrasferimentoPedaneWithRowsWrapper;
@Singleton
public class TrasferimentoPedaneLocalDataSource extends _BaseRoomDataSource<TrasferimentoPedaneEntity, TrasferimentoPedaneDao> {
@Inject
public TrasferimentoPedaneLocalDataSource(ExecutorService executorService, TrasferimentoPedaneDao entityDao) {
super(executorService, entityDao, TrasferimentoPedaneEntity.TABLE_NAME);
}
public Flowable<TrasferimentoPedaneEntity> makeRetrieveRequest(long id) {
var data = entityDao
.selectFlowable(id);
return data.map(x -> x.trasferimentoPedane);
}
public TrasferimentoPedaneEntity makeSynchronousRetrieveRequest(long id) {
var data = entityDao
.select(id);
return data.trasferimentoPedane;
}
@Override
public List<TrasferimentoPedaneEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
var data = entityDao
.selectAll(onlyToBeSync);
return data.stream()
.map(x -> {
x.trasferimentoPedane.setTrasferimentoPedaneRowList(x.rowList);
return x.trasferimentoPedane;
})
.collect(Collectors.toList());
}
@Override
public Flowable<List<TrasferimentoPedaneEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
Flowable<List<TrasferimentoPedaneWithRowsWrapper>> listFlowable = entityDao
.selectAllFlowable(onlyToBeSync);
return listFlowable.map(x ->
x.stream()
.map(y -> {
y.trasferimentoPedane.setTrasferimentoPedaneRowList(y.rowList);
return y.trasferimentoPedane;
})
.collect(Collectors.toList())
);
}
}

View File

@@ -0,0 +1,59 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.TrasferimentoPedaneRowDao;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
@Singleton
public class TrasferimentoPedaneRowsLocalDataSource extends _BaseRoomDataSource<TrasferimentoPedaneRowEntity, TrasferimentoPedaneRowDao> {
@Inject
public TrasferimentoPedaneRowsLocalDataSource(ExecutorService executorService, TrasferimentoPedaneRowDao entityDao) {
super(executorService, entityDao, TrasferimentoPedaneRowEntity.TABLE_NAME);
}
@Override
public List<TrasferimentoPedaneRowEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
var data = entityDao
.selectAll(onlyToBeSync);
return data.stream()
.collect(Collectors.toList());
}
@Override
public Flowable<List<TrasferimentoPedaneRowEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
Flowable<List<TrasferimentoPedaneRowEntity>> listFlowable = entityDao
.selectAllFlowable(onlyToBeSync);
return listFlowable.map(x ->
x.stream()
.collect(Collectors.toList())
);
}
public List<TrasferimentoPedaneRowEntity> makeSynchronousRetrieveAllRequest(long parentId, boolean onlyToBeSync) {
var data = entityDao
.selectAll(parentId, onlyToBeSync);
return data.stream()
.collect(Collectors.toList());
}
public Flowable<List<TrasferimentoPedaneRowEntity>> makeSynchronousRetrieveAllLive(long parentId, boolean onlyToBeSync) {
Flowable<List<TrasferimentoPedaneRowEntity>> listFlowable = entityDao
.selectAllFlowable(parentId, onlyToBeSync);
return listFlowable.map(x ->
x.stream()
.collect(Collectors.toList())
);
}
}

View File

@@ -0,0 +1,63 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeDao;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
import it.integry.integrywmsnative.core.data_store.db.wrappers.VerificaGiacenzeWithRowsWrapper;
@Singleton
public class VerificaGiacenzeLocalDataSource extends _BaseRoomDataSource<VerificaGiacenzeEntity, VerificaGiacenzeDao> {
@Inject
public VerificaGiacenzeLocalDataSource(ExecutorService executorService, VerificaGiacenzeDao entityDao) {
super(executorService, entityDao, VerificaGiacenzeEntity.TABLE_NAME);
}
@Override
public List<VerificaGiacenzeEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
var data = entityDao
.selectAll(onlyToBeSync);
return data.stream()
.map(x -> {
x.verificaGiacenze.setVerificaGiacenzeRowList(x.verificaGiacenzeRowList);
return x.verificaGiacenze;
})
.collect(Collectors.toList());
}
@Override
public Flowable<List<VerificaGiacenzeEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
Flowable<List<VerificaGiacenzeWithRowsWrapper>> listFlowable = entityDao
.selectAllFlowable(onlyToBeSync);
return listFlowable.map(x ->
x.stream()
.map(y -> {
y.verificaGiacenze.setVerificaGiacenzeRowList(y.verificaGiacenzeRowList);
return y.verificaGiacenze;
})
.collect(Collectors.toList())
);
}
public VerificaGiacenzeEntity makeSynchronousRetrieveLastRequest(boolean onlyToBeSync) {
var lastEntity = entityDao
.selectLast(onlyToBeSync);
lastEntity.verificaGiacenze.setVerificaGiacenzeRowList(lastEntity.verificaGiacenzeRowList);
return lastEntity.verificaGiacenze;
}
public boolean isAnotherVerificaGiacenzeInProgress(int maxMinutes) {
return entityDao.isAnotherVerificaGiacenzeInProgress(maxMinutes);
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.integrywmsnative.core.data_store.db.respository_new.data_source;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.rxjava3.core.Flowable;
import it.integry.integrywmsnative.core.data_store.db.dao.VerificaGiacenzeRowDao;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
@Singleton
public class VerificaGiacenzeRowLocalDataSource extends _BaseRoomDataSource<VerificaGiacenzeRowEntity, VerificaGiacenzeRowDao> {
@Inject
public VerificaGiacenzeRowLocalDataSource(ExecutorService executorService, VerificaGiacenzeRowDao entityDao) {
super(executorService, entityDao, VerificaGiacenzeRowEntity.TABLE_NAME);
}
@Override
public List<VerificaGiacenzeRowEntity> makeSynchronousRetrieveAllRequest(boolean onlyToBeSync) {
var data = entityDao
.selectAll(onlyToBeSync);
return data;
}
@Override
public Flowable<List<VerificaGiacenzeRowEntity>> makeSynchronousRetrieveAllLive(boolean onlyToBeSync) {
return entityDao
.selectAllFlowable(onlyToBeSync);
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.DatabaseView;
import androidx.room.Embedded;
import androidx.room.Relation;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
@DatabaseView
public class TrasferimentoPedaneWithRowsWrapper {
@Embedded
public TrasferimentoPedaneEntity trasferimentoPedane;
@Relation(
parentColumn = BaseSyncDTO.Columns.ID,
entityColumn = TrasferimentoPedaneRowEntity.Columns.PARENT_ID
)
public List<TrasferimentoPedaneRowEntity> rowList;
}

View File

@@ -0,0 +1,24 @@
package it.integry.integrywmsnative.core.data_store.db.wrappers;
import androidx.room.DatabaseView;
import androidx.room.Embedded;
import androidx.room.Relation;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.BaseSyncDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeEntity;
import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRowEntity;
@DatabaseView
public class VerificaGiacenzeWithRowsWrapper {
@Embedded
public VerificaGiacenzeEntity verificaGiacenze;
@Relation(
parentColumn = BaseSyncDTO.Columns.ID,
entityColumn = VerificaGiacenzeRowEntity.Columns.PARENT_ID
)
public List<VerificaGiacenzeRowEntity> verificaGiacenzeRowList;
}

View File

@@ -4,9 +4,6 @@ import androidx.databinding.BaseObservable;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
public class BindableFloat extends BaseObservable {
private Float value;
@@ -15,10 +12,6 @@ public class BindableFloat extends BaseObservable {
}
public BigDecimal getBigDecimal() {
int numberOfDigits = UtilityNumber.countNumberOfDecimalDigits(get());
if(numberOfDigits > CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS) numberOfDigits = CommonConst.Config.NUMBER_OF_DECIMAL_DIGITS;
return BigDecimal.valueOf(get());
}

View File

@@ -11,6 +11,7 @@ import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.annotation.ColorRes;
import androidx.appcompat.widget.AppCompatCheckBox;
@@ -24,6 +25,11 @@ import androidx.databinding.BindingAdapter;
import androidx.databinding.BindingConversion;
import androidx.databinding.Observable;
import androidx.databinding.ObservableField;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewTreeLifecycleOwner;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.textfield.TextInputEditText;
@@ -33,14 +39,17 @@ import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.LocaleDecimalKeyListener;
import it.integry.integrywmsnative.core.helper.ContextHelper;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
@@ -105,6 +114,28 @@ public class Converters {
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableField != null ? observableField.get() : "";
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
}
}
@BindingAdapter("binding")
public static void bindEditText(AppCompatTextView view, final ValidatableObservableField<String> observableField) {
Pair<ValidatableObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableField) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (observableField != null) observableField.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableField, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableField.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
@@ -156,6 +187,28 @@ public class Converters {
}
}
@BindingAdapter("binding")
public static void bindEditText(EditText view, final ValidatableObservableField<String> observableString) {
Pair<ValidatableObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableString) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
observableString.set(s.toString());
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableString, watcher));
view.addTextChangedListener(watcher);
}
String newValue = observableString.get();
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue);
}
}
@BindingAdapter("binding")
public static void bindEditText(AutoCompleteTextView view, final ObservableField<String> observableString) {
Pair<ObservableField<String>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -211,16 +264,19 @@ public class Converters {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
value = UtilityNumber.parseBigDecimal(s.toString(), Locale.getDefault());
observableBigDecimal.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableBigDecimal, watcher));
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
@@ -238,8 +294,11 @@ public class Converters {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
String newValueString = s.toString().trim();
if (!UtilityString.isNullOrEmpty(newValueString))
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
observableBigDecimal.set(value);
}
};
@@ -247,7 +306,37 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
}
}
@BindingAdapter("binding")
public static void bindTextInputEditTextBigDecimal(EditText view, final ValidatableObservableField<BigDecimal> observableBigDecimal) {
Pair<ValidatableObservableField<BigDecimal>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableBigDecimal) {
if (pair != null) {
view.removeTextChangedListener(pair.second);
}
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
String newValueString = s.toString().trim();
if (!UtilityString.isNullOrEmpty(newValueString))
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
observableBigDecimal.set(value);
}
};
view.setTag(R.id.bound_observable, new Pair<>(observableBigDecimal, watcher));
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
@@ -266,7 +355,8 @@ public class Converters {
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
value = UtilityNumber.parseBigDecimal(s.toString(), Locale.getDefault());
bindableBigDecimal.set(value);
}
};
@@ -274,7 +364,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = bindableBigDecimal.get();
BigDecimal viewValue = view.getText().toString().trim().length() > 0 ? new BigDecimal(view.getText().toString()) : null;
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? UtilityNumber.parseBigDecimal(view.getText().toString(), Locale.getDefault()) : null;
if (!UtilityBigDecimal.equalsTo(viewValue, newValue)) {
view.setText(UtilityNumber.decimalToString(newValue));
@@ -301,7 +391,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
Integer newValue = bindableInteger.get();
Integer viewValue = view.getText().toString().trim().length() > 0 ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
Integer viewValue = !view.getText().toString().trim().isEmpty() ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
if (!(viewValue.compareTo(newValue) == 0)) {
view.setText(newValue.toString());
@@ -352,7 +442,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
Integer newValue = observableInteger.get();
Integer viewValue = view.getText().toString().trim().length() > 0 ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
Integer viewValue = !view.getText().toString().trim().isEmpty() ? Integer.valueOf(view.getText().toString()) : Integer.valueOf(0);
if (!viewValue.equals(newValue) && newValue != null) {
view.setText(newValue.toString());
@@ -379,15 +469,16 @@ public class Converters {
view.addTextChangedListener(watcher);
}
Long newValue = observableLong.get();
Long viewValue = view.getText().toString().trim().length() > 0 ? Long.valueOf(view.getText().toString()) : Long.valueOf(0);
Long viewValue = !view.getText().toString().trim().isEmpty() ? Long.valueOf(view.getText().toString()) : Long.valueOf(0);
if (!viewValue.equals(newValue) && newValue != null) {
view.setText(newValue.toString());
}
}
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) {
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
public static void bindTextInputEditTextDate(TextInputEditText view, final ObservableField<Date> observableDate, boolean warningOnOldDates) {
Pair<ObservableField<Date>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableDate) {
if (pair != null) {
@@ -422,15 +513,15 @@ public class Converters {
var calendar = UtilityDate.getCalendarInstance();
calendar.setTimeInMillis(timeInMillis);
if (parentFragment != null && warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
if (warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
DialogSimpleMessageView
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
view.setText(UtilityDate.formatDate(calendar.getTime(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(calendar.getTime());
}, () -> {
})
.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
.show();
} else {
view.setText(UtilityDate.formatDate(calendar.getTime(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(calendar.getTime());
@@ -442,7 +533,7 @@ public class Converters {
}
});
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
};
//Adding click-listener
@@ -456,8 +547,126 @@ public class Converters {
view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}
@BindingAdapter(value = {"binding", "parentView", "warningOnOldDates"}, requireAll = false)
public static void bindEditTextDate(EditText view, final ObservableField<LocalDate> observableDate, BaseDialogFragment parentFragment, boolean warningOnOldDates) {
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
public static void bindTextInputEditTextDate(TextInputEditText view, final MutableLiveData<Date> liveDataDate, boolean warningOnOldDates) {
// Ottieni il LifecycleOwner dalla view
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
if (lifecycleOwner == null) {
// Non è possibile osservare LiveData senza un LifecycleOwner
// Potresti loggare un errore o gestire questo caso come preferisci
Log.e("BindingAdapters", "LifecycleOwner not found for view " + view.getId());
return;
}
// Rimuovi eventuali TextWatcher o listener precedenti per evitare duplicazioni
// Questo è importante se il BindingAdapter viene chiamato più volte per la stessa view
Object oldTag = view.getTag(R.id.bound_observable_date_listener);
if (oldTag instanceof TextWatcherAdapter) {
view.removeTextChangedListener((TextWatcherAdapter) oldTag);
}
Object oldLiveDataTag = view.getTag(R.id.bound_observable_date_livedata);
if (oldLiveDataTag instanceof MutableLiveData) {
// Se c'era un observer precedente su un altro LiveData, rimuovilo
// Questo scenario è meno comune ma è bene gestirlo
Observer<Date> existingObserver = (Observer<Date>) view.getTag(R.id.bound_observable_date_observer);
if (existingObserver != null) {
((MutableLiveData<Date>) oldLiveDataTag).removeObserver(existingObserver);
}
}
// Imposta il listener per il click per aprire il DatePicker
RunnableArgs<View> onClick = v -> {
Calendar c = UtilityDate.getCalendarInstance();
if (liveDataDate.getValue() != null) {
c.setTime(liveDataDate.getValue());
}
MaterialDatePicker<Long> datePicker =
MaterialDatePicker.Builder.datePicker()
.setSelection(c.getTimeInMillis())
.build();
datePicker.addOnPositiveButtonClickListener(selection -> {
Calendar calendar = UtilityDate.getCalendarInstance();
calendar.setTimeInMillis(selection);
Date selectedDate = calendar.getTime();
if (warningOnOldDates && calendar.before(UtilityDate.getCalendarInstance())) {
DialogSimpleMessageView
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
liveDataDate.postValue(selectedDate);
}, () -> {
// Non fare nulla se l'utente annulla
})
.show();
} else {
liveDataDate.postValue(selectedDate);
}
});
datePicker.addOnNegativeButtonClickListener(dialog -> {
// Utente ha annullato, potresti voler resettare o non fare nulla
});
datePicker.addOnCancelListener(dialog -> {
// Utente ha cancellato (es. premendo back), potresti voler resettare o non fare nulla
});
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "MaterialDatePicker");
};
view.setOnClickListener(onClick::run);
if (view.getParent() != null && view.getParent().getParent() != null && view.getParent().getParent() instanceof TextInputLayout) {
((FrameLayout) view.getParent()).setOnClickListener(onClick::run);
((TextInputLayout) view.getParent().getParent()).setOnClickListener(onClick::run);
}
// Osserva il LiveData per aggiornare la view quando il valore cambia
Observer<Date> dateObserver = date -> {
String formattedDate = UtilityDate.formatDate(date, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN);
if (!view.getText().toString().equals(formattedDate)) {
view.setText(formattedDate);
}
};
// Rimuovi l'observer precedente se stiamo ri-bindando allo stesso LiveData
Observer<Date> existingObserver = (Observer<Date>) view.getTag(R.id.bound_observable_date_observer);
if (view.getTag(R.id.bound_observable_date_livedata) == liveDataDate && existingObserver != null) {
liveDataDate.removeObserver(existingObserver);
}
liveDataDate.observe(lifecycleOwner, dateObserver);
// Salva il LiveData e l'observer nel tag per poterli rimuovere in futuro se necessario
view.setTag(R.id.bound_observable_date_livedata, liveDataDate);
view.setTag(R.id.bound_observable_date_observer, dateObserver);
// Imposta il valore iniziale
Date initialDate = liveDataDate.getValue();
view.setText(UtilityDate.formatDate(initialDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
// Aggiungi un TextWatcher fittizio se necessario per coerenza con altri binding,
// ma in questo caso il LiveData guida l'aggiornamento.
// Se non hai bisogno di reagire ai cambiamenti di testo *dalla view al LiveData*
// (perché il DatePicker lo fa già), questo TextWatcher potrebbe non essere strettamente necessario.
// Tuttavia, per mantenere la struttura simile agli altri, lo includiamo.
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Normalmente qui si aggiornerebbe il LiveData,
// ma il DatePicker gestisce l'aggiornamento.
// Potresti aggiungere logica qui se l'utente può modificare il testo direttamente
// e vuoi che ciò si rifletta nel LiveData (richiederebbe parsing della data).
}
};
view.setTag(R.id.bound_observable_date_listener, watcher); // Salva il watcher nel tag
// view.addTextChangedListener(watcher); // Aggiungi solo se necessario
}
@BindingAdapter(value = {"binding", "warningOnOldDates"}, requireAll = false)
public static void bindEditTextDate(EditText view, final ObservableField<LocalDate> observableDate, boolean warningOnOldDates) {
Pair<ObservableField<LocalDate>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
if (pair == null || pair.first != observableDate) {
if (pair != null) {
@@ -488,15 +697,15 @@ public class Converters {
var nowTime = UtilityDate.millisTimeToLocalDate(selectedTimeInMillis, null);
if (parentFragment != null && warningOnOldDates && nowTime.isBefore(UtilityDate.getNow())) {
if (warningOnOldDates && nowTime.isBefore(UtilityDate.getNow())) {
DialogSimpleMessageView
.makeWarningDialog(new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
.makeWarningDialog(view.getContext(), new SpannableString("Hai scelto una data precedente a quella odierna. Continuare?"), null, () -> {
view.setText(UtilityDate.formatDate(nowTime, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(nowTime);
}, () -> {
})
.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
.show();
} else {
view.setText(UtilityDate.formatDate(nowTime, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
observableDate.set(nowTime);
@@ -508,7 +717,7 @@ public class Converters {
}
});
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
};
//Adding click-listener
@@ -522,6 +731,67 @@ public class Converters {
view.setText(UtilityDate.formatDate(newValue, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}
@BindingAdapter("binding")
public static void bindAutoCompleteTextView(AutoCompleteTextView view, final MutableLiveData<String> liveDataString) {
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
if (lifecycleOwner == null) {
Log.e("BindingAdapters", "LifecycleOwner not found for view " + view.getId());
return;
}
// Rimuovi TextWatcher precedente
Object oldWatcherTag = view.getTag(R.id.bound_observable_actv_watcher);
if (oldWatcherTag instanceof TextWatcherAdapter) {
view.removeTextChangedListener((TextWatcherAdapter) oldWatcherTag);
}
// Rimuovi Observer precedente se il LiveData è cambiato
Object oldLiveDataTag = view.getTag(R.id.bound_observable_actv_livedata);
if (oldLiveDataTag instanceof MutableLiveData && oldLiveDataTag != liveDataString) {
Observer<String> existingObserver = (Observer<String>) view.getTag(R.id.bound_observable_actv_observer);
if (existingObserver != null) {
((MutableLiveData<String>) oldLiveDataTag).removeObserver(existingObserver);
}
}
// TextWatcher per aggiornare il LiveData quando il testo cambia nella View
TextWatcherAdapter watcher = new TextWatcherAdapter() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (liveDataString.getValue() == null || !liveDataString.getValue().equals(s.toString())) {
liveDataString.setValue(s.toString());
}
}
};
view.addTextChangedListener(watcher);
view.setTag(R.id.bound_observable_actv_watcher, watcher);
// Observer per aggiornare la View quando il LiveData cambia
Observer<String> observer = newValue -> {
if (!view.getText().toString().equals(newValue)) {
view.setText(newValue, false); // Il 'false' evita di far scattare il dropdown
}
};
// Rimuovi l'observer precedente se stiamo ri-bindando allo stesso LiveData
Observer<String> existingObserver = (Observer<String>) view.getTag(R.id.bound_observable_actv_observer);
if (view.getTag(R.id.bound_observable_actv_livedata) == liveDataString && existingObserver != null) {
liveDataString.removeObserver(existingObserver);
}
liveDataString.observe(lifecycleOwner, observer);
// Salva il LiveData e l'observer nel tag
view.setTag(R.id.bound_observable_actv_livedata, liveDataString);
view.setTag(R.id.bound_observable_actv_observer, observer);
// Imposta il valore iniziale
String initialValue = liveDataString.getValue();
if (initialValue != null && !view.getText().toString().equals(initialValue)) {
view.setText(initialValue);
}
}
@BindingAdapter("binding")
public static void bindAutoCompleteTextView(AutoCompleteTextView view, final BindableString bindableString) {
Pair<BindableString, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
@@ -651,6 +921,30 @@ public class Converters {
view.setChecked(newValue);
}
@BindingAdapter("checked")
public static void bindCheckbox(AppCompatCheckBox view, final ObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
view.setOnCheckedChangeListener((compoundButton, b) -> {
bindableBoolean.set(b);
});
}
Boolean newValue = bindableBoolean.get();
view.setChecked(newValue);
}
@BindingAdapter("checked")
public static void bindCheckbox(AppCompatCheckBox view, final ValidatableObservableField<Boolean> bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
view.setOnCheckedChangeListener((compoundButton, b) -> {
bindableBoolean.set(b);
});
}
Boolean newValue = bindableBoolean.get();
view.setChecked(newValue);
}
@BindingAdapter("checked")
public static void bindCheckbox(CheckBox view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
@@ -709,16 +1003,160 @@ public class Converters {
}
@BindingAdapter("visibility")
public static void bindViewVisibility(View view, final LiveData<Boolean> liveDataBoolean) {
if (liveDataBoolean == null) {
return;
}
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
if (lifecycleOwner == null) {
Log.e("Converters", "Cannot find LifecycleOwner for view " + view);
return;
}
Observer<Boolean> observer = isVisible -> {
if (isVisible != null) {
view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
}
};
// Rimuovi l'observer precedente se il LiveData è cambiato
Object oldTag = view.getTag(R.id.bound_observable_visibility);
if (oldTag instanceof Pair) {
Pair<LiveData<Boolean>, Observer<Boolean>> pair = (Pair<LiveData<Boolean>, Observer<Boolean>>) oldTag;
if (pair.first != liveDataBoolean) {
pair.first.removeObserver(pair.second);
}
}
liveDataBoolean.observe(lifecycleOwner, observer);
view.setTag(R.id.bound_observable_visibility, new Pair<>(liveDataBoolean, observer));
// Imposta il valore iniziale
Boolean initialValue = liveDataBoolean.getValue();
if (initialValue != null) {
view.setVisibility(initialValue ? View.VISIBLE : View.GONE);
} else {
view.setVisibility(View.GONE);
}
}
@BindingAdapter("visibility")
public static void bindViewVisibility(View view, boolean bool) {
view.setVisibility(bool ? View.VISIBLE : View.GONE);
}
@BindingAdapter("visibilityWhenNotNull")
public static void bindViewVisibilityObservableFieldWhenNotNull(View view, ObservableField<?> bindableObject) {
if(bindableObject == null) return;
if (view.getTag(R.id.bound_observable_visibility) != bindableObject) {
view.setTag(R.id.bound_observable_visibility, bindableObject);
}
bindableObject.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableObject.get() == null ? View.GONE : View.VISIBLE);
}
});
view.setVisibility(bindableObject.get() == null ? View.GONE : View.VISIBLE);
}
@BindingAdapter("visibilityWhenNotNull")
public static void bindViewVisibilityLiveDataWhenNotNull(View view, LiveData<?> liveData) {
// Se il LiveData è null, nascondi la view e esci
if (liveData == null) {
view.setVisibility(View.GONE);
return;
}
// Ottieni il LifecycleOwner dalla view
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
if (lifecycleOwner == null) return;
// Rimuovi eventuali observer precedenti
Observer<Object> oldObserver = (Observer<Object>) view.getTag(R.id.bound_observable_visibility);
if (oldObserver != null) {
liveData.removeObserver(oldObserver);
}
// Crea e registra il nuovo observer
Observer<Object> newObserver = value ->
view.setVisibility(value == null ? View.GONE : View.VISIBLE);
liveData.observe(lifecycleOwner, newObserver);
view.setTag(R.id.bound_observable_visibility, newObserver);
// Imposta lo stato iniziale
view.setVisibility(liveData.getValue() == null ? View.GONE : View.VISIBLE);
}
@BindingAdapter("visibilityWhenNotNull")
public static void bindViewVisibilityWhenNotNull(View view, Object genericObject) {
view.setVisibility(genericObject == null ? View.GONE : View.VISIBLE);
}
@BindingAdapter("visibilityWhenNull")
public static void bindViewVisibilityObservableFieldWhenNull(View view, ObservableField<?> bindableObject) {
if (view.getTag(R.id.bound_observable_visibility) != bindableObject) {
view.setTag(R.id.bound_observable_visibility, bindableObject);
}
view.setVisibility(bindableObject == null || bindableObject.get() == null ? View.VISIBLE : View.GONE);
if(bindableObject == null) return;
bindableObject.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
view.setVisibility(bindableObject.get() == null ? View.VISIBLE : View.GONE);
}
});
}
@BindingAdapter("visibilityWhenNull")
public static void bindViewVisibilityLiveDataWhenNull(View view, LiveData<?> liveData) {
// Se il LiveData è null, nascondi la view e esci
if (liveData == null) {
view.setVisibility(View.VISIBLE);
return;
}
// Ottieni il LifecycleOwner dalla view
LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(view);
if (lifecycleOwner == null) return;
// Rimuovi eventuali observer precedenti
Observer<Object> oldObserver = (Observer<Object>) view.getTag(R.id.bound_observable_visibility);
if (oldObserver != null) {
liveData.removeObserver(oldObserver);
}
// Crea e registra il nuovo observer
Observer<Object> newObserver = value ->
view.setVisibility(value == null ? View.VISIBLE : View.GONE);
liveData.observe(lifecycleOwner, newObserver);
view.setTag(R.id.bound_observable_visibility, newObserver);
// Imposta lo stato iniziale
view.setVisibility(liveData.getValue() == null ? View.VISIBLE : View.GONE);
}
@BindingAdapter({"reverse_visibility"})
public static void bindViewReverseVisibility(View view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
if (view.getTag(R.id.bound_reverse_visibility) != bindableBoolean) {
view.setTag(R.id.bound_reverse_visibility, bindableBoolean);
}
bindableBoolean.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
@@ -761,4 +1199,64 @@ public class Converters {
view.setLayoutParams(layoutParams);
}
/**
* BindingAdapter per bindare una LocalDate diretta su una TextView con un formato specificato.
* Esempio di utilizzo in XML:
* app:localDateText="@{myLocalDate}" app:dateFormat="@{@string/my_date_format}"
*/
@BindingAdapter(value = {"localDateText", "dateFormat"}, requireAll = false)
public static void bindLocalDateText(TextView view, LocalDate date, String dateFormat) {
if (date == null) {
view.setText("");
return;
}
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
view.setText(date.format(formatter));
}
@BindingAdapter(value = {"localDateTimeText", "dateFormat"}, requireAll = false)
public static void bindLocalDateText(TextView view, LocalDateTime date, String dateFormat) {
if (date == null) {
view.setText("");
return;
}
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy hh:mm";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
view.setText(date.format(formatter));
}
/**
* BindingAdapter per bindare una ObservableField<LocalDate> su una TextView con un formato specificato.
* Esempio di utilizzo in XML:
* app:localDateObservableText="@{myObservableLocalDate}" app:dateFormat="@{@string/my_date_format}"
*/
@BindingAdapter(value = {"localDateObservableText", "dateFormat"}, requireAll = false)
public static void bindObservableLocalDateText(TextView view, ObservableField<LocalDate> observableDate, String dateFormat) {
if (observableDate == null) {
view.setText("");
return;
}
LocalDate date = observableDate.get();
if (date == null) {
view.setText("");
return;
}
String pattern = dateFormat != null ? dateFormat : "dd/MM/yyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
view.setText(date.format(formatter));
}
/**
* BindingAdapter che applica automaticamente il KeyListener localizzato
* ai campi con inputType numberDecimal, permettendo l'uso della virgola
* come separatore decimale in base al locale del dispositivo.
*/
@BindingAdapter("useLocaleDecimalInput")
public static void setLocaleDecimalInput(EditText view, boolean useLocaleInput) {
if (useLocaleInput) {
view.setKeyListener(LocaleDecimalKeyListener.getInstance());
}
}
}

View File

@@ -0,0 +1,119 @@
package it.integry.integrywmsnative.core.di;
import androidx.lifecycle.MutableLiveData;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
public class MutableListLiveData<T> extends MutableLiveData<List<T>> {
public MutableListLiveData() {
super(new ArrayList<>());
}
public MutableListLiveData(List<T> initialValue) {
super(initialValue);
}
public void add(T item, boolean immediateSet) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
newList.add(item);
if(immediateSet)
setValue(newList);
else postValue(newList);
}
public void add(T item) {
add(item, false);
}
public void add(int index, T item, boolean immediateSet) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
newList.add(index, item);
if(immediateSet)
setValue(newList);
else postValue(newList);
}
public void add(int index, T item) {
add(index, item, false);
}
public void remove(T item, boolean immediateSet) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
newList.remove(item);
if(immediateSet)
setValue(newList);
else postValue(newList);
}
public void remove(T item) {
remove(item, false);
}
public void update(Consumer<List<T>> updater) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
updater.accept(newList);
postValue(newList);
}
public void clear() {
List<T> newList = new ArrayList<>();
postValue(newList);
}
public void addAll(List<T> items) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
newList.addAll(items);
postValue(newList);
}
public MutableListLiveData<T> clone() {
MutableListLiveData<T> clone = new MutableListLiveData<>();
List<T> current = getValue();
if (current != null) {
clone.postValue(new ArrayList<>(current));
}
return clone;
}
public boolean isEmpty() {
List<T> current = getValue();
return current == null || current.isEmpty();
}
public T get(int index) {
List<T> current = getValue();
if (current != null && index >= 0 && index < current.size()) {
return current.get(index);
}
return null;
}
public int size() {
List<T> current = getValue();
return current != null ? current.size() : 0;
}
public java.util.stream.Stream<T> stream() {
List<T> current = getValue();
return current != null ? current.stream() : java.util.stream.Stream.empty();
}
public void removeAll(Collection<T> items) {
List<T> current = getValue();
List<T> newList = new ArrayList<>(current);
newList.removeAll(items);
postValue(newList);
}
}

View File

@@ -0,0 +1,84 @@
package it.integry.integrywmsnative.core.di;
import android.os.Handler;
import android.os.Looper;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
/**
* Classe che gestisce la serializzazione e deserializzazione di MutableListLiveData con Gson
*
* @param <T> tipo degli elementi nella lista
*/
public class MutableListLiveDataTypeAdapter<T> implements JsonSerializer<MutableListLiveData<T>>, JsonDeserializer<MutableListLiveData<T>> {
private final Handler handler = new Handler(Looper.getMainLooper());
/**
* Serializza un oggetto MutableListLiveData in un JsonElement
*/
@Override
public JsonElement serialize(MutableListLiveData<T> src, Type typeOfSrc, JsonSerializationContext context) {
// Ottiene la lista interna da MutableListLiveData e la serializza
List<T> list = src.getValue();
return context.serialize(list);
}
/**
* Deserializza un JsonElement in un oggetto MutableListLiveData
*/
@Override
public MutableListLiveData<T> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// Determina il tipo degli elementi nella lista
Type listType = getListType(typeOfT);
// Deserializza il JsonElement in una lista
List<T> list = context.deserialize(json, listType);
if (list == null) {
list = new ArrayList<>();
}
// Crea una nuova istanza di MutableListLiveData e aggiunge tutti gli elementi
MutableListLiveData<T> result = new MutableListLiveData<>(list);
return result;
}
/**
* Estrae il tipo della lista da un tipo parametrizzato di MutableListLiveData<T>
*/
private Type getListType(Type mutableListLiveDataType) {
if (mutableListLiveDataType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) mutableListLiveDataType;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
if (typeArguments.length > 0) {
// Crea un tipo di List<T> usando il parametro di tipo T
return TypeToken.getParameterized(List.class, typeArguments[0]).getType();
}
}
// Fallback per List<Object> se non riusciamo a determinare il tipo
return TypeToken.getParameterized(List.class, Object.class).getType();
}
/**
* Crea un'istanza del TypeAdapter per MutableListLiveData<T>
*
* @param elementType il tipo T degli elementi nella lista
* @return un'istanza del TypeAdapter
*/
public static <T> MutableListLiveDataTypeAdapter<T> create(Type elementType) {
return new MutableListLiveDataTypeAdapter<>();
}
}

View File

@@ -0,0 +1,87 @@
package it.integry.integrywmsnative.core.di;
import android.os.Handler;
import android.os.Looper;
import androidx.databinding.ObservableArrayList;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
/**
* Classe che gestisce la serializzazione e deserializzazione di MutableListLiveData con Gson
*
* @param <T> tipo degli elementi nella lista
*/
public class ObservableArrayListDataTypeAdapter<T> implements JsonSerializer<ObservableArrayList<T>>, JsonDeserializer<ObservableArrayList<T>> {
private final Handler handler = new Handler(Looper.getMainLooper());
/**
* Serializza un oggetto MutableListLiveData in un JsonElement
*/
@Override
public JsonElement serialize(ObservableArrayList<T> src, Type typeOfSrc, JsonSerializationContext context) {
// Ottiene la lista interna da MutableListLiveData e la serializza
ArrayList<T> list = new ArrayList<>(src);
return context.serialize(list);
}
/**
* Deserializza un JsonElement in un oggetto MutableListLiveData
*/
@Override
public ObservableArrayList<T> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// Determina il tipo degli elementi nella lista
Type listType = getListType(typeOfT);
// Deserializza il JsonElement in una lista
List<T> list = context.deserialize(json, listType);
if (list == null) {
list = new ArrayList<>();
}
// Crea una nuova istanza di MutableListLiveData e aggiunge tutti gli elementi
ObservableArrayList<T> result = new ObservableArrayList<>();
result.addAll(list);
return result;
}
/**
* Estrae il tipo della lista da un tipo parametrizzato di MutableListLiveData<T>
*/
private Type getListType(Type mutableListLiveDataType) {
if (mutableListLiveDataType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) mutableListLiveDataType;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
if (typeArguments.length > 0) {
// Crea un tipo di List<T> usando il parametro di tipo T
return TypeToken.getParameterized(List.class, typeArguments[0]).getType();
}
}
// Fallback per List<Object> se non riusciamo a determinare il tipo
return TypeToken.getParameterized(List.class, Object.class).getType();
}
/**
* Crea un'istanza del TypeAdapter per MutableListLiveData<T>
*
* @param elementType il tipo T degli elementi nella lista
* @return un'istanza del TypeAdapter
*/
public static <T> ObservableArrayListDataTypeAdapter<T> create(Type elementType) {
return new ObservableArrayListDataTypeAdapter<>();
}
}

View File

@@ -0,0 +1,65 @@
package it.integry.integrywmsnative.core.di;
import androidx.annotation.Nullable;
import androidx.databinding.BaseObservable;
import androidx.databinding.Bindable;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.core.di.validators.Validator;
public class ValidatableObservableField<T> extends BaseObservable {
private T mValue;
private final List<Validator<T>> validators = new ArrayList<>();
public String errorMessage;
public ValidatableObservableField() {
}
public ValidatableObservableField(T value) {
mValue = value;
}
/**
* @return the stored value.
*/
@Nullable
public T get() {
return mValue;
}
public void set(T value) {
if (value != mValue) {
mValue = value;
notifyChange();
validate();
}
}
public void addValidator(Validator<T> validator) {
validators.add(validator);
}
public boolean validate() {
for (Validator<T> validator : validators) {
if (!validator.isValid(mValue)) {
setErrorMessage(validator.getErrorMessage());
return false;
}
}
setErrorMessage(null);
return true;
}
@Bindable
public String getErrorMessage() {
return errorMessage;
}
private void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
notifyPropertyChanged(BR.errorMessage); // Notifica il cambiamento di errorMessage
}
}

View File

@@ -2,5 +2,25 @@ package it.integry.integrywmsnative.core.di.binders;
public class AutoCompleteTextViewBinders {
// @BindingAdapter("binding")
// public static void bindUntMisText(AppCompatAutoCompleteTextView view, ObservableField<MtbUntMis> untMisField) {
// Pair<ObservableField<MtbUntMis>, TextWatcherAdapter> pair = (Pair) view.getTag(R.id.bound_observable);
// if (pair == null || pair.first != untMisField) {
// if (pair != null) {
// view.removeTextChangedListener(pair.second);
// }
// TextWatcherAdapter watcher = new TextWatcherAdapter() {
// @Override
// public void onTextChanged(CharSequence s, int start, int before, int count) {
// if (untMisField != null) untMisField.set(s.toString());
// }
// };
// view.setTag(R.id.bound_observable, new Pair<>(untMisField, watcher));
// view.addTextChangedListener(watcher);
// }
// String newValue = untMisField != null && untMisField.get() != null ? Objects.requireNonNull(untMisField.get()).getUntMis() : "";
// if (!view.getText().toString().equals(newValue)) {
// view.setText(newValue);
// }
// }
}

View File

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.di.binders;
import androidx.databinding.BindingAdapter;
import com.google.android.material.textfield.TextInputLayout;
public class TextInputLayoutBinders {

View File

@@ -1,14 +1,15 @@
package it.integry.integrywmsnative.core.di.binders.recyclerview;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.databinding.ViewDataBinding;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.lang.ref.WeakReference;
import java.util.Collection;

View File

@@ -0,0 +1,23 @@
package it.integry.integrywmsnative.core.di.validators;
import java.math.BigDecimal;
public class GreaterThenValidator implements Validator<BigDecimal> {
private final String errorMessage;
private final BigDecimal greaterThanValue;
public GreaterThenValidator(BigDecimal greaterThanValue, String errorMessage) {
this.greaterThanValue = greaterThanValue;
this.errorMessage = errorMessage;
}
@Override
public boolean isValid(BigDecimal value) {
return value != null && value.compareTo(greaterThanValue) > 0;
}
@Override
public String getErrorMessage() {
return errorMessage;
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.integrywmsnative.core.di.validators;
public class MinLengthValidator implements Validator<String> {
private final int minLength;
private final String errorMessage;
public MinLengthValidator(int minLength, String errorMessage) {
this.minLength = minLength;
this.errorMessage = errorMessage;
}
@Override
public boolean isValid(String value) {
return value != null && value.length() >= minLength;
}
@Override
public String getErrorMessage() {
return errorMessage;
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.di.validators;
public class NotEmptyValidator implements Validator<String> {
private final String errorMessage;
public NotEmptyValidator(String errorMessage) {
this.errorMessage = errorMessage;
}
@Override
public boolean isValid(String value) {
return value != null && !value.trim().isEmpty();
}
@Override
public String getErrorMessage() {
return errorMessage;
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.integrywmsnative.core.di.validators;
public class NotNullValidator<T> implements Validator<T>{
private final String errorMessage;
public NotNullValidator(String errorMessage) {
this.errorMessage = errorMessage;
}
@Override
public boolean isValid(T value) {
return value != null;
}
@Override
public String getErrorMessage() {
return errorMessage;
}
}

View File

@@ -0,0 +1,7 @@
package it.integry.integrywmsnative.core.di.validators;
public interface Validator<T> {
boolean isValid(T value);
String getErrorMessage();
}

View File

@@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.diff;
import androidx.recyclerview.widget.DiffUtil;
import java.util.List;
import it.integry.integrywmsnative.core.model.MtbColr;
public class MtbColrDiffCallback extends DiffUtil.Callback {
private final List<MtbColr> oldList;
private final List<MtbColr> newList;
public MtbColrDiffCallback(List<MtbColr> oldList, List<MtbColr> newList) {
this.oldList = oldList;
this.newList = newList;
}
@Override
public int getOldListSize() {
return oldList.size();
}
@Override
public int getNewListSize() {
return newList.size();
}
@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
MtbColr oldItem = oldList.get(oldItemPosition);
MtbColr newItem = newList.get(newItemPosition);
return oldItem.getKey().equals(newItem.getKey()); // Placeholder, idealmente confrontare ID univoci
}
@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
// Assicurarsi che MtbColr.equals() confronti i contenuti rilevanti per la UI
return oldList.get(oldItemPosition).equals(newList.get(newItemPosition));
}
}

View File

@@ -0,0 +1,127 @@
package it.integry.integrywmsnative.core.ean128;
public enum Ean128AI {
NULL, //Valore nullo (usato solo in logica)
SSCC, //Numero sequenziale del collo n2+n18
GTIN, //Codice EAN/UCC unità logistica n2+n14
CONTENT, //Codice EAN/UCC dei prodotti contenuti all'interno di unità log n2+n14
BATCH_LOT, //Numero del lotto di fabbricazione n2+an.20
PROD_DATE, //Data di produzione (yymmdd) 0~50 (2000~2050) - 51~99 (1951~1999) n2+n6
DUE_DATE, //Data di scadenza pagamento fattura n2+n6
PACK_DATE, //Data di confezionamento n2+n6
BEST_BEFORE,//Data minima di validità n2+n6
EXPIRY, //Data massima di validità n2+n6
VARIANT, //Variante di prodotto - uso interno aziendale n2+n2
SERIAL, //Numero di serie n2+an.20
QTY_DATE_BATCH, //Dati supplementari per prodotti farmaceutici n2+an.29
ADDITIONAL_ID, //Numedi di identificazione supplementare del prodotto n3+an.30
CUST_PART_NO, //Codice prodotto interno del cliente n3+an.30
SECONDARY_SERIAL, //Numero di serie secondario n3+an.30
REF_TO_SOURCE, //Entità di origine o marca auricolare n3+an.30
VAR_COUNT, //Quantità variabile n2+n.8
//Misure commerciali e logistiche FORMATO: n4+n6
NET_WEIGHT_KG, //Peso netto in Kg
LENGTH_M, //Lunghezza o 1° dimensione, in mt, uso commerciale
WIDTH_M, //Larghezza, diametro o 2° dimensione, in mt, uso commerciale
HEIGHT_M, //Profondità, spessore, altezza o 3° dimensione, in mt, uso commerciale
AREA_M2, //Superficie, in metriquadri, uso commerciale
NET_VOLUME_L, //Volume, in litri, uso commerciale
NET_VOLUME_M3, //Volume, in metricubi, uso commerciale
NET_WEIGHT_LB, //Peso netto, in libbre, uso commerciale
LENGTH_I, //Lunghezza o 1° dimensione, in pollici, uso commerciale
LENGTH_F, //Lunghezza o 1° dimensione, in piedi, uso commerciale
LENGTH_Y, //Lunghezza o 1° dimensione, in yards, uso commerciale
WIDTH_I, //Larghezza, diametro o 2° dimensione, in pollici, uso commerciale
WIDTH_F, //Larghezza, diametro o 2° dimensione, in piedi, uso commerciale
WIDTH_Y, //Larghezza, diametro o 2° dimensione, in yards, uso commerciale
HEIGHT_I, //Profondità, spessore, altezza o 3° dimensione, in pollici, uso commerciale
HEIGHT_F, //Profondità, spessore, altezza o 3° dimensione, in piedi, uso commerciale
HEIGHT_Y, //Profondità, spessore, altezza o 3° dimensione, in yards, uso commerciale
CROSSWEIGHT_KG_LOG, //Peso lordo, in Kg, uso logistico
LENGTH_M_LOG, //Lunghezza o 1° dimensione, in metri, uso logistico
WIDTH_M_LOG, //Larghezza, diametro o 2° dimensione, in metri, uso logistico
HEIGHT_M_LOG, //Profondità, spessore, altezza o 3° dimensione, in metri, uso logistico
AREA_M2_LOG, //Superficie, in metriquadri, uso logistico
VOLUME_L_LOG, //Volume lordo, in litri, uso logistico
VOLUME_M3_LOG, //Volume lordo, in metricubi, uso logistico
CROSSWEIGHT_LB_LOG, //Peso lordo, in libbre, uso logistico
LENGTH_I_LOG, //Lunghezza o 1° dimensione, in pollici, uso logistico
LENGTH_F_LOG, //Lunghezza o 1° dimensione, in piedi, uso logistico
LENGTH_Y_LOG, //Lunghezza o 1° dimensione, in yards, uso logistico
WIDTH_I_LOG, //Larghezza, diametro o 2° dimensione, in pollici, uso logistico
WIDTH_F_LOG, //Larghezza, diametro o 2° dimensione, in piedi, uso logistico
WIDTH_Y_LOG, //Larghezza, diametro o 2° dimensione, in yards, uso logistico
HEIGHT_I_LOG, //Profondità, spessore, altezza o 3° dimensione, in pollici, uso logistico
HEIGHT_F_LOG, //Profondità, spessore, altezza o 3° dimensione, in piedi, uso logistico
HEIGHT_Y_LOG, //Profondità, spessore, altezza o 3° dimensione, in yards, uso logistico
AREA_I2, //Superficie, in pollici quadrati, uso commerciale
AREA_F2, //Superficie, in piedi quadrati, uso commerciale
AREA_Y2, //Superficie, in yards quadrati, uso commerciale
AREA_I2_LOG, //Superficie, in pollici quadrati, uso logistico
AREA_F2_LOG, //Superficie, in piedi quadrati, uso logistico
AREA_Y2_LOG, //Superficie, in yards quadrati, uso logistico
NET_WEIGHT_T, //Peso netto, in once troy, uso commerciale
NET_VOLUME_OZ, //Volume netto, in once (U.S.), uso commerciale
NET_VOLUME_LB, //Volume netto, in quarti di gallone, uso commerciale
NET_VOLUME_G, //Volume netto, in galloni (U.S.), uso commerciale
VOLUME_Q_LOG, //Volume lordo, in quarti di gallone, uso logistico
VOLUME_G_LOG, //Volume lordo, in galloni (U.S.), uso logistico
NET_VOLUME_I3, //Volume netto, in pollici cubi, uso commerciale
NET_VOLUME_F3, //Volume netto, in piedi cubi, uso commerciale
NET_VOLUME_Y3, //Volume netto, in yards cubi, uso commerciale
VOLUME_I3_LOG, //Volume lordo, in pollici cubi, uso logistico
VOLUME_F3_LOG, //Volume lordo, in piedi cubi, uso logistico
VOLUME_Y3_LOG, //Volume lordo, in yards cubi, uso logistico
COUNT, //Quantità prodotti contenuti in un'unità logistica
AMOUNT, //Importo da pagare singola area monetaria
AMOUNT_ISO, //Importo da pagare con codice valuta ISO
PRICE, //Importo da pagare singola unità monetaria (prodotti a peso variabile)
PRICE_ISO, //Importo da pagare con codice valuta ISO (prodotti a peso variabile)
ORDER_NUMBER, //Numero d'ordine d'acquisto cliente
CONSIGNMENT, //Numero di consegna
SHIPMENT_NO, //Numero di spedizione
ROUTE, //Codice di smistamento pacchi
SHIP_TO_LOC, //Codice di locazione EAN/UCC "Spedire a, Consegnare a"
BILL_TO_LOC, //Codice di locazione EAN/UCC "Fatturare a"
PURCHASE_FROM_LOC, //Codice di locazione EAN/UCC "Acquistato da"
SHIP_FOR_LOC, //Codice di locazione EAN/UCC "Sperdire per, Consegnare per, Inoltrare a"
LOC_NO, //Codice di locazione EAN/UCC: identificazione di una locazione fisica
PAY_TO_LOC, //Codice di locazione EAN/UCC di chi emette la fattura
SHIP_TO_POST, //Codice postale "Spedire a, Consegnare a" (nazionale)
SHIP_TO_POST_ISO, //Codice postale "Spedire a, Consegnare a" con codice nazione ISO
ORIGIN, //Paese di origine del prodotto
COUNTRY_INITIAL_PROCESS, //Paese di lavorazione iniziale del prodotto con codice nazionale ISO
COUNTRY_PROCESS, //Paese di lavorazione con codice nazionale ISO
COUNTRY_DISASSEMBLY, //Paese di scomposizione con codice nazionale ISO
COUNTRY_FULL_PROCESS,//Paese di lavorazione completa con codice nazionale ISO
NSN, //Numero di stock NATO
MEAT_CUT, //Carcasse animali e classificazione dei tagli UN/ECE
PROCESSORS, //Numero di approvazione del laboratorio di lavorazione intermedio con codice nazionale ISO
DIMENSIONS, //Prodotti in rotoli - larghezza, lunghezza, diametro interno, senso di svolgimento e giunte
CMT_NO, //Numero sequenziale elettronico per applicazioni di telefonia cellulare
GRAI, //Numero di identificazione per beni a rendere,
GIAI, //Numero di identificazione globale per beni individuali
PRICE_PER_UNIT, //Prezzo per unità di misura
GCTIN, //Identificazione dei componenti di un prodotto
IBAN, //Numero di contocorrente bancario internazionale
PROD_TIME, //Data e ora di produzione
GSRN, //Numedo Globale di Relazione di Servizio
REF_NO, //Numero del bollettino di pagamento
COUPON_1, //Codice esteso per i coupons, UCC
COUPON_2, //Codice esteso per i coupons, UCC
COUPON_3, //Codice esteso per i coupons, UCC
INTERNAL_PART, //Informazioni concordate tra i partners commerciali
INTERNAL_1, //Informazioni interne
INTERNAL_2, //Informazioni interne
INTERNAL_3, //Informazioni interne
INTERNAL_4, //Informazioni interne
INTERNAL_5, //Informazioni interne
INTERNAL_6, //Informazioni interne
INTERNAL_7, //Informazioni interne
INTERNAL_8, //Informazioni interne
INTERNAL_9, //Informazioni interne
}

View File

@@ -0,0 +1,40 @@
package it.integry.integrywmsnative.core.ean128;
public class Ean128AIModel implements Cloneable {
public Ean128AI AI;
public String code;
public int dataLength;
public boolean flagVariableLength;
public boolean flagOnlyNumeric;
public int decimalDigits;
public Ean128AIModel(Ean128AI AI, String code, int dataLength, boolean flagVariableLength, boolean flagOnlyNumeric, int decimalDigits) {
this.AI = AI;
this.code = code;
this.dataLength = dataLength;
this.flagVariableLength = flagVariableLength;
this.flagOnlyNumeric = flagOnlyNumeric;
this.decimalDigits = decimalDigits;
}
public Ean128AIModel(Ean128AI AI, String code, int dataLength, boolean flagVariableLength, boolean flagOnlyNumeric) {
this.AI = AI;
this.code = code;
this.dataLength = dataLength;
this.flagVariableLength = flagVariableLength;
this.flagOnlyNumeric = flagOnlyNumeric;
}
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

View File

@@ -0,0 +1,209 @@
package it.integry.integrywmsnative.core.ean128;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Ean128AIModelBij {
private final Ean128AIModel[] _aiModelArray = new Ean128AIModel[]{
new Ean128AIModel(Ean128AI.SSCC, "^00", 18, false, true),
new Ean128AIModel(Ean128AI.GTIN, "^01", 14, false, true),
new Ean128AIModel(Ean128AI.CONTENT, "^02", 14, false, true),
new Ean128AIModel(Ean128AI.BATCH_LOT, "^10", 20, true, false),
new Ean128AIModel(Ean128AI.PROD_DATE, "^11", 6, false, true),
new Ean128AIModel(Ean128AI.DUE_DATE, "^12", 6, false, true),
new Ean128AIModel(Ean128AI.PACK_DATE, "^13", 6, false, true),
new Ean128AIModel(Ean128AI.BEST_BEFORE, "^15", 6, false, true),
new Ean128AIModel(Ean128AI.EXPIRY, "^17", 6, false, true),
new Ean128AIModel(Ean128AI.VARIANT, "^20", 2, false, true),
new Ean128AIModel(Ean128AI.SERIAL, "^21", 20, true, false),
new Ean128AIModel(Ean128AI.QTY_DATE_BATCH, "^22", 29, true, false),
new Ean128AIModel(Ean128AI.ADDITIONAL_ID, "^240", 30, true, false),
new Ean128AIModel(Ean128AI.CUST_PART_NO, "^241", 30, true, false),
new Ean128AIModel(Ean128AI.SECONDARY_SERIAL, "^250", 30, true, false),
new Ean128AIModel(Ean128AI.REF_TO_SOURCE, "^251", 30, true, false),
new Ean128AIModel(Ean128AI.VAR_COUNT, "^30", 8, true, true),
new Ean128AIModel(Ean128AI.NET_WEIGHT_KG, "^310(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_M, "^311(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_M, "^312(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_M, "^313(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_M2, "^314(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_L, "^315(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_M3, "^316(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_WEIGHT_LB, "^320(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_I, "^321(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_F, "^322(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_Y, "^323(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_I, "^324(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_F, "^325(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_Y, "^326(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_I, "^327(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_F, "^328(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_Y, "^329(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.CROSSWEIGHT_KG_LOG, "^330(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_M_LOG, "^331(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_M_LOG, "^332(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_M_LOG, "^333(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_M2_LOG, "^334(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_L_LOG, "^335(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_M3_LOG, "^336(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.CROSSWEIGHT_LB_LOG, "^340(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_I_LOG, "^341(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_F_LOG, "^342(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.LENGTH_Y_LOG, "^343(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_I_LOG, "^344(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_F_LOG, "^345(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.WIDTH_Y_LOG, "^346(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_I_LOG, "^347(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_F_LOG, "^348(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.HEIGHT_Y_LOG, "^349(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_I2, "^350(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_F2, "^351(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_Y2, "^352(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_I2_LOG, "^353(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_F2_LOG, "^354(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.AREA_Y2_LOG, "^355(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_WEIGHT_T, "^356(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_OZ, "^357(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_LB, "^360(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_G, "^361(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_Q_LOG, "^362(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_G_LOG, "^363(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_I3, "^364(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_F3, "^365(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.NET_VOLUME_Y3, "^366(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_I3_LOG, "^367(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_F3_LOG, "^368(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.VOLUME_Y3_LOG, "^369(\\d{1})", 6, false, true),
new Ean128AIModel(Ean128AI.COUNT, "^37", 8, true, true),
new Ean128AIModel(Ean128AI.AMOUNT, "^390(\\d{1})", 15, true, true),
new Ean128AIModel(Ean128AI.AMOUNT_ISO, "^391(\\d{1})", 18, true, true),
new Ean128AIModel(Ean128AI.PRICE, "^392(\\d{1})", 15, true, true),
new Ean128AIModel(Ean128AI.PRICE_ISO, "^393(\\d{1})", 18, true, true),
new Ean128AIModel(Ean128AI.ORDER_NUMBER, "^400", 30, true, false),
new Ean128AIModel(Ean128AI.CONSIGNMENT, "^401", 30, true, false),
new Ean128AIModel(Ean128AI.SHIPMENT_NO, "^402", 17, false, true),
new Ean128AIModel(Ean128AI.ROUTE, "^403", 30, true, false),
new Ean128AIModel(Ean128AI.SHIP_TO_LOC, "^410", 13, false, true),
new Ean128AIModel(Ean128AI.BILL_TO_LOC, "^411", 13, false, true),
new Ean128AIModel(Ean128AI.PURCHASE_FROM_LOC, "^412", 13, false, true),
new Ean128AIModel(Ean128AI.SHIP_FOR_LOC, "^413", 13, false, true),
new Ean128AIModel(Ean128AI.LOC_NO, "^414", 13, false, true),
new Ean128AIModel(Ean128AI.PAY_TO_LOC, "^415", 13, false, true),
new Ean128AIModel(Ean128AI.SHIP_TO_POST, "^420", 20, true, false),
new Ean128AIModel(Ean128AI.SHIP_TO_POST_ISO, "^421", 12, true, false),
new Ean128AIModel(Ean128AI.ORIGIN, "^422", 3, false, true),
new Ean128AIModel(Ean128AI.COUNTRY_INITIAL_PROCESS, "^423", 15, true, true),
new Ean128AIModel(Ean128AI.COUNTRY_PROCESS, "^424", 3, false, true),
new Ean128AIModel(Ean128AI.COUNTRY_DISASSEMBLY, "^425", 3, false, true),
new Ean128AIModel(Ean128AI.COUNTRY_FULL_PROCESS, "^426", 3, false, true),
new Ean128AIModel(Ean128AI.NSN, "^7001", 13, false, true),
new Ean128AIModel(Ean128AI.MEAT_CUT, "^7002", 30, true, false),
new Ean128AIModel(Ean128AI.DIMENSIONS, "^8001", 14, false, true),
new Ean128AIModel(Ean128AI.CMT_NO, "^8002", 20, true, false),
new Ean128AIModel(Ean128AI.GRAI, "^8003", 30, true, false),
new Ean128AIModel(Ean128AI.GIAI, "^8004", 30, true, false),
new Ean128AIModel(Ean128AI.PRICE_PER_UNIT, "^8005", 6, false, true),
new Ean128AIModel(Ean128AI.GCTIN, "^8006", 18, false, false),
new Ean128AIModel(Ean128AI.IBAN, "^8007", 30, true, false),
new Ean128AIModel(Ean128AI.PROD_TIME, "^8008", 12, true, true),
new Ean128AIModel(Ean128AI.GSRN, "^8018", 18, false, true),
new Ean128AIModel(Ean128AI.REF_NO, "^8020", 25, true, false),
new Ean128AIModel(Ean128AI.COUPON_1, "^8100", 6, false, true),
new Ean128AIModel(Ean128AI.COUPON_2, "^8101", 10, false, true),
new Ean128AIModel(Ean128AI.COUPON_3, "^8102", 2, false, true),
new Ean128AIModel(Ean128AI.INTERNAL_PART, "^90", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_1, "^91", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_2, "^92", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_3, "^93", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_4, "^94", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_5, "^95", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_6, "^96", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_7, "^97", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_8, "^98", 30, true, false),
new Ean128AIModel(Ean128AI.INTERNAL_9, "^99", 30, true, false)
};
public int checkAI(String aiToCheck) {
int count = -1;
if (aiToCheck.length() > 1) {
for (int i = 0; i < _aiModelArray.length; i++) {
final String groupSeparatorCharInHexForRegex = "\\x1D";
String codePattern = "";
if (aiToCheck.charAt(0) == (char) 29) {
codePattern += groupSeparatorCharInHexForRegex;
}
codePattern += _aiModelArray[i].code;
Pattern pattern = Pattern.compile(codePattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(aiToCheck);
if (matcher.find()) {
count = i;
MatchResult matchResult = matcher.toMatchResult();
if (matchResult.groupCount() >= 1) {
String digitsString = matchResult.group(1);
_aiModelArray[i].decimalDigits = Integer.parseInt(digitsString);
}
break;
}
}
}
return count;
}
public Ean128AIModel readAI(String aiToSearch) {
Ean128AIModel barcodeAIModel = null;
for (Ean128AIModel singleBarcodeAIModel : _aiModelArray) {
final String groupSeparatorCharInHexForRegex = "\\x1D";
String codePattern = "";
if (aiToSearch.charAt(0) == (char) 29) {
codePattern += groupSeparatorCharInHexForRegex;
}
codePattern += singleBarcodeAIModel.code;
Pattern pattern = Pattern.compile(codePattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(aiToSearch);
if (matcher.matches()) {
try {
barcodeAIModel = (Ean128AIModel) singleBarcodeAIModel.clone();
MatchResult matchResult = matcher.toMatchResult();
if (matchResult.groupCount() > 1) {
String digitsString = matchResult.group(1);
barcodeAIModel.decimalDigits = Integer.parseInt(digitsString);
}
break;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
return barcodeAIModel;
}
public Ean128AIModel getAI(int index) {
return _aiModelArray[index];
}
}

View File

@@ -0,0 +1,8 @@
package it.integry.integrywmsnative.core.ean128;
public class Ean128ISOValueModel<T> {
public String ISOCode;
public T Value;
}

View File

@@ -0,0 +1,328 @@
package it.integry.integrywmsnative.core.ean128;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.base.Callable;
import it.integry.integrywmsnative.core.base.CallableII;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class Ean128Service {
public Ean128Model decode(BarcodeScanDTO barcodeScanDTO) throws Exception {
byte[] inputEan128ByteArr = barcodeScanDTO.getStringValue().replaceAll("" + ((char) 29), "|").getBytes();
Ean128AIModelBij ean128AIModelBij = new Ean128AIModelBij();
String aiCodeBuffer = "";
Ean128Model model = new Ean128Model();
for (int i = 0; i < inputEan128ByteArr.length; i++) {
aiCodeBuffer += (char) inputEan128ByteArr[i];
if (aiCodeBuffer.startsWith("|")) {
aiCodeBuffer = aiCodeBuffer.substring(1);
}
if (aiCodeBuffer.length() <= 5) {
int aiIndex = ean128AIModelBij.checkAI(aiCodeBuffer);
if (aiIndex != -1) {
Ean128AIModel aiModel = ean128AIModelBij.getAI(aiIndex);
StringBuilder aiValue = new StringBuilder();
if (!aiModel.flagVariableLength) {
for (int j = (i + 1); j < (i + 1) + aiModel.dataLength; j++) {
aiValue.append((char) inputEan128ByteArr[j]);
}
//aiValue = barcodeAsString.Substring(i + 1, aiModel.DataLength);
i += aiModel.dataLength;
} else {
String tempBuffer = "";
i++;
while (i < inputEan128ByteArr.length && i < (aiModel.dataLength + i)) {
byte currentChar = inputEan128ByteArr[i];
if (currentChar != 29 && currentChar != '|') { //Controllo carattere FNC1
tempBuffer += (char) currentChar;
} else {
break;
}
i++;
}
aiValue = new StringBuilder(tempBuffer.replace("\r", "").replace("\n", ""));
}
switch (aiModel.AI) {
case SSCC -> {
model.Sscc = aiValue.toString();
}
case GTIN -> {
if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
aiValue = new StringBuilder(aiValue.substring(1));
}
model.Gtin = aiValue.toString();
}
case CONTENT -> {
if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
aiValue = new StringBuilder(aiValue.substring(1));
}
model.Content = aiValue.toString();
}
case BATCH_LOT -> model.BatchLot = aiValue.toString();
case PROD_DATE -> model.ProdDate = convertToDateTime(aiValue.toString());
case DUE_DATE -> model.DueDate = convertToDateTime(aiValue.toString());
case PACK_DATE -> model.PackDate = convertToDateTime(aiValue.toString());
case BEST_BEFORE ->
model.BestBefore = UtilityDate.formatDate(convertToDateTime(aiValue.toString()), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
case EXPIRY -> model.Expiry = UtilityDate.formatDate(convertToDateTime(aiValue.toString()), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
case VARIANT -> model.Variant = aiValue.toString();
case SERIAL -> model.Serial = aiValue.toString();
case QTY_DATE_BATCH -> model.QtyDateBatch = aiValue.toString();
case ADDITIONAL_ID -> model.AdditionalID = aiValue.toString();
case CUST_PART_NO -> model.CustPartNumber = aiValue.toString();
case SECONDARY_SERIAL -> model.SecondarySerial = aiValue.toString();
case REF_TO_SOURCE -> model.RefToSource = aiValue.toString();
case VAR_COUNT -> model.VarCount = aiValue.toString();
case NET_WEIGHT_KG ->
model.NetWeightKg = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_M ->
model.LengthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_M ->
model.WidthM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_M ->
model.HeightM = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_M2 ->
model.AreaM2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_L ->
model.NetVolumeL = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_M3 ->
model.NetVolumeM3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_WEIGHT_LB ->
model.NetWeightLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_I ->
model.LengthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_F ->
model.LengthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_Y ->
model.LengthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_I ->
model.WidthI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_F ->
model.WidthF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_Y ->
model.WidthY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_I ->
model.HeightI = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_F ->
model.HeightF = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_Y ->
model.HeightY = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case CROSSWEIGHT_KG_LOG ->
model.CrossweightKgLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case CROSSWEIGHT_LB_LOG ->
model.CrossweightLbLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_M_LOG ->
model.LengthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_M_LOG ->
model.WidthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_M_LOG ->
model.HeigthMLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_M2_LOG ->
model.AreaM2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_L_LOG ->
model.VolumeLLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_M3_LOG ->
model.VolumeM3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_I_LOG ->
model.LengthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_F_LOG ->
model.LengthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case LENGTH_Y_LOG ->
model.LengthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_I_LOG ->
model.WidthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_F_LOG ->
model.WidthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case WIDTH_Y_LOG ->
model.WidthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_I_LOG ->
model.HeigthILog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_F_LOG ->
model.HeigthFLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case HEIGHT_Y_LOG ->
model.HeigthYLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_I2 ->
model.AreaI2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_F2 ->
model.AreaF2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_Y2 ->
model.AreaY2 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_I2_LOG ->
model.AreaI2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_F2_LOG ->
model.AreaF2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AREA_Y2_LOG ->
model.AreaY2Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_WEIGHT_T ->
model.NetWeightT = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_OZ ->
model.NetVolumeOz = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_LB ->
model.NetVolumeLb = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_G ->
model.NetVolumeG = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_Q_LOG ->
model.VolumeQLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_G_LOG ->
model.VolumeGLog = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_I3 ->
model.NetVolumeI3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_F3 ->
model.NetVolumeF3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case NET_VOLUME_Y3 ->
model.NetVolumeY3 = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_I3_LOG ->
model.VolumeI3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_F3_LOG ->
model.VolumeF3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case VOLUME_Y3_LOG ->
model.VolumeY3Log = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case COUNT -> model.Count = Integer.parseInt(aiValue.toString());
case AMOUNT ->
model.Amount = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case AMOUNT_ISO ->
model.AmountISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits,
Double::parseDouble,
(input, input2) -> String.valueOf(convertToDecimalString(input, input2)));
case PRICE ->
model.Price = convertToDecimalString(aiValue.toString(), aiModel.decimalDigits);
case PRICE_ISO ->
model.PriceISO = convertToIsoValueModel(aiValue.toString(), aiModel.decimalDigits,
Double::parseDouble,
(input, input2) -> String.valueOf(convertToDecimalString(input, input2)));
case ORDER_NUMBER -> model.OrderNumber = aiValue.toString();
case CONSIGNMENT -> model.Consignment = aiValue.toString();
case SHIPMENT_NO -> model.ShipmentNo = aiValue.toString();
case ROUTE -> model.Route = aiValue.toString();
case SHIP_TO_LOC -> model.ShipToLoc = aiValue.toString();
case BILL_TO_LOC -> model.BillToLoc = aiValue.toString();
case PURCHASE_FROM_LOC -> model.PurchaseFromLoc = aiValue.toString();
case SHIP_FOR_LOC -> model.ShipForLoc = aiValue.toString();
case LOC_NO -> model.LocationNumber = aiValue.toString();
case PAY_TO_LOC -> model.PayToLoc = aiValue.toString();
case SHIP_TO_POST -> model.ShipToPost = aiValue.toString();
case SHIP_TO_POST_ISO ->
model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0,
new Callable<>() {
@Override
public String call(String input) {
return input;
}
},
new CallableII<>() {
@Override
public String call(String input, Integer input2) {
return input;
}
});
case ORIGIN -> model.Origin = aiValue.toString();
case COUNTRY_INITIAL_PROCESS ->
model.ShipToPostISO = convertToIsoValueModel(aiValue.toString(), 0,
input -> input,
(input, input2) -> input);
case COUNTRY_PROCESS -> model.CountryProcess = aiValue.toString();
case COUNTRY_DISASSEMBLY -> model.CountryDisassembly = aiValue.toString();
case COUNTRY_FULL_PROCESS -> model.CountryFullProcess = aiValue.toString();
case NSN -> model.NSN = aiValue.toString();
case MEAT_CUT -> model.MeatCut = aiValue.toString();
case DIMENSIONS -> model.Dimensions = aiValue.toString();
case CMT_NO -> model.CmtNo = aiValue.toString();
case GRAI -> model.Grai = aiValue.toString();
case GIAI -> model.Giai = aiValue.toString();
case PRICE_PER_UNIT -> model.PricePerUnit = aiValue.toString();
case GCTIN -> model.Gctin = aiValue.toString();
case IBAN -> model.Iban = aiValue.toString();
case PROD_TIME -> model.ProdTime = convertToDateTime(aiValue.toString());
case GSRN -> model.Gsrn = aiValue.toString();
case REF_NO -> model.RefNo = aiValue.toString();
case COUPON_1 -> model.Coupon1 = aiValue.toString();
case COUPON_2 -> model.Coupon2 = aiValue.toString();
case COUPON_3 -> model.Coupon3 = aiValue.toString();
case INTERNAL_PART -> model.InternalPart = aiValue.toString();
case INTERNAL_1 -> model.Internal1 = aiValue.toString();
case INTERNAL_2 -> model.Internal2 = aiValue.toString();
case INTERNAL_3 -> model.Internal3 = aiValue.toString();
case INTERNAL_4 -> model.Internal4 = aiValue.toString();
case INTERNAL_5 -> model.Internal5 = aiValue.toString();
case INTERNAL_6 -> model.Internal6 = aiValue.toString();
case INTERNAL_7 -> model.Internal7 = aiValue.toString();
case INTERNAL_8 -> model.Internal8 = aiValue.toString();
case INTERNAL_9 -> model.Internal9 = aiValue.toString();
default -> {
}
}
aiCodeBuffer = "";
}
} else {
throw new Exception(String.format("Il barcode non è un EAN128 valido (%s)", new String(inputEan128ByteArr)));
}
}
return model;
}
private float convertToDecimalString(String sourceString, int numberOfdecimalDigits) {
int divider = (int) Math.pow(10, numberOfdecimalDigits);
return Float.parseFloat(sourceString) / divider;
}
private <T> Ean128ISOValueModel<T> convertToIsoValueModel(String sourceString, int numberOfDecimalDigits, Callable<String, T> castFunc, CallableII<String, Integer, String> splitFunc) {
String isoCode = sourceString.substring(0, 3);
T value = castFunc.call(splitFunc.call(sourceString.substring(3), numberOfDecimalDigits));
Ean128ISOValueModel<T> isoModel = new Ean128ISOValueModel<>();
isoModel.ISOCode = isoCode;
isoModel.Value = value;
return isoModel;
}
private Date convertToDateTime(String sourceString) {
int year = Integer.parseInt(sourceString.substring(0, 2));
//Se l'anno è minore di 50 indica 2000-2050 altrimenti 1951-1999
int correctedYear = year <= 50 ? (2000 + year) : (1900 + year);
int month = Integer.parseInt(sourceString.substring(2, 4));
int day = Integer.parseInt(sourceString.substring(4, 6));
Date d = null;
try {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
d = formatter.parse(day + "/" + month + "/" + correctedYear);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
}

View File

@@ -0,0 +1,4 @@
package it.integry.integrywmsnative.core.event;
public class SessionExpiredEvent {
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.core.rest.model.giacenza.GetColloInGiacResponseDTO;
public class AnomaliaUlException extends RuntimeException {
public AnomaliaUlException(GetColloInGiacResponseDTO colloInGiac) {
super(String.format("%s: %s", colloInGiac.getDescrizioneLivelloAnomalia(), colloInGiac.getDescrizioneAnomalia()));
}
}

View File

@@ -0,0 +1,8 @@
package it.integry.integrywmsnative.core.exception;
public class InvalidCodMdepBarcodeException extends RuntimeException {
public InvalidCodMdepBarcodeException(String message) {
super("Il deposito scansionato non è valido: " + message);
}
}

View File

@@ -0,0 +1,16 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class InvalidCodMdepException extends Exception {
public InvalidCodMdepException() {
super(UtilityResources.getString(R.string.invalid_codmdep_error_message));
}
public InvalidCodMdepException(String codMdep) {
super(UtilityResources.getString(R.string.invalid_codmdep_error_message) + "(" + codMdep + ")");
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class InvalidLineaProdBarcodeException extends Exception {
public InvalidLineaProdBarcodeException() {
super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode));
}
public InvalidLineaProdBarcodeException(String barcode) {
super(UtilityResources.getString(R.string.no_result_from_linea_prod_barcode) + " (" + barcode + ")");
}
}

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.exception;
public final class InvalidPositionException extends Exception {
public InvalidPositionException() {
super("La posizione scansionata non è valida");
}
public InvalidPositionException(String message) {
super("La posizione scansionata non è valida: " + message);
}
}

View File

@@ -0,0 +1,11 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class NoOrdersScheduledException extends Exception {
public NoOrdersScheduledException() {
super(UtilityResources.getString(R.string.no_orders_scheduled));
}
}

View File

@@ -0,0 +1,7 @@
package it.integry.integrywmsnative.core.exception;
public class UnauthorizedAccessException extends Exception {
public UnauthorizedAccessException() {
super("Accesso non autorizzato. Si prega di effettuare nuovamente l'accesso e riprovare");
}
}

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