Compare commits

...

474 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
87b45c6c27 Aggiunti controlli per trasferimento già chiuso 2025-07-10 19:11:42 +02:00
805e939c43 Aggiunta stampa documento in trasferimento pedane 2025-07-10 18:23:47 +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
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
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
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
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
4d81b24fd4 Refactoring thread rettifica giacenze 2025-06-24 12:21:23 +02:00
a20470c0f9 Fix close LU su main thread accettazione 2025-06-23 15:32:05 +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
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
3ade0879f5 Abilitato minify in release 2025-06-20 12:18:20 +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
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
a41c09e980 Aggiunto minify 2025-06-17 18:20:42 +02:00
3dcfe4773c Aggiornato Jenkinsfile 2025-06-17 18:14:04 +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
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
04071f3bad Aggiornata gestione Rientro Merce per supportare la nuova logica dei colli 2025-06-10 12:22:23 +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
afd7ae25f3 Allineata UI di qta_layout. Aggiunti @SerializedName su altri DTO. 2025-06-06 17:42:22 +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
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
417172b31c Vario 2025-06-03 11:47:59 +02:00
bae4d1acac Aggiornato servizio ProdRecuperoMaterialeRESTConsumer 2025-06-03 11:45:25 +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
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
f759b20f96 Aggiornato Jenkinsfile 2025-05-30 17:52:57 +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
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
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
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
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
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
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
20783026b8 Fix null pointer vari 2025-05-26 18:19:30 +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
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
525570d918 Implementata scansione commessa nel dialog di richiesta commessa 2025-05-19 11:06:22 +02:00
7a99df44c9 Fix vari 2025-05-16 18:13:08 +02:00
67936a3787 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-15 18:31:12 +02:00
aeadea42e1 Finish v1.46.13(501) 2025-05-15 18:30:56 +02:00
9bf0dacda6 Fix vari in accettazione da ordine 2025-05-15 18:28:37 +02:00
f4c64e5f04 Fix main thread in accettazione ordini 2025-05-15 11:11:45 +02:00
a8674cb31e Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-14 12:05:51 +02:00
d9070ee5fb Fix su rettifica giacenze 2025-05-14 12:04:28 +02:00
168c4e4fb7 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-12 19:13:33 +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
ed5c6c6b2f Merge branch 'develop' into feature/RefactoringGestioneColli 2025-05-05 17:00:55 +02:00
9c6c17ffa3 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-16 10:37:01 +02:00
1fe4437163 Fix nel ricaricamento dei riferimenti in modifica riga di picking libero 2025-04-10 20:09:01 +02:00
17b0454f8b Fix vari 2025-04-10 17:01:43 +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
5e00329292 Merge branch 'develop' into feature/RefactoringGestioneColli 2025-04-09 14:53:37 +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
5481e25483 Merge branch 'develop' into feature/RefactoringGestioneColli
# Conflicts:
#	app/build.gradle
2025-04-08 15:56: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
724a63acc1 Unificato layout di contenuto UL 2025-04-07 11:58:24 +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
724 changed files with 28371 additions and 12672 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

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>

View File

@@ -4,10 +4,10 @@
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-05-14T09:45:15.341614500Z">
<DropdownSelection timestamp="2025-06-10T08:33:51.753564600Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="PhysicalDevice" identifier="serial=23324B682F" />
<DeviceId pluginId="PhysicalDevice" identifier="serial=21088B8EFD" />
</handle>
</Target>
</DropdownSelection>

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

@@ -1,20 +1,21 @@
#set( $regex = "([a-z])([A-Z]+)")
#set( $replacement = "$1_$2")
#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LifecycleOwner;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.BaseMaterialAlertDialogBuilder;
public class Dialog${NAME}View extends BaseDialogFragment {
public class Dialog${NAME}View extends BaseMaterialAlertDialogBuilder implements DialogInterface.OnShowListener, DialogInterface.OnDismissListener {
/*
Create the following layout resource file [dialog_${dashName}.xml]
@@ -78,54 +79,112 @@ Create the following layout resource file [dialog_${dashName}.xml]
private Context mContext;
//Pass here all external parameters
public static Dialog${NAME}View newInstance() {
return new Dialog${NAME}View();
public static Dialog${NAME}View newInstance(@NonNull Context context) {
return new Dialog${NAME}View(context);
}
private Dialog${NAME}View() {
super();
/*
- 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 Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.mContext = requireContext();
//mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
//mBindings.setLifecycleOwner(this);
/*
- Add following lines into MainApplicationComponent
[a] into @Component
Dialog${NAME}Module.class
[b] into interface body
Dialog${NAME}Component.Factory dialog${NAME}Component();
*/
setCancelable(false);
var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
.setView(mBindings.getRoot())
.setCancelable(isCancelable())
.create();
alertDialog.setCanceledOnTouchOutside(isCancelable());
public AlertDialog create() {
AlertDialog alertDialog = super.create();
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setOnShowListener(this);
alertDialog.setOnDismissListener(this);
return alertDialog;
}
@Override
public void dismiss() {
if(getDialog() != null) getDialog().dismiss();
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

@@ -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="" />
<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" />
@@ -59,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

@@ -8,10 +8,11 @@ apply plugin: 'com.google.firebase.crashlytics'
//apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 501
def appVersionName = '1.46.13'
def appVersionCode = 553
def appVersionName = '1.50.04'
signingConfigs {
release {
@@ -34,7 +35,7 @@ android {
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
targetSdkVersion 35
targetSdk 36
versionCode appVersionCode
versionName appVersionName
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -51,11 +52,18 @@ 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
}
}
}
@@ -74,12 +82,7 @@ android {
}
build {
doLast {
delete "$projectDir/build/outputs/apk/release/version.txt"
file("$projectDir/build/outputs/apk/release/version.txt").text = appVersionCode + '\n' + appVersionName + '\n' + 'forced=true'
}
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile.class).tap {
@@ -92,7 +95,7 @@ android {
abortOnError false
}
namespace 'it.integry.integrywmsnative'
compileSdk 35
compileSdk 36
}
configurations {
@@ -107,30 +110,27 @@ dependencies {
// 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:33.13.0')
implementation platform('com.google.firebase:firebase-bom:33.16.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf'
implementation 'com.google.android.gms:play-services-basement:18.7.0'
implementation 'com.google.android.gms:play-services-basement:18.7.1'
//JJWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
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 'com.google.guava:guava:33.4.0-android'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
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.4.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation('androidx.preference:preference-ktx:1.2.1') {
exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel'
@@ -138,19 +138,18 @@ 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:2.9.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.55'
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"
@@ -162,7 +161,7 @@ dependencies {
implementation 'com.github.pedromassango:doubleClick:3.0'
//SQLite ROOM
def room_version = "2.7.1"
def room_version = "2.7.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
@@ -188,14 +187,13 @@ dependencies {
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 'org.greenrobot:eventbus:3.3.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
//Barcode generator
// implementation group: 'com.google.zxing', name: 'core', version: '3.5.3'
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
implementation("org.javatuples:javatuples:1.2")
}
repositories {
@@ -203,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

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" />
@@ -56,7 +59,6 @@
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.CLIENTBARCODEACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
@@ -81,6 +83,12 @@
android:windowSoftInputMode="adjustNothing"
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" />

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;
@@ -103,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;
@@ -118,6 +129,8 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.DialogAskClienteModu
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;
@@ -142,6 +155,8 @@ import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBat
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotModule;
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtComponent;
import it.integry.integrywmsnative.view.dialogs.create_new_art.DialogCreateNewArtModule;
import it.integry.integrywmsnative.view.dialogs.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;
@@ -160,6 +175,8 @@ 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;
@@ -251,7 +268,16 @@ import it.integry.integrywmsnative.view.dialogs.update_available.DialogUpdateAva
VerificaGiacenzeModule.class,
DialogExtraInfoModule.class,
DialogAskDepositoModule.class,
DialogChooseArtFromListaArtsModule.class
DialogChooseArtFromListaArtsModule.class,
DialogUltimeConsegneFiltroAvanzatoModule.class,
DialogUltimiArriviFornitoreFiltroAvanzatoModule.class,
DialogSelectPositionOfLuModule.class,
TrasferimentoPedaneModule.class,
DialogAskInfoTrasferimentoModule.class,
TrasferimentoPedaneEditModule.class,
DialogTrasferimentoPedaneConfirmExportModule.class,
DialogChooseArtFromListaArtsModule.class,
DialogDeviceEndOfLifeModule.class
})
public interface MainApplicationComponent {
@@ -261,6 +287,8 @@ public interface MainApplicationComponent {
BaseDialogFragmentComponent.Factory baseDialogFragmentComponent();
BaseMaterialAlertDialogBuilderComponent.Factory baseMaterialAlertDialogComponent();
SplashActivityComponent.Factory splashActivityComponent();
LoginComponent.Factory loginActivityComponent();
@@ -422,6 +450,22 @@ public interface MainApplicationComponent {
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

@@ -56,7 +56,6 @@ 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.login.rest.AuthenticationRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@@ -200,8 +199,8 @@ public class MainApplicationModule {
@Provides
@Singleton
MesRESTConsumer provideMesRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
return new MesRESTConsumer(restBuilder, systemRESTConsumer);
MesRESTConsumer provideMesRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
return new MesRESTConsumer(executorService, restBuilder, systemRESTConsumer);
}
@Provides
@@ -241,8 +240,8 @@ public class MainApplicationModule {
@Provides
@Singleton
PrinterRESTConsumer providePrinterRESTConsumer(RESTBuilder restBuilder) {
return new PrinterRESTConsumer(restBuilder);
PrinterRESTConsumer providePrinterRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new PrinterRESTConsumer(executorService, restBuilder);
}
@Provides
@@ -263,12 +262,6 @@ public class MainApplicationModule {
return new PosizioniRESTConsumer(restBuilder, systemRESTConsumer, executorService);
}
@Provides
@Singleton
ProdFabbisognoLineeProdRESTConsumer providesProdFabbisognoLineeProdRESTConsumer(RESTBuilder restBuilder, SystemRESTConsumer systemRESTConsumer) {
return new ProdFabbisognoLineeProdRESTConsumer(restBuilder, systemRESTConsumer);
}
@Provides
@Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer(RESTBuilder restBuilder, MagazzinoRESTConsumer magazzinoRESTConsumer) {
@@ -283,8 +276,8 @@ public class MainApplicationModule {
@Provides
@Singleton
GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new GiacenzaPvRESTConsumer(restBuilder, executorService);
GiacenzaPvRESTConsumer provideGiacenzaPvRESTConsumer(RESTBuilder restBuilder) {
return new GiacenzaPvRESTConsumer(restBuilder);
}
@Provides
@@ -313,14 +306,14 @@ public class MainApplicationModule {
@Provides
@Singleton
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder) {
return new DocumentRESTConsumer(restBuilder);
DocumentRESTConsumer provideDocumentiRESTConsumer(RESTBuilder restBuilder, ExecutorService executorService) {
return new DocumentRESTConsumer(restBuilder, executorService);
}
@Provides
@Singleton
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(RESTBuilder restBuilder) {
return new ColliAccettazioneRESTConsumer(restBuilder);
ColliAccettazioneRESTConsumer provideColliAccettazioneRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
return new ColliAccettazioneRESTConsumer(executorService, restBuilder);
}
@Provides

View File

@@ -4,6 +4,7 @@ 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;
@@ -12,8 +13,10 @@ 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;
@@ -27,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 {
@@ -65,9 +69,24 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
UtilityContext.initMainActivity(this);
LocalDate endSupportDate = LocalDate.of(2026, 1, 31);
initAppVersion();
initPermissions(this::init);
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() {
@@ -105,6 +124,21 @@ 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) {
handler.post(() -> mBinding.loadingInfoTextview.setText("Caricamento " + item));
@@ -156,11 +190,11 @@ public class SplashActivity extends BaseActivity implements MainContext.Listener
@Override
public void onError(Spanned message) {
handler.post(() -> {
DialogSimpleMessageView.makeErrorDialog(
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

@@ -11,11 +11,11 @@ public class JwtUtils {
private final static String SIGNING_KEY = "gICy3bjD56i/YFnBZZKe5ibiz3Snsp08nybGGziCV4ZcvyXBbyqWUnJ2wTrRXhOuf/xdljPXX0yBaqdAgvKthQ==";
public static Claims parseJwt(String token) {
Jws<Claims> jws = Jwts.parserBuilder()
.setSigningKey(Keys.hmacShaKeyFor(Decoders.BASE64.decode(SIGNING_KEY)))
Jws<Claims> jws = Jwts.parser()
.verifyWith(Keys.hmacShaKeyFor(Decoders.BASE64.decode(SIGNING_KEY)))
.build()
.parseClaimsJws(token);
.parseSignedClaims(token);
return jws.getBody();
return jws.getPayload();
}
}

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;
@@ -139,25 +140,34 @@ public class BarcodeManager {
public static void disable(int instanceId) {
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
.findFirst().ifPresent(x -> x.setEnabled(false));
.findFirst().ifPresent(x -> {
x.setEnabled(false);
Log.d("BarcodeManager", "Disabled callback " + x.getID() + ": " + x.getOnScanSuccessfull());
});
}
public static void disableLastCallback() {
BarcodeCallbackDTO validCallback = getValidCallback();
if (validCallback != null) {
validCallback.setEnabled(false);
// Log.d("BarcodeManager", "Last callback disabled: " + validCallback.getOnScanSuccessfull());
}
}
public static void enable(int instanceId) {
mBarcodeCallbacksStacktrace.stream().filter(x -> x.getID() == instanceId)
.findFirst().ifPresent(x -> x.setEnabled(true));
.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());
}
}

View File

@@ -22,6 +22,7 @@ import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigl
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;
@@ -230,6 +231,14 @@ public class MenuConfiguration extends BaseMenuConfiguration {
.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()
.setCodMenu("MM012")

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,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;
@@ -65,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;
@@ -85,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())

View File

@@ -22,6 +22,8 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
import it.integry.integrywmsnative.core.data_store.db.dao.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;
@@ -32,6 +34,8 @@ import it.integry.integrywmsnative.core.data_store.db.entity.InventarioRowRoomDT
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;
@@ -45,9 +49,11 @@ import it.integry.integrywmsnative.core.data_store.db.entity.VerificaGiacenzeRow
InventarioEntity.class,
InventarioRowRoomDTO.class,
VerificaGiacenzeEntity.class,
VerificaGiacenzeRowEntity.class
VerificaGiacenzeRowEntity.class,
TrasferimentoPedaneEntity.class,
TrasferimentoPedaneRowEntity.class
},
version = 18)
version = 21)
@TypeConverters({
DateConverter.class,
BigDecimalConverter.class,
@@ -77,7 +83,10 @@ public abstract class AppDatabase extends RoomDatabase {
.addMigrations(MIGRATION_14_15)
.addMigrations(MIGRATION_15_16)
.addMigrations(MIGRATION_16_17)
.addMigrations(MIGRATION_17_18);
.addMigrations(MIGRATION_17_18)
.addMigrations(MIGRATION_18_19)
.addMigrations(MIGRATION_19_20)
.addMigrations(MIGRATION_20_21);
sInstance = builder.build();
}
@@ -106,6 +115,10 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract VerificaGiacenzeRowDao verificaGiacenzeRowDao();
public abstract TrasferimentoPedaneDao trasferimentoPedaneDao();
public abstract TrasferimentoPedaneRowDao trasferimentoPedaneRowDao();
static final Migration MIGRATION_10_11 = new Migration(10, 11) {
@@ -172,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) {
@@ -193,6 +208,7 @@ 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) {
@@ -217,4 +233,68 @@ public abstract class AppDatabase extends RoomDatabase {
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,8 @@ import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColtDao;
import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.dao.RawDao;
import it.integry.integrywmsnative.core.data_store.db.dao.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;
@@ -141,6 +143,18 @@ public class RoomModule {
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) {

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

@@ -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

@@ -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

@@ -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;
@@ -92,7 +93,7 @@ public class InventarioRepository extends _BaseRepository<MtbInvent, InventarioE
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);

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,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,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

@@ -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;
@@ -26,6 +27,7 @@ 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;
@@ -37,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;
@@ -261,7 +266,7 @@ public class Converters {
BigDecimal value = null;
if (!UtilityString.isNullOrEmpty(s.toString()))
value = new BigDecimal(s.toString());
value = UtilityNumber.parseBigDecimal(s.toString(), Locale.getDefault());
observableBigDecimal.set(value);
}
@@ -271,7 +276,7 @@ public class Converters {
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? 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));
@@ -292,7 +297,7 @@ public class Converters {
String newValueString = s.toString().trim();
if (!UtilityString.isNullOrEmpty(newValueString))
value = new BigDecimal(newValueString);
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
observableBigDecimal.set(value);
}
@@ -301,7 +306,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? 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));
@@ -322,7 +327,7 @@ public class Converters {
String newValueString = s.toString().trim();
if (!UtilityString.isNullOrEmpty(newValueString))
value = new BigDecimal(newValueString);
value = UtilityNumber.parseBigDecimal(newValueString, Locale.getDefault());
observableBigDecimal.set(value);
}
@@ -331,7 +336,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = observableBigDecimal.get();
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? 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));
@@ -350,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);
}
};
@@ -358,7 +364,7 @@ public class Converters {
view.addTextChangedListener(watcher);
}
BigDecimal newValue = bindableBigDecimal.get();
BigDecimal viewValue = !view.getText().toString().trim().isEmpty() ? 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));
@@ -470,8 +476,9 @@ public class Converters {
}
}
@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) {
@@ -506,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());
@@ -526,7 +533,7 @@ public class Converters {
}
});
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
};
//Adding click-listener
@@ -540,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) {
@@ -572,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);
@@ -592,7 +717,7 @@ public class Converters {
}
});
datePicker.show(parentFragment.requireActivity().getSupportFragmentManager(), "tag");
datePicker.show(ContextHelper.getFragmentManagerFromContext(view.getContext()), "tag");
};
//Adding click-listener
@@ -606,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);
@@ -817,6 +1003,45 @@ 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);
@@ -974,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,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

@@ -66,9 +66,6 @@ public class Ean128Service {
switch (aiModel.AI) {
case SSCC -> {
if (aiValue.length() > 0 && (aiValue.charAt(0) == '0' || aiValue.charAt(0) == '9')) {
aiValue = new StringBuilder(aiValue.substring(1));
}
model.Sscc = aiValue.toString();
}
case GTIN -> {

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,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

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.core.expansion;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import androidx.annotation.Nullable;
@@ -23,6 +24,11 @@ public class BaseActivity extends AppCompatActivity {
@Inject
public ExecutorService executorService;
@Inject
public Handler handler;
private Integer barcodeCallbackId;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -33,35 +39,40 @@ public class BaseActivity extends AppCompatActivity {
.inject(this);
}
protected void initBarcodeManager(int barcodeCallbackId) {
this.barcodeCallbackId = barcodeCallbackId;
}
public void onLoadingStarted() {
if (barcodeCallbackId != null)
BarcodeManager.disable(barcodeCallbackId);
else
BarcodeManager.disableLastCallback();
this.openProgress();
}
public void onLoadingEnded() {
if (barcodeCallbackId != null)
BarcodeManager.enable(barcodeCallbackId);
else
BarcodeManager.enableLastCallback();
this.closeProgress();
}
public void onError(Exception ex) {
this.runOnUiThread(() -> {
this.closeProgress();
handler.post(() -> {
this.onLoadingEnded();
UtilityExceptions.defaultException(this, ex);
});
}
private void openProgress() {
BarcodeManager.disableLastCallback();
// executorService.execute(() -> {
this.mCurrentProgress.show(getSupportFragmentManager());
// });
this.mCurrentProgress.show(getSupportFragmentManager());
}
private void closeProgress() {
BarcodeManager.enableLastCallback();
// executorService.execute(() -> {
mCurrentProgress.dismiss();
// });
mCurrentProgress.dismiss();
}
@Override

View File

@@ -1,39 +0,0 @@
package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.content.Context;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
public class BaseDialog extends Dialog {
private boolean mBarcodeListener = false;
public BaseDialog(@NonNull Context context) {
super(context);
if (BarcodeManager.isLastCallbackEnabled() && BarcodeManager.isKeyboardEmulator()) {
setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
});
}
}
private boolean isControlKey(KeyEvent keyEvent) {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}
public void setBarcodeListener(boolean listen) {
this.mBarcodeListener = listen;
}
}

View File

@@ -1,10 +1,11 @@
package it.integry.integrywmsnative.core.expansion;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import androidx.annotation.NonNull;
@@ -30,10 +31,15 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
@Inject
public ExecutorService executorService;
@Inject
public Handler handler;
private boolean mBarcodeListener = false;
private boolean cancelable = true;
private Integer barcodeCallbackId;
@Override
public boolean isCancelable() {
@@ -47,6 +53,16 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
this.cancelable = cancelable;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
return super.onCreateDialog(savedInstanceState);
}
protected void initBarcodeManager(int barcodeCallbackId) {
this.barcodeCallbackId = barcodeCallbackId;
}
@Override
public void show(FragmentManager manager, String tag) {
try {
@@ -58,38 +74,35 @@ public abstract class BaseDialogFragment extends DialogFragment implements Dialo
}
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.initialize();
}
public void onLoadingStarted() {
if (barcodeCallbackId != null)
BarcodeManager.disable(barcodeCallbackId);
else
BarcodeManager.disableLastCallback();
this.openProgress();
}
public void onLoadingEnded() {
if (barcodeCallbackId != null)
BarcodeManager.enable(barcodeCallbackId);
else
BarcodeManager.enableLastCallback();
this.closeProgress();
}
private void openProgress() {
BarcodeManager.disableLastCallback();
// executorService.execute(() -> {
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
// });
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
}
private void closeProgress() {
BarcodeManager.enableLastCallback();
// executorService.execute(() -> {
mCurrentProgress.dismiss();
// });
mCurrentProgress.dismiss();
}
public void onError(Exception ex) {
requireActivity().runOnUiThread(() -> {
handler.post(() -> {
this.onLoadingEnded();
UtilityExceptions.defaultException(requireActivity(), ex);
});

View File

@@ -38,6 +38,8 @@ public abstract class BaseFragment extends Fragment {
protected final List<Runnable> mOnPreDestroyList = new ArrayList<>();
private Integer barcodeCallbackId;
public void setScrollToolbar(ElevatedToolbar toolbar) {
mToolbar = toolbar;
@@ -60,31 +62,39 @@ public abstract class BaseFragment extends Fragment {
return view;
}
protected void initBarcodeManager(int barcodeCallbackId) {
this.barcodeCallbackId = barcodeCallbackId;
}
public void onLoadingStarted() {
if (barcodeCallbackId != null)
BarcodeManager.disable(barcodeCallbackId);
else
BarcodeManager.disableLastCallback();
this.openProgress();
}
public void onLoadingEnded() {
if (barcodeCallbackId != null)
BarcodeManager.enable(barcodeCallbackId);
else
BarcodeManager.enableLastCallback();
this.closeProgress();
}
private void openProgress() {
BarcodeManager.disableLastCallback();
// executorService.execute(() -> {
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
// });
}
private void closeProgress() {
BarcodeManager.enableLastCallback();
// executorService.execute(() -> {
mCurrentProgress.dismiss();
// });
}
public void onError(Exception ex) {
handler.post(() -> {
this.closeProgress();
this.onLoadingEnded();
UtilityExceptions.defaultException(getActivity(), ex);
});
}

View File

@@ -0,0 +1,129 @@
package it.integry.integrywmsnative.core.expansion;
import android.content.Context;
import android.os.Handler;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class BaseMaterialAlertDialogBuilder extends MaterialAlertDialogBuilder {
@Inject
public DialogProgressView mCurrentProgress;
@Inject
public ExecutorService executorService;
@Inject
public Handler handler;
private boolean mBarcodeListener = false;
private Integer barcodeCallbackId;
private Context context;
private AlertDialog alertDialog;
public BaseMaterialAlertDialogBuilder(@NonNull Context context) {
super(context);
this.context = context;
MainApplication.appComponent
.baseMaterialAlertDialogComponent()
.create()
.inject(this);
if (BarcodeManager.isLastCallbackEnabled() && BarcodeManager.isKeyboardEmulator()) {
setOnKeyListener((dialog, keyCode, event) -> {
if (mBarcodeListener && (event.getAction() == KeyEvent.ACTION_DOWN || event.getAction() == KeyEvent.ACTION_MULTIPLE) && !isControlKey(event)) {
return BarcodeManager.onKeyDown(event.getKeyCode(), event);
}
return false;
});
}
}
@NonNull
@Override
public AlertDialog create() {
alertDialog = super.create();
return alertDialog;
}
protected void dismiss() {
alertDialog.dismiss();
}
protected void initBarcodeManager(int barcodeCallbackId) {
this.barcodeCallbackId = barcodeCallbackId;
}
public void onLoadingStarted() {
if (barcodeCallbackId != null)
BarcodeManager.disable(barcodeCallbackId);
else
BarcodeManager.disableLastCallback();
this.openProgress();
}
public void onLoadingEnded() {
if (barcodeCallbackId != null)
BarcodeManager.enable(barcodeCallbackId);
else
BarcodeManager.enableLastCallback();
this.closeProgress();
}
private void openProgress() {
if (context instanceof AppCompatActivity) {
FragmentManager fragmentManager = ((AppCompatActivity) context).getSupportFragmentManager();
// ora puoi usarlo
this.mCurrentProgress.show(fragmentManager);
} else {
UtilityLogger.warn("Context is not an instance of AppCompatActivity, cannot show progress dialog.");
}
}
private void closeProgress() {
mCurrentProgress.dismiss();
}
public void onError(Exception ex) {
handler.post(() -> {
this.onLoadingEnded();
UtilityExceptions.defaultException(getContext(), ex);
});
}
private boolean isControlKey(KeyEvent keyEvent) {
int keyCode = keyEvent.getKeyCode();
return (
keyCode == KeyEvent.KEYCODE_BACK ||
keyCode == KeyEvent.KEYCODE_SHIFT_LEFT ||
keyCode == KeyEvent.KEYCODE_DEL
);
}
public void setBarcodeListener(boolean listen) {
this.mBarcodeListener = listen;
}
}

View File

@@ -0,0 +1,14 @@
package it.integry.integrywmsnative.core.expansion;
import dagger.Subcomponent;
@Subcomponent
public interface BaseMaterialAlertDialogBuilderComponent {
@Subcomponent.Factory
interface Factory {
BaseMaterialAlertDialogBuilderComponent create();
}
void inject(BaseMaterialAlertDialogBuilder baseMaterialAlertDialogBuilder);
}

View File

@@ -0,0 +1,7 @@
package it.integry.integrywmsnative.core.expansion;
import dagger.Module;
@Module(subcomponents = BaseMaterialAlertDialogBuilderComponent.class)
public class BaseMaterialAlertDialogBuilderModule {
}

View File

@@ -2,37 +2,108 @@ package it.integry.integrywmsnative.core.expansion.view;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.recyclerview.widget.RecyclerView;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.ArrayList;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
import java.util.List;
public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.ViewHolder, VH extends RecyclerView.ViewHolder>
extends SectionedRecyclerViewAdapter<SH, VH> {
protected ArrayList<T> mDataset = new ArrayList<>();
private View mEmptyView;
public ExtendedSectionedRecyclerView(ObservableArrayList<T> myDataset) {
mDataset.addAll(myDataset);
protected final List<T> originalItems = new ArrayList<>();
private final Object originalItemsLock = new Object();
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
@Override
public void onChanged(ObservableList<T> sender) {
mDataset.clear();
mDataset.addAll(sender);
public ExtendedSectionedRecyclerView(ObservableArrayList<T> observableList) {
// originalItems.addAll(observableList);
//
// observableList.addOnListChangedCallback(new OnListGeneralChangedCallback<T>() {
// @Override
// public void onChanged(ObservableList<T> sender) {
// originalItems.clear();
// originalItems.addAll(sender);
// notifyDataChanged();
// notifyDataSetChanged();
// checkIfEmpty();
// }
// });
//
// checkIfEmpty();
synchronized (originalItemsLock) {
this.originalItems.addAll(observableList); // Salva lo stato corrente per il filtraggio
}
observableList.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<T>>() {
private void updateLists() {
// Si assume che observableList sia modificata sul thread UI o che la sincronizzazione sia gestita esternamente.
List<T> currentData = new ArrayList<>(observableList); // Crea uno snapshot
synchronized (originalItemsLock) {
originalItems.clear();
originalItems.addAll(currentData); // Aggiorna la lista originale per il filtraggio
}
// Aggiorna la lista visualizzata dall'adapter
// clear();
// addAll(currentData); // Usa lo snapshot
// notifyDataSetChanged(); // ArrayAdapter.addAll non chiama notifyDataSetChanged, quindi è necessario se non chiamato da clear()
// Tuttavia, clear() e addAll() di ArrayAdapter gestiscono la notifica se mNotifyOnChange è true (default).
// Per sicurezza e coerenza con il codice originale, lo manteniamo.
notifyDataChanged();
notifyDataSetChanged();
checkIfEmpty();
}
});
checkIfEmpty();
@Override
public void onChanged(ObservableList<T> sender) {
updateLists();
}
@Override
public void onItemRangeChanged(ObservableList<T> sender, int positionStart, int itemCount) {
updateLists();
}
@Override
public void onItemRangeInserted(ObservableList<T> sender, int positionStart, int itemCount) {
updateLists();
}
@Override
public void onItemRangeMoved(ObservableList<T> sender, int fromPosition, int toPosition, int itemCount) {
updateLists();
}
@Override
public void onItemRangeRemoved(ObservableList<T> sender, int positionStart, int itemCount) {
updateLists();
}
});
}
public ExtendedSectionedRecyclerView(@NonNull LiveData<List<T>> liveData,
@NonNull LifecycleOwner lifecycleOwner) {
liveData.observe(lifecycleOwner, newList -> {
// L'observer di LiveData viene eseguito sul thread UI
List<T> dataToUse = (newList == null) ? new ArrayList<>() : new ArrayList<>(newList);
synchronized (originalItemsLock) {
originalItems.clear();
originalItems.addAll(dataToUse); // Aggiorna la lista originale per il filtraggio
}
// Aggiorna la lista visualizzata dall'adapter
// clear();
// addAll(dataToUse); // addAll gestisce correttamente una collezione vuota se newList è null
notifyDataChanged();
notifyDataSetChanged();
checkIfEmpty();
});
}
public ExtendedSectionedRecyclerView<T, SH, VH> setEmptyView(View emptyView) {
@@ -43,7 +114,7 @@ public abstract class ExtendedSectionedRecyclerView<T, SH extends RecyclerView.V
@Override
public int getItemSize() {
return this.mDataset.size();
return this.originalItems.size();
}
private void checkIfEmpty() {

View File

@@ -0,0 +1,33 @@
package it.integry.integrywmsnative.core.helper;
import android.content.Context;
import androidx.annotation.ColorInt;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.secondary.TrasferimentoPedaneStatusEnum;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public final class TrasferimentoPedaneStatusConverter {
public static @ColorInt int getLabelBgColor(Context context, TrasferimentoPedaneStatusEnum status) {
var attrColor = switch (status) {
case APERTO -> com.google.android.material.R.attr.colorPrimaryContainer; // Primary
case COMPLETATO -> R.attr.colorSuccessContainer; // Green
case SCADUTO -> com.google.android.material.R.attr.colorErrorContainer; // Red
};
return UtilityResources.getColorResourceFromAttr(context, attrColor);
}
public static @ColorInt int getLabelTextColor(Context context, TrasferimentoPedaneStatusEnum status) {
var attrColor = switch (status) {
case APERTO -> com.google.android.material.R.attr.colorOnPrimaryContainer; // Primary
case COMPLETATO -> R.attr.colorOnSuccessContainer; // Green
case SCADUTO -> com.google.android.material.R.attr.colorOnErrorContainer; // Red
};
return UtilityResources.getColorResourceFromAttr(context, attrColor);
}
}

View File

@@ -6,7 +6,7 @@ public interface ILUPrintListener {
void onLUSuccessullyPrinted();
void onLUPrintRequest(RunnableArgs<Boolean> onComplete);
boolean onLUPrintRequest();
void onLUPrintError(Exception ex, Runnable onComplete);

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.mapper;
import javax.inject.Inject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneEntity;
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneDTO;
@Singleton
public class TrasferimentoPedaneMapper extends BaseMapper<TrasferimentoPedaneDTO, TrasferimentoPedaneEntity> {
private final TrasferimentoPedaneRowMapper trasferimentoPedaneRowMapper;
@Inject
public TrasferimentoPedaneMapper(TrasferimentoPedaneRowMapper trasferimentoPedaneRowMapper) {
this.trasferimentoPedaneRowMapper = trasferimentoPedaneRowMapper;
}
@Override
public TrasferimentoPedaneEntity mapRestToRoom(TrasferimentoPedaneDTO inputData) {
if(inputData == null) return null;
var data = new TrasferimentoPedaneEntity();
data.setCodMdepDest(inputData.getCodMdepDest());
data.setCreatedAt(inputData.getCreatedAt());
data.setTrasferimentoPedaneRowList(trasferimentoPedaneRowMapper.mapRestsToRooms(inputData.getRows()));
return data;
}
@Override
public TrasferimentoPedaneDTO mapRoomToRest(TrasferimentoPedaneEntity inputData) {
if(inputData == null) return null;
var data = new TrasferimentoPedaneDTO();
data.setCodMdepDest(inputData.getCodMdepDest());
data.setCreatedAt(inputData.getCreatedAt());
data.setRows(trasferimentoPedaneRowMapper.mapRoomsToRests(inputData.getTrasferimentoPedaneRowList()));
return data;
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.integrywmsnative.core.mapper;
import javax.inject.Inject;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.data_store.db.entity.TrasferimentoPedaneRowEntity;
import it.integry.integrywmsnative.core.rest.model.trasferimento_pedane.TrasferimentoPedaneRowDTO;
@Singleton
public class TrasferimentoPedaneRowMapper extends BaseMapper<TrasferimentoPedaneRowDTO, TrasferimentoPedaneRowEntity> {
@Inject
public TrasferimentoPedaneRowMapper() {
// Default constructor for dependency injection
}
@Override
public TrasferimentoPedaneRowEntity mapRestToRoom(TrasferimentoPedaneRowDTO inputData) {
if(inputData == null) return null;
var data = new TrasferimentoPedaneRowEntity();
return data;
}
@Override
public TrasferimentoPedaneRowDTO mapRoomToRest(TrasferimentoPedaneRowEntity inputData) {
if(inputData == null) return null;
var data = new TrasferimentoPedaneRowDTO();
return data;
}
}

View File

@@ -4,76 +4,146 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class Azienda {
public class Azienda extends EntityBase {
@SerializedName("nomeDitta")
private String nomeDitta;
@SerializedName("indirizzo")
private String indirizzo;
@SerializedName("cap")
private String cap;
@SerializedName("citta")
private String citta;
@SerializedName("prov")
private String prov;
@SerializedName("partIva")
private String partIva;
@SerializedName("numTel")
private String numTel;
@SerializedName("numFax")
private String numFax;
@SerializedName("eMail")
private String eMail;
@SerializedName("annoContab")
private Integer annoContab;
@SerializedName("annoMagaz")
private Integer annoMagaz;
@SerializedName("annoAttuale")
private Integer annoAttuale;
@SerializedName("ultDataGio")
private String ultDataGio;
@SerializedName("ultNumGio")
private Integer ultNumGio;
@SerializedName("ribaRSoc1")
private String ribaRSoc1;
@SerializedName("ribaRSoc2")
private String ribaRSoc2;
@SerializedName("ribaRSocBreve")
private String ribaRSocBreve;
@SerializedName("dataInizMsg")
private String dataInizMsg;
@SerializedName("dataFineMsg")
private String dataFineMsg;
@SerializedName("messaggioDoc")
private String messaggioDoc;
@SerializedName("liquidazioniIva")
private String liquidazioniIva;
@SerializedName("lastUpgDb")
private String lastUpgDb;
@SerializedName("logoFile")
private String logoFile;
@SerializedName("logoB64")
private String logoB64;
@SerializedName("ultDareAv")
private BigDecimal ultDareAv;
@SerializedName("sollTop")
private Integer sollTop;
@SerializedName("sollLeft")
private Integer sollLeft;
@SerializedName("ggUtili")
private Integer ggUtili;
@SerializedName("codSia")
private String codSia;
@SerializedName("flagFattDiff")
private String flagFattDiff;
@SerializedName("sollHeadPersonal")
private String sollHeadPersonal;
@SerializedName("lastUpgSp")
private String lastUpgSp;
@SerializedName("sitoWeb")
private String sitoWeb;
@SerializedName("capitaleSoc")
private BigDecimal capitaleSoc;
@SerializedName("cciaa")
private String cciaa;
@SerializedName("iscRegImp")
private String iscRegImp;
@SerializedName("ragSocMod")
private String ragSocMod;
@SerializedName("prefissoEan")
private String prefissoEan;
@SerializedName("codFiscale")
private String codFiscale;
@SerializedName("persFisicaCognome")
private String persFisicaCognome;
@SerializedName("persFisicaNome")
private String persFisicaNome;
@SerializedName("persFisicaSesso")
private String persFisicaSesso;
@SerializedName("persFisicaDataNascita")
private String persFisicaDataNascita;
@SerializedName("persFisicaComuneNascita")
private String persFisicaComuneNascita;
@SerializedName("persFisicaProvNascita")
private String persFisicaProvNascita;
@SerializedName("flagPersFisica")
private String flagPersFisica;
@SerializedName("persFisicaCodFisc")
private String persFisicaCodFisc;
@SerializedName("rapprLegale")
private String rapprLegale;
@SerializedName("rapprLegaleCodFisc")
private String rapprLegaleCodFisc;
@SerializedName("sedeAmm")
private String sedeAmm;
@SerializedName("flagSetIvaOmaggi")
private String flagSetIvaOmaggi;
@SerializedName("applicationName")
private String applicationName;
@SerializedName("flagTipoFatturazione")
private String flagTipoFatturazione;
@SerializedName("tribunale")
private String tribunale;
@SerializedName("settRitardoAnno")
private Integer settRitardoAnno;
@SerializedName("dbDistributore")
private String dbDistributore;
@SerializedName("coStringco")
private String coStringco;
@SerializedName("lastUpgQc")
private String lastUpgQc;
@SerializedName("tipoAzienda")
private String tipoAzienda;
@SerializedName("nazione")
private String nazione;
@SerializedName("codDiviContab")
private String codDiviContab;
@SerializedName("codIvaOmaggi")
private String codIvaOmaggi;
@SerializedName("codCconQuadra")
private String codCconQuadra;
public Azienda() {
type = "azienda";
}
/**
* Regime Fiscale
*/

View File

@@ -1,35 +0,0 @@
package it.integry.integrywmsnative.core.model;
import it.integry.integrywmsnative.core.di.BindableBoolean;
public class CheckableMtbAart {
private MtbAart mtbAart;
private BindableBoolean checked = new BindableBoolean(false);
public CheckableMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public CheckableMtbAart setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public BindableBoolean getChecked() {
return checked;
}
public CheckableMtbAart setChecked(BindableBoolean checked) {
this.checked = checked;
return this;
}
public void toggleCheck() {
this.checked.set(!this.checked.get());
}
}

View File

@@ -1,63 +0,0 @@
package it.integry.integrywmsnative.core.model;
import androidx.databinding.Observable;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_mtbcolr_list.DialogChooseArtsFromMtbColrListItemModel;
public class CheckableMtbColr {
private DialogChooseArtsFromMtbColrListItemModel item;
private BindableBoolean checked = new BindableBoolean(false);
private BindableBoolean hidden = new BindableBoolean(false);
public CheckableMtbColr(DialogChooseArtsFromMtbColrListItemModel item) {
this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
hidden.set(item.isHidden());
}
});
}
public DialogChooseArtsFromMtbColrListItemModel getItem() {
return item;
}
public CheckableMtbColr setItem(DialogChooseArtsFromMtbColrListItemModel item) {
this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int propertyId) {
hidden.set(item.isHidden());
}
});
return this;
}
public BindableBoolean getChecked() {
return checked;
}
public CheckableMtbColr setChecked(BindableBoolean checked) {
this.checked = checked;
return this;
}
public BindableBoolean getHidden() {
return hidden;
}
public boolean isHidden() {
return hidden.get();
}
public CheckableMtbColr setHidden(BindableBoolean hidden) {
this.hidden = hidden;
return this;
}
}

View File

@@ -1,149 +1,224 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.model.key.DtbDocrKey;
public class DtbDocr {
public class DtbDocr extends EntityBase {
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
private String dataDoc;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("idRiga")
private Integer idRiga;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("codAliq")
private String codAliq;
@SerializedName("codAnagComp")
private String codAnagComp;
@SerializedName("codArtFor")
private String codArtFor;
@SerializedName("codCol")
private String codCol;
@SerializedName("codDtipComp")
private String codDtipComp;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("codMart")
private String codMart;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codPromo")
private String codPromo;
@SerializedName("codTagl")
private String codTagl;
@SerializedName("costoUnt")
private BigDecimal costoUnt;
@SerializedName("dataDocComp")
private String dataDocComp;
@SerializedName("dataOrd")
private String dataOrd;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("descrizioneEstesa")
private String descrizioneEstesa;
private String flagEvasoForzato;
@SerializedName("importoRiga")
private BigDecimal importoRiga;
@SerializedName("numCnf")
private BigDecimal numCnf;
@SerializedName("numDocComp")
private Integer numDocComp;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("percGest")
private BigDecimal percGest;
@SerializedName("percIspe")
private BigDecimal percIspe;
@SerializedName("percOneri")
private BigDecimal percOneri;
@SerializedName("percPromo")
private BigDecimal percPromo;
@SerializedName("percProv")
private BigDecimal percProv;
@SerializedName("percProv2")
private BigDecimal percProv2;
@SerializedName("pesoLordo")
private BigDecimal pesoLordo;
private String posizione;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("qtaDoc")
private BigDecimal qtaDoc;
@SerializedName("qtaDoc2")
private BigDecimal qtaDoc2;
@SerializedName("qtaDoc3")
private BigDecimal qtaDoc3;
@SerializedName("rapConv")
private BigDecimal rapConv;
@SerializedName("rigaOrd")
private Integer rigaOrd;
@SerializedName("sconto5")
private BigDecimal sconto5;
@SerializedName("sconto6")
private BigDecimal sconto6;
@SerializedName("sconto7")
private BigDecimal sconto7;
@SerializedName("sconto8")
private BigDecimal sconto8;
@SerializedName("serDocComp")
private String serDocComp;
@SerializedName("untDoc")
private String untDoc;
@SerializedName("untDoc2")
private String untDoc2;
@SerializedName("untDoc3")
private String untDoc3;
@SerializedName("valGest")
private BigDecimal valGest;
@SerializedName("valIspe")
private BigDecimal valIspe;
@SerializedName("valOneri")
private BigDecimal valOneri;
@SerializedName("valPromo")
private BigDecimal valPromo;
@SerializedName("valProv")
private BigDecimal valProv;
@SerializedName("valProv2")
private BigDecimal valProv2;
@SerializedName("valUnt")
private BigDecimal valUnt;
@SerializedName("valUntIva")
private BigDecimal valUntIva;
@SerializedName("codMtip")
private String codMtip;
@SerializedName("matricola")
private String matricola;
@SerializedName("dataInizComp")
private String dataInizComp;
@SerializedName("dataFineComp")
private String dataFineComp;
@SerializedName("codKit")
private String codKit;
@SerializedName("codAlis")
private String codAlis;
@SerializedName("dataInsRow")
private String dataInsRow;
@SerializedName("note")
private String note;
@SerializedName("rigaKit")
private int rigaKit;
@SerializedName("mtbAart")
private MtbAart mtbAart;
@SerializedName("dataScadPartitaMag")
private LocalDate dataScadPartitaMag;
public DtbDocr() {
type = "dtb_docr";
}
public DtbDocrKey getKey() {
return new DtbDocrKey(codAnag, codDtip, dataDoc, numDoc, serDoc, idRiga);
}
public String getCodAnag() {
return codAnag;
}
@@ -162,17 +237,12 @@ public class DtbDocr {
return this;
}
public String getDataDocS() {
public LocalDate getDataDoc() {
return dataDoc;
}
public Date getDataDocD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataDocS());
}
public DtbDocr setDataDoc(String dataDoc) {
public void setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Integer getIdRiga() {

View File

@@ -1,128 +1,244 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.util.Date;
import java.time.LocalDate;
import java.util.List;
public class DtbDoct {
public static final String ENTITY = "dtb_doct";
public class DtbDoct extends EntityBase{
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
private Date dataDoc;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("acconto")
private BigDecimal acconto;
@SerializedName("activityId")
private String activityId;
@SerializedName("annotazioni")
private String annotazioni;
@SerializedName("aspettoBeni")
private String aspettoBeni;
@SerializedName("cambio")
private BigDecimal cambio;
@SerializedName("causaleTrasp")
private String causaleTrasp;
@SerializedName("codAbi")
private String codAbi;
@SerializedName("codAuto")
private String codAuto;
@SerializedName("codBanc")
private String codBanc;
@SerializedName("codBancAzi")
private String codBancAzi;
@SerializedName("codCab")
private String codCab;
@SerializedName("codDivi")
private String codDivi;
@SerializedName("codDtipVal")
private String codDtipVal;
@SerializedName("codFornTd")
private String codFornTd;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codPaga")
private String codPaga;
@SerializedName("codProd")
private String codProd;
@SerializedName("codVage")
private String codVage;
@SerializedName("codVage2")
private String codVage2;
@SerializedName("codVdes")
private String codVdes;
@SerializedName("codVvet")
private String codVvet;
@SerializedName("codVvet2")
private String codVvet2;
@SerializedName("codVzon")
private String codVzon;
@SerializedName("compilatoDa")
private String compilatoDa;
@SerializedName("userName")
private String userName;
@SerializedName("controllatoDa")
private String controllatoDa;
private Date dataChkDoc;
private Date dataDocVal;
private Date dataInizTrasp;
private Date dataIns;
private Date dataOrd;
private Date dataReg;
private Date dataRifScad;
private Date dataUltMod;
@SerializedName("dataChkDoc")
private LocalDate dataChkDoc;
@SerializedName("dataDocVal")
private LocalDate dataDocVal;
@SerializedName("dataInizTrasp")
private LocalDate dataInizTrasp;
@SerializedName("dataIns")
private LocalDate dataIns;
@SerializedName("dataOrd")
private LocalDate dataOrd;
@SerializedName("dataReg")
private LocalDate dataReg;
@SerializedName("dataRifScad")
private LocalDate dataRifScad;
@SerializedName("dataUltMod")
private LocalDate dataUltMod;
@SerializedName("descrizionePaga")
private String descrizionePaga;
@SerializedName("flagPrzScontati")
private String flagPrzScontati;
@SerializedName("gestione")
private String gestione;
@SerializedName("kmPercorsi")
private Integer kmPercorsi;
@SerializedName("listino")
private String listino;
@SerializedName("mezzo")
private String mezzo;
@SerializedName("modificatoDa")
private String modificatoDa;
@SerializedName("nettoMerce")
private BigDecimal nettoMerce;
@SerializedName("numCmov")
private Integer numCmov;
@SerializedName("numColli")
private String numColli;
@SerializedName("numDocVal")
private Integer numDocVal;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("numVettura")
private String numVettura;
@SerializedName("oraInizTrasp")
private String oraInizTrasp;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("peso")
private String peso;
@SerializedName("porto")
private String porto;
@SerializedName("previstaFat")
private String previstaFat;
@SerializedName("qtaProd")
private BigDecimal qtaProd;
@SerializedName("rapConvProd")
private BigDecimal rapConvProd;
@SerializedName("rifOrd")
private String rifOrd;
@SerializedName("sconto1")
private BigDecimal sconto1;
@SerializedName("sconto2")
private BigDecimal sconto2;
@SerializedName("sconto3")
private BigDecimal sconto3;
@SerializedName("sconto4")
private BigDecimal sconto4;
@SerializedName("serDocVal")
private String serDocVal;
@SerializedName("termCons")
private String termCons;
@SerializedName("tipoAnag")
private String tipoAnag;
@SerializedName("totImponib")
private BigDecimal totImponib;
@SerializedName("totIva")
private BigDecimal totIva;
@SerializedName("totMerce")
private BigDecimal totMerce;
@SerializedName("totOmaggi")
private BigDecimal totOmaggi;
@SerializedName("totProvvig")
private BigDecimal totProvvig;
@SerializedName("untMisProd")
private String untMisProd;
@SerializedName("idViaggio")
private String idViaggio;
@SerializedName("numDocForn")
private String numDocForn;
@SerializedName("generaMovCont")
private String generaMovCont;
@SerializedName("targa")
private String targa;
@SerializedName("postiPallet")
private Integer postiPallet;
@SerializedName("tempMedia")
private BigDecimal tempMedia;
private Date dataCons;
@SerializedName("dataCons")
private LocalDate dataCons;
@SerializedName("nolo")
private BigDecimal nolo;
@SerializedName("nolo2")
private BigDecimal nolo2;
@SerializedName("conducente")
private String conducente;
@SerializedName("iban")
private String iban;
@SerializedName("mrn")
private String mrn;
@SerializedName("explodeKit")
private String explodeKit;
@SerializedName("flagPrzIva")
private String flagPrzIva;
@SerializedName("flagCheckPlafond")
private String flagCheckPlafond;
@SerializedName("tipoEmissione")
private String tipoEmissione;
@SerializedName("setDataDecorrenza2DataRic")
private String setDataDecorrenza2DataRic;
@SerializedName("totSpese")
private BigDecimal totSpese;
@SerializedName("chkArtListino")
private String chkArtListino;
private Date dataCmov;
@SerializedName("dataCmov")
private LocalDate dataCmov;
@SerializedName("reso")
private String reso;
@SerializedName("numCmovAutofattura")
private Integer numCmovAutofattura;
@SerializedName("dtbTipi")
private Object dtbTipi;
@SerializedName("vtbClie")
private Object vtbClie;
@SerializedName("jrlSchmacDoc")
private List<Object> jrlSchmacDoc;
@SerializedName("arlSchaccDoc")
private List<Object> arlSchaccDoc;
@SerializedName("dtbDocr")
private List<DtbDocr> dtbDocr;
@SerializedName("dtbDocs")
private List<Object> dtbDocs;
@SerializedName("mtbColt")
private List<MtbColt> mtbColt;
@SerializedName("drlDocAttached")
private List<Object> drlDocAttached;
@SerializedName("dtbDocCarat")
private List<Object> dtbDocCarat;
@SerializedName("ctbScad")
private List<Object> ctbScad;
@SerializedName("ctbMovt")
private Object ctbMovt;
@SerializedName("ctbMovi")
private List<Object> ctbMovi;
@SerializedName("costi")
private List<Object> costi;
@SerializedName("ntbDoct")
private List<Object> ntbDoct;
@SerializedName("dtbDoctBolle")
private List<DtbDoct> dtbDoctBolle;
private Object dtbInum;
public DtbDoct() {
type = "dtb_doct";
}
public String getCodAnag() {
return codAnag;
}
@@ -141,11 +257,11 @@ public class DtbDoct {
return this;
}
public Date getDataDoc() {
public LocalDate getDataDoc() {
return dataDoc;
}
public DtbDoct setDataDoc(Date dataDoc) {
public DtbDoct setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
@@ -420,74 +536,74 @@ public class DtbDoct {
return this;
}
public Date getDataChkDoc() {
public LocalDate getDataChkDoc() {
return dataChkDoc;
}
public DtbDoct setDataChkDoc(Date dataChkDoc) {
public DtbDoct setDataChkDoc(LocalDate dataChkDoc) {
this.dataChkDoc = dataChkDoc;
return this;
}
public Date getDataDocVal() {
public LocalDate getDataDocVal() {
return dataDocVal;
}
public DtbDoct setDataDocVal(Date dataDocVal) {
public DtbDoct setDataDocVal(LocalDate dataDocVal) {
this.dataDocVal = dataDocVal;
return this;
}
public Date getDataInizTrasp() {
public LocalDate getDataInizTrasp() {
return dataInizTrasp;
}
public DtbDoct setDataInizTrasp(Date dataInizTrasp) {
public DtbDoct setDataInizTrasp(LocalDate dataInizTrasp) {
this.dataInizTrasp = dataInizTrasp;
return this;
}
public Date getDataIns() {
public LocalDate getDataIns() {
return dataIns;
}
public DtbDoct setDataIns(Date dataIns) {
public DtbDoct setDataIns(LocalDate dataIns) {
this.dataIns = dataIns;
return this;
}
public Date getDataOrd() {
public LocalDate getDataOrd() {
return dataOrd;
}
public DtbDoct setDataOrd(Date dataOrd) {
public DtbDoct setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public Date getDataReg() {
public LocalDate getDataReg() {
return dataReg;
}
public DtbDoct setDataReg(Date dataReg) {
public DtbDoct setDataReg(LocalDate dataReg) {
this.dataReg = dataReg;
return this;
}
public Date getDataRifScad() {
public LocalDate getDataRifScad() {
return dataRifScad;
}
public DtbDoct setDataRifScad(Date dataRifScad) {
public DtbDoct setDataRifScad(LocalDate dataRifScad) {
this.dataRifScad = dataRifScad;
return this;
}
public Date getDataUltMod() {
public LocalDate getDataUltMod() {
return dataUltMod;
}
public DtbDoct setDataUltMod(Date dataUltMod) {
public DtbDoct setDataUltMod(LocalDate dataUltMod) {
this.dataUltMod = dataUltMod;
return this;
}
@@ -852,11 +968,11 @@ public class DtbDoct {
return this;
}
public Date getDataCons() {
public LocalDate getDataCons() {
return dataCons;
}
public DtbDoct setDataCons(Date dataCons) {
public DtbDoct setDataCons(LocalDate dataCons) {
this.dataCons = dataCons;
return this;
}
@@ -969,11 +1085,11 @@ public class DtbDoct {
return this;
}
public Date getDataCmov() {
public LocalDate getDataCmov() {
return dataCmov;
}
public DtbDoct setDataCmov(Date dataCmov) {
public DtbDoct setDataCmov(LocalDate dataCmov) {
this.dataCmov = dataCmov;
return this;
}
@@ -1130,13 +1246,4 @@ public class DtbDoct {
this.dtbDoctBolle = dtbDoctBolle;
return this;
}
public Object getDtbInum() {
return dtbInum;
}
public DtbDoct setDtbInum(Object dtbInum) {
this.dtbInum = dtbInum;
return this;
}
}

View File

@@ -1,45 +1,120 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class DtbOrdSteps extends EntityBase {
@SerializedName("dataOrd")
private String dataOrd;
@SerializedName("gestione")
private String gestione;
@SerializedName("idRiga")
private Integer idRiga;
@SerializedName("idStep")
private Integer idStep;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("activityId")
private String activityId;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codProdPri")
private String codProdPri;
@SerializedName("dataDoc")
private String dataDoc;
@SerializedName("dataFine")
private String dataFine;
@SerializedName("dataIniz")
private String dataIniz;
@SerializedName("descrizioneAttivita")
private String descrizioneAttivita;
@SerializedName("flagTipoTempo")
private String flagTipoTempo;
@SerializedName("hrNum")
private Integer hrNum;
@SerializedName("hrTime")
private BigDecimal hrTime;
@SerializedName("idRigaDoc")
private String idRigaDoc;
@SerializedName("note")
private String note;
@SerializedName("numDoc")
private String numDoc;
@SerializedName("numFase")
private Integer numFase;
@SerializedName("qtaAllocata")
private BigDecimal qtaAllocata;
@SerializedName("qtaDisp")
private BigDecimal qtaDisp;
@SerializedName("qtaDispImmessa")
private BigDecimal qtaDispImmessa;
@SerializedName("qtaImmesse")
private BigDecimal qtaImmesse;
@SerializedName("qtaInProd")
private BigDecimal qtaInProd;
@SerializedName("qtaLav")
private BigDecimal qtaLav;
@SerializedName("qtaProd")
private BigDecimal qtaProd;
@SerializedName("qtaScartate")
private BigDecimal qtaScartate;
@SerializedName("qtaTrasferite")
private BigDecimal qtaTrasferite;
@SerializedName("rapConvLav")
private BigDecimal rapConvLav;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("untMisLav")
private String untMisLav;
public DtbOrdSteps() {
type = "dtb_ord_steps";
}
public String getDataOrd() {
return dataOrd;
}

View File

@@ -1,120 +1,325 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
public class DtbOrdt extends EntityBase {
private String dataOrd;
@SerializedName("dataOrd")
private LocalDate dataOrd;
@SerializedName("gestione")
private String gestione;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("acconto")
private BigDecimal acconto;
@SerializedName("activityId")
private String activityId;
@SerializedName("activityTypeId")
private String activityTypeId;
@SerializedName("aspettoBeni")
private String aspettoBeni;
@SerializedName("causaleTrasp")
private String causaleTrasp;
@SerializedName("codAbi")
private String codAbi;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codAuto")
private String codAuto;
@SerializedName("codBanc")
private String codBanc;
@SerializedName("codBancAzi")
private String codBancAzi;
@SerializedName("codCab")
private String codCab;
@SerializedName("codDgrpArt")
private String codDgrpArt;
@SerializedName("codDivi")
private String codDivi;
@SerializedName("codEtic")
private String codEtic;
@SerializedName("codFornTd")
private String codFornTd;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codPaga")
private String codPaga;
@SerializedName("codProd")
private String codProd;
@SerializedName("codTcolUi")
private String codTcolUi;
@SerializedName("codTcolUl")
private String codTcolUl;
@SerializedName("codVage")
private String codVage;
@SerializedName("codVage2")
private String codVage2;
@SerializedName("codVdes")
private String codVdes;
@SerializedName("codVvet")
private String codVvet;
@SerializedName("codVvet2")
private String codVvet2;
@SerializedName("codVzon")
private String codVzon;
@SerializedName("colliPedana")
private BigDecimal colliPedana;
@SerializedName("compilatoDa")
private String compilatoDa;
@SerializedName("controllatoDa")
private String controllatoDa;
@SerializedName("dataConsProd")
private String dataConsProd;
@SerializedName("dataConsProdMax")
private String dataConsProdMax;
@SerializedName("dataEsportazione")
private String dataEsportazione;
@SerializedName("dataConferma")
private String dataConferma;
@SerializedName("dataInizProd")
private String dataInizProd;
@SerializedName("dataInizTrasp")
private String dataInizTrasp;
@SerializedName("dataInsOrd")
private String dataInsOrd;
@SerializedName("dataOrdRif")
private String dataOrdRif;
@SerializedName("rifDdataOrd")
private String rifDdataOrd;
@SerializedName("dataRicezione")
private String dataRicezione;
@SerializedName("dataRifScad")
private String dataRifScad;
@SerializedName("dataUltMod")
private String dataUltMod;
@SerializedName("descrEstesaProd")
private String descrEstesaProd;
@SerializedName("descrizionePaga")
private String descrizionePaga;
@SerializedName("descrizioneProd")
private String descrizioneProd;
@SerializedName("eanFidelity")
private String eanFidelity;
@SerializedName("flagAnnulla")
private String flagAnnulla;
@SerializedName("flagEscRoyal")
private String flagEscRoyal;
@SerializedName("flagEvasoForzato")
private String flagEvasoForzato;
@SerializedName("flagEvasoProd")
private String flagEvasoProd;
@SerializedName("flagPrzScontati")
private String flagPrzScontati;
@SerializedName("flagSospeso")
private String flagSospeso;
@SerializedName("flagTipologia")
private String flagTipologia;
@SerializedName("gestioneRif")
private String gestioneRif;
@SerializedName("itemId")
private String itemId;
@SerializedName("listino")
private String listino;
@SerializedName("livello")
private Integer livello;
@SerializedName("mezzo")
private String mezzo;
@SerializedName("modificatoDa")
private String modificatoDa;
@SerializedName("nettoMerce")
private BigDecimal nettoMerce;
@SerializedName("nolo")
private BigDecimal nolo;
@SerializedName("note")
private String note;
@SerializedName("numColli")
private String numColli;
@SerializedName("numCons")
private String numCons;
@SerializedName("numFase")
private Integer numFase;
@SerializedName("numOrdProvv")
private Integer numOrdProvv;
@SerializedName("numOrdRif")
private Integer numOrdRif;
@SerializedName("rifNumOrd")
private Integer rifNumOrd;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("percEsclStat")
private BigDecimal percEsclStat;
@SerializedName("personaRif")
private String personaRif;
@SerializedName("peso")
private String peso;
@SerializedName("porto")
private String porto;
@SerializedName("qtaEvasaProd")
private BigDecimal qtaEvasaProd;
@SerializedName("qtaPrenotataRep")
private BigDecimal qtaPrenotataRep;
@SerializedName("qtaProd")
private BigDecimal qtaProd;
@SerializedName("rapConvProd")
private BigDecimal rapConvProd;
@SerializedName("rfid")
private String rfid;
@SerializedName("rifOrd")
private String rifOrd;
@SerializedName("rigaOrdRif")
private Integer rigaOrdRif;
@SerializedName("sconto1")
private BigDecimal sconto1;
@SerializedName("sconto2")
private BigDecimal sconto2;
@SerializedName("sconto3")
private BigDecimal sconto3;
@SerializedName("sconto4")
private BigDecimal sconto4;
@SerializedName("serie")
private String serie;
@SerializedName("termCons")
private String termCons;
@SerializedName("tipoAnag")
private String tipoAnag;
@SerializedName("totFasi")
private Integer totFasi;
@SerializedName("totImponib")
private BigDecimal totImponib;
@SerializedName("totIva")
private BigDecimal totIva;
@SerializedName("totMerce")
private BigDecimal totMerce;
@SerializedName("totOmaggi")
private BigDecimal totOmaggi;
@SerializedName("totProvvig")
private BigDecimal totProvvig;
@SerializedName("untMisProd")
private String untMisProd;
@SerializedName("flagPrzIva")
private String flagPrzIva;
@SerializedName("noteConferma")
private String noteConferma;
@SerializedName("codJflav")
private String codJflav;
public DtbOrdt() {
this.type = "dtb_ordt";
}
public String getDataOrd() {
public LocalDate getDataOrd() {
return dataOrd;
}
public DtbOrdt setDataOrd(String dataOrd) {
public DtbOrdt setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}

View File

@@ -1,11 +1,15 @@
package it.integry.integrywmsnative.core.model;
import android.util.Log;
import com.google.gson.annotations.SerializedName;
public abstract class EntityBase extends BaseRestDTO implements Cloneable{
@SerializedName("operation")
public String operation;
@SerializedName("type")
public String type;
@SerializedName("onlyPkMaster")
public boolean onlyPkMaster = false;
public String getOperation() {

View File

@@ -1,14 +1,18 @@
package it.integry.integrywmsnative.core.model;
import java.util.Date;
import com.google.gson.annotations.SerializedName;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import java.time.LocalDate;
public class FiltroOrdineDTO {
@SerializedName("gestioneOrd")
private String gestioneOrd;
private String dataOrd;
private String dataCons;
@SerializedName("dataOrd")
private LocalDate dataOrd;
@SerializedName("dataCons")
private LocalDate dataCons;
@SerializedName("numOrd")
private int numOrd;
public String getGestioneOrd() {
@@ -20,44 +24,25 @@ public class FiltroOrdineDTO {
return this;
}
public String getDataOrdS() {
public LocalDate getDataOrd() {
return dataOrd;
}
public Date getDataOrdD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
}
public FiltroOrdineDTO setDataOrd(String dataOrd) {
public FiltroOrdineDTO setDataOrd(LocalDate dataOrd) {
this.dataOrd = dataOrd;
return this;
}
public FiltroOrdineDTO setDataOrd(Date dataOrd) {
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
return this;
}
public String getDataConsS() {
public LocalDate getDataCons() {
return dataCons;
}
public Date getDataConsD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataConsS());
}
public FiltroOrdineDTO setDataCons(String dataCons) {
public FiltroOrdineDTO setDataCons(LocalDate dataCons) {
this.dataCons = dataCons;
return this;
}
public FiltroOrdineDTO setDataCons(Date dataCons) {
if(dataCons != null) {
this.dataCons = UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
}
return this;
}
public int getNumOrd() {
return numOrd;
}
@@ -77,8 +62,8 @@ public class FiltroOrdineDTO {
if (getNumOrd() != that.getNumOrd()) return false;
if (getGestioneOrd() != null ? !getGestioneOrd().equals(that.getGestioneOrd()) : that.getGestioneOrd() != null)
return false;
if (dataOrd != null ? !dataOrd.equals(that.dataOrd) : that.dataOrd != null) return false;
return dataCons != null ? dataCons.equals(that.dataCons) : that.dataCons == null;
if (dataOrd != null ? !dataOrd.isEqual(that.dataOrd) : that.dataOrd != null) return false;
return dataCons != null ? dataCons.isEqual(that.dataCons) : that.dataCons == null;
}
@Override

View File

@@ -1,48 +1,88 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.util.Date;
public class GtbAnag extends EntityBase {
@SerializedName("codAnag")
private String codAnag;
@SerializedName("ragSoc")
private String ragSoc;
@SerializedName("indirizzo")
private String indirizzo;
@SerializedName("cap")
private String cap;
@SerializedName("citta")
private String citta;
@SerializedName("prov")
private String prov;
@SerializedName("nazione")
private String nazione;
@SerializedName("telefono")
private String telefono;
@SerializedName("fax")
private String fax;
@SerializedName("partIva")
private String partIva;
@SerializedName("codFisc")
private String codFisc;
@SerializedName("note")
private String note;
@SerializedName("personaRif")
private String personaRif;
@SerializedName("allegato")
private String allegato;
@SerializedName("eMail")
private String eMail;
@SerializedName("eMailPec")
private String eMailPec;
@SerializedName("flagPersonaFg")
private String flagPersonaFg;
@SerializedName("sesso")
private String sesso;
@SerializedName("codCentroAzi")
private String codCentroAzi;
@SerializedName("codRuop")
private String codRuop;
@SerializedName("dataNascita")
private Date dataNascita;
@SerializedName("luogoNascita")
private String luogoNascita;
@SerializedName("provNascita")
private String provNascita;
@SerializedName("nome")
private String nome;
@SerializedName("ragSoc2")
private String ragSoc2;
@SerializedName("classeMerito")
private Integer classeMerito;
@SerializedName("dataIns")
private Date dataIns;
@SerializedName("numCell")
private String numCell;
@SerializedName("cciaa")
private String cciaa;
@SerializedName("tipoAzienda")
private String tipoAzienda;
@SerializedName("cuuPa")
private String cuuPa;
@SerializedName("cognome")
private String cognome;
@SerializedName("diacod")
private String diacod;
@SerializedName("lat")
private BigDecimal lat;
@SerializedName("lng")
private BigDecimal lng;
@SerializedName("flagInformativa")
private String flagInformativa;
@SerializedName("flagConsenso")
private String flagConsenso;
@SerializedName("precode")
private String precode;
@SerializedName("insDestinatario")
private Boolean insDestinatario;
public GtbAnag() {

View File

@@ -1,11 +1,18 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
public class JtbComt extends EntityBase {
@SerializedName("codJcom")
private String codJcom;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codJflav")
private String codJflav;
@SerializedName("descrizione")
private String descrizione;
public JtbComt() {

View File

@@ -2,25 +2,42 @@ package it.integry.integrywmsnative.core.model;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class JtbFasi extends EntityBase {
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codJfasParent")
private String codJfasParent;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("descrizEstesa")
private String descrizEstesa;
@SerializedName("codMfas")
private String codMfas;
@SerializedName("pathIcona")
private String pathIcona;
@SerializedName("umAllocazione")
private String umAllocazione;
@SerializedName("maxAllocazione")
private BigDecimal maxAllocazione;
@SerializedName("codJCal")
private String codJCal;
@SerializedName("idJfas")
private String idJfas;
@SerializedName("flagAttivo")
private String flagAttivo;
@SerializedName("flagCheck")
private String flagCheck;
@SerializedName("umProd")
private String umProd;
@SerializedName("prodStd")
private BigDecimal prodStd;
@SerializedName("codMdepLav")
private String codMdepLav;
@SerializedName("tipoProd")
private String tipoProd;
public JtbFasi() {

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -12,91 +13,177 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class MtbAart extends EntityBase {
@SerializedName("codMart")
private String codMart;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("untMis")
private String untMis;
@SerializedName("barCode")
private String barCode;
@SerializedName("pesoKg")
private BigDecimal pesoKg;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("codAliq")
private String codAliq;
@SerializedName("codScoArt")
private String codScoArt;
@SerializedName("codTcolUi")
private String codTcolUi;
@SerializedName("codTcolUl")
private String codTcolUl;
@SerializedName("articoloComposto")
private String articoloComposto;
@SerializedName("esposizioneComp")
private String esposizioneComp;
@SerializedName("descrizioneEstesa")
private String descrizioneEstesa;
@SerializedName("codUltForn")
private String codUltForn;
@SerializedName("dataUltCar")
private String dataUltCar;
@SerializedName("valUltCar")
private BigDecimal valUltCar;
@SerializedName("codUltClie")
private String codUltClie;
@SerializedName("dataUltScar")
private String dataUltScar;
@SerializedName("valUltScar")
private BigDecimal valUltScar;
@SerializedName("tipoCodice")
private String tipoCodice;
@SerializedName("note")
private String note;
@SerializedName("posizione")
private String posizione;
@SerializedName("colliPedana")
private BigDecimal colliPedana;
@SerializedName("untMis2")
private String untMis2;
@SerializedName("rapConv2")
private BigDecimal rapConv2;
@SerializedName("flagInclListino")
private String flagInclListino;
@SerializedName("untMis3")
private String untMis3;
@SerializedName("rapConv3")
private BigDecimal rapConv3;
@SerializedName("codMartStat")
private String codMartStat;
@SerializedName("codMcon")
private String codMcon;
@SerializedName("codMgrp")
private String codMgrp;
@SerializedName("codMsfa")
private String codMsfa;
@SerializedName("codMsgr")
private String codMsgr;
@SerializedName("codMstp")
private String codMstp;
@SerializedName("codMtip")
private String codMtip;
@SerializedName("descrizioneStat")
private String descrizioneStat;
@SerializedName("flagStato")
private String flagStato;
@SerializedName("cambioDiviCar")
private BigDecimal cambioDiviCar;
@SerializedName("cambioDiviScar")
private BigDecimal cambioDiviScar;
@SerializedName("ggScadPartita")
private Integer ggScadPartita;
@SerializedName("volumeMc")
private BigDecimal volumeMc;
@SerializedName("flagEsponiPrz")
private String flagEsponiPrz;
@SerializedName("dataUltVar")
private String dataUltVar;
@SerializedName("percSfrido")
private BigDecimal percSfrido;
@SerializedName("codBarreImb")
private String codBarreImb;
@SerializedName("flagCalcPrz")
private String flagCalcPrz;
@SerializedName("esposizioneCompAcq")
private String esposizioneCompAcq;
@SerializedName("flagCalcPrzAcq")
private String flagCalcPrzAcq;
@SerializedName("diacod")
private String diacod;
@SerializedName("plu")
private String plu;
@SerializedName("partIvaProd")
private String partIvaProd;
@SerializedName("ragSocProd")
private String ragSocProd;
@SerializedName("flagRapConvVariabile")
private String flagRapConvVariabile;
@SerializedName("flagMovArtMag")
private String flagMovArtMag;
@SerializedName("flagTracciabilita")
private String flagTracciabilita;
@SerializedName("taraKg")
private BigDecimal taraKg;
@SerializedName("colliStrato")
private BigDecimal colliStrato;
@SerializedName("flagQtaCnfFissa")
private String flagQtaCnfFissa;
@SerializedName("flagColliPedanaFisso")
private String flagColliPedanaFisso;
@SerializedName("codCconCosti")
private String codCconCosti;
@SerializedName("codCconRicavi")
private String codCconRicavi;
@SerializedName("codDgrpArt")
private String codDgrpArt;
@SerializedName("codDiviCar")
private String codDiviCar;
@SerializedName("codDiviScar")
private String codDiviScar;
@SerializedName("codEcrCat")
private String codEcrCat;
@SerializedName("codEcrMcat")
private String codEcrMcat;
@SerializedName("codEcrRep")
private String codEcrRep;
@SerializedName("codEcrStipo")
private String codEcrStipo;
@SerializedName("codEcrTipo")
private String codEcrTipo;
@SerializedName("codGrpBolla")
private String codGrpBolla;
@SerializedName("ingredienti")
private String ingredienti;
@SerializedName("idArtEqui")
private String idArtEqui;
@SerializedName("descrCassa")
private String descrCassa;
@SerializedName("codNcIntracee")
private String codNcIntracee;
@SerializedName("marchio")
private String marchio;
@SerializedName("sezione")
private Integer sezione;
@SerializedName("untMisRifPeso")
private UntMisRifPesoEnum untMisRifPeso;
@SerializedName("qtaEsistente")
private BigDecimal qtaEsistente;
@SerializedName("qtaImpegnata")
private BigDecimal qtaImpegnata;
@SerializedName("numCnfEsistente")
private BigDecimal numCnfEsistente;
@SerializedName("numCnfImpegnata")
private BigDecimal numCnfImpegnata;
@SerializedName("mtbUntMis")
private List<MtbUntMis> mtbUntMis;
@SerializedName("mtbAartBarCode")
private List<MtbAartBarCode> mtbAartBarCode;
@@ -201,7 +288,13 @@ public class MtbAart extends EntityBase {
if (other.mtbUntMis != null) {
this.mtbUntMis = new ArrayList<>();
for (MtbUntMis untMis : other.mtbUntMis) {
this.mtbUntMis.add(new MtbUntMis(untMis)); // Assicurati che MtbUntMis abbia un costruttore di copia
this.mtbUntMis.add(untMis.clone()); // Assicurati che MtbUntMis abbia un costruttore di copia
}
}
if (other.mtbAartBarCode != null) {
this.mtbAartBarCode = new ArrayList<>();
for (MtbAartBarCode mtbAartBarCode : other.mtbAartBarCode) {
this.mtbAartBarCode.add(mtbAartBarCode.clone()); // Assicurati che MtbUntMis abbia un costruttore di copia
}
}
}

View File

@@ -1,18 +1,26 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class MtbAartBarCode extends EntityBase {
@SerializedName("codBarre")
private String codBarre;
@SerializedName("codMart")
private String codMart;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("flagPrimario")
private String flagPrimario;
@SerializedName("tipoCodBarre")
private String tipoCodBarre;
public MtbAartBarCode() {
this.type = "mtb_aart_bar_code";
}
public String getCodBarre() {
return codBarre;
}
@@ -52,4 +60,19 @@ public class MtbAartBarCode extends EntityBase {
public void setTipoCodBarre(String tipoCodBarre) {
this.tipoCodBarre = tipoCodBarre;
}
/**
* Crea una copia dell'oggetto MtbAartBarCode corrente
* @return Una nuova istanza di MtbAartBarCode con gli stessi valori
*/
@Override
public MtbAartBarCode clone() {
MtbAartBarCode clone = new MtbAartBarCode();
clone.setCodBarre(this.codBarre);
clone.setCodMart(this.codMart);
clone.setQtaCnf(this.qtaCnf != null ? new BigDecimal(this.qtaCnf.toString()) : null);
clone.setFlagPrimario(this.flagPrimario);
clone.setTipoCodBarre(this.tipoCodBarre);
return clone;
}
}

View File

@@ -1,9 +1,16 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Objects;
import it.integry.integrywmsnative.core.model.key.DtbDocrKey;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
import it.integry.integrywmsnative.core.model.key.MtbColrKey;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@@ -11,48 +18,102 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class MtbColr extends EntityBase {
@SerializedName("gestione")
private String gestione;
@SerializedName("serCollo")
private String serCollo;
@SerializedName("numCollo")
private Integer numCollo;
private String dataCollo;
@SerializedName("dataCollo")
private LocalDate dataCollo;
@SerializedName("riga")
private Integer riga;
@SerializedName("rigaOrd")
private Integer rigaOrd;
@SerializedName("codMart")
private String codMart;
@SerializedName("codBarre")
private String codBarre;
@SerializedName("codCol")
private String codCol;
@SerializedName("codTagl")
private String codTagl;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("gestioneRif")
private String gestioneRif;
@SerializedName("serColloRif")
private String serColloRif;
@SerializedName("note")
private String note;
@SerializedName("dataOrd")
private LocalDate dataOrd;
private String dataColloRif;
@SerializedName("dataColloRif")
private LocalDate dataColloRif;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("qtaCol")
private BigDecimal qtaCol;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("numEtich")
private Integer numEtich;
@SerializedName("numColloRif")
private Integer numColloRif;
private String datetimeRow;
@SerializedName("datetimeRow")
private LocalDateTime datetimeRow;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("numCnf")
private BigDecimal numCnf;
@SerializedName("insPartitaMag")
private String insPartitaMag;
@SerializedName("mtbPartitaMag_descrizione")
private String mtbPartitaMag_descrizione;
@SerializedName("dataScadPartita")
private LocalDate dataScadPartita;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("untMis")
private String untMis;
@SerializedName("causale")
private Integer causale;
@SerializedName("utente")
private String utente;
@SerializedName("codAnagDoc")
private String codAnagDoc;
@SerializedName("codDtipDoc")
private String codDtipDoc;
private String dataDoc;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("idRigaDoc")
private Integer idRigaDoc;
@SerializedName("pesoNettoKg")
private BigDecimal pesoNettoKg;
@SerializedName("pesoLordoKg")
private BigDecimal pesoLordoKg;
@SerializedName("barcodeUlIn")
private String barcodeUlIn;
@SerializedName("barcodeUlOut")
private String barcodeUlOut;
@SerializedName("codMdepIn")
private String codMdepIn;
@SerializedName("codMdepOut")
private String codMdepOut;
@SerializedName("posizioneIn")
private String posizioneIn;
@SerializedName("posizioneOut")
private String posizioneOut;
@SerializedName("mtbAart")
private MtbAart mtbAart;
@SerializedName("mtbPartitaMag")
private MtbPartitaMag mtbPartitaMag;
@@ -109,6 +170,12 @@ public class MtbColr extends EntityBase {
this.idRigaDoc = other.idRigaDoc;
this.pesoNettoKg = other.pesoNettoKg;
this.pesoLordoKg = other.pesoLordoKg;
this.barcodeUlIn = other.barcodeUlIn;
this.barcodeUlOut = other.barcodeUlOut;
this.posizioneIn = other.posizioneIn;
this.posizioneOut = other.posizioneOut;
this.codMdepIn = other.codMdepIn;
this.codMdepOut = other.codMdepOut;
// Deep copy degli oggetti complessi
this.mtbAart = other.mtbAart != null ? new MtbAart(other.mtbAart) : null;
@@ -119,6 +186,39 @@ public class MtbColr extends EntityBase {
// this.refMtbColr = other.refMtbColr;
}
public MtbColrKey getKey() {
if (UtilityString.isNullOrEmpty(gestione) ||
UtilityString.isNullOrEmpty(serCollo) ||
getDataColloLD() == null ||
numCollo == null ||
riga == null)
return null;
return new MtbColrKey(gestione, serCollo, getDataColloLD(), numCollo, riga);
}
public DtbDoctKey getDocumentKey() {
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
UtilityString.isNullOrEmpty(codDtipDoc) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null)
return null;
return new DtbDoctKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc);
}
public DtbDocrKey getDocumentRowKey() {
if (UtilityString.isNullOrEmpty(codAnagDoc) ||
UtilityString.isNullOrEmpty(codDtipDoc) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null ||
idRigaDoc == null)
return null;
return new DtbDocrKey(codAnagDoc, codDtipDoc, dataDoc, numDoc, serDoc, idRigaDoc);
}
public static class Causale {
public static final int DEFAULT = 0;
@@ -164,21 +264,18 @@ public class MtbColr extends EntityBase {
return this;
}
public String getDataColloS() {
public LocalDate getDataColloLD() {
return dataCollo;
}
public Date getDataColloD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataColloS());
}
public MtbColr setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
this.dataCollo = UtilityDate.recognizeLocalDateWithExceptionHandler(dataCollo);
return this;
}
public MtbColr setDataCollo(Date dataCollo) {
setDataCollo(UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
public MtbColr setDataCollo(LocalDate dataCollo) {
this.dataCollo = dataCollo;
return this;
}
@@ -287,25 +384,24 @@ public class MtbColr extends EntityBase {
}
public String getDataColloRifS() {
return dataColloRif;
return dataColloRif != null ? UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_SLASHED_FORMATTER.format(dataColloRif) : null;
}
public Date getDataColloRifD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataColloRifS());
}
public MtbColr setDataColloRif(String dataColloRif) {
this.dataColloRif = dataColloRif;
return this;
public LocalDate getDataColloRifLD() {
return dataColloRif;
}
public MtbColr setDataColloRif(Date dataColloRif) {
this.dataColloRif = UtilityDate.formatDate(dataColloRif, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
public MtbColr setDataColloRif(String dataColloRif) {
this.dataColloRif = UtilityDate.recognizeLocalDateWithExceptionHandler(dataColloRif);
return this;
}
public MtbColr setDataColloRif(LocalDate dataColloRif) {
this.dataColloRif = UtilityDate.formatDate(dataColloRif, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
this.dataColloRif = dataColloRif;
return this;
}
@@ -354,26 +450,15 @@ public class MtbColr extends EntityBase {
return this;
}
public String getDatetimeRowS() {
public LocalDateTime getDatetimeRow() {
return datetimeRow;
}
public Date getDatetimeRowD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDatetimeRowS());
}
public MtbColr setDatetimeRow(String datetimeRow) {
public MtbColr setDatetimeRow(LocalDateTime datetimeRow) {
this.datetimeRow = datetimeRow;
return this;
}
public MtbColr setDatetimeRow(Date datetimeRow) {
this.datetimeRow = UtilityDate.formatDate(datetimeRow, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
return this;
}
public String getCodJcom() {
return codJcom;
}
@@ -495,11 +580,11 @@ public class MtbColr extends EntityBase {
return this;
}
public String getDataDoc() {
public LocalDate getDataDoc() {
return dataDoc;
}
public MtbColr setDataDoc(String dataDoc) {
public MtbColr setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
@@ -566,4 +651,170 @@ public class MtbColr extends EntityBase {
this.refMtbColr = refMtbColr;
return this;
}
public LocalDate getDataCollo() {
return dataCollo;
}
public LocalDate getDataColloRif() {
return dataColloRif;
}
public String getBarcodeUlIn() {
return barcodeUlIn;
}
public MtbColr setBarcodeUlIn(String barcodeUlIn) {
this.barcodeUlIn = barcodeUlIn;
return this;
}
public String getBarcodeUlOut() {
return barcodeUlOut;
}
public MtbColr setBarcodeUlOut(String barcodeUlOut) {
this.barcodeUlOut = barcodeUlOut;
return this;
}
public String getCodMdepIn() {
return codMdepIn;
}
public MtbColr setCodMdepIn(String codMdepIn) {
this.codMdepIn = codMdepIn;
return this;
}
public String getCodMdepOut() {
return codMdepOut;
}
public MtbColr setCodMdepOut(String codMdepOut) {
this.codMdepOut = codMdepOut;
return this;
}
public String getPosizioneIn() {
return posizioneIn;
}
public MtbColr setPosizioneIn(String posizioneIn) {
this.posizioneIn = posizioneIn;
return this;
}
public String getPosizioneOut() {
return posizioneOut;
}
public MtbColr setPosizioneOut(String posizioneOut) {
this.posizioneOut = posizioneOut;
return this;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
MtbColr mtbColr = (MtbColr) o;
return Objects.equals(getGestione(), mtbColr.getGestione()) &&
Objects.equals(getSerCollo(), mtbColr.getSerCollo()) &&
Objects.equals(getNumCollo(), mtbColr.getNumCollo()) &&
Objects.equals(getDataCollo(), mtbColr.getDataCollo()) &&
Objects.equals(getRiga(), mtbColr.getRiga()) &&
Objects.equals(getRigaOrd(), mtbColr.getRigaOrd()) &&
Objects.equals(getCodMart(), mtbColr.getCodMart()) &&
Objects.equals(getCodBarre(), mtbColr.getCodBarre()) &&
Objects.equals(getCodCol(), mtbColr.getCodCol()) &&
Objects.equals(getCodTagl(), mtbColr.getCodTagl()) &&
Objects.equals(getPartitaMag(), mtbColr.getPartitaMag()) &&
Objects.equals(getGestioneRif(), mtbColr.getGestioneRif()) &&
Objects.equals(getSerColloRif(), mtbColr.getSerColloRif()) &&
Objects.equals(getNote(), mtbColr.getNote()) &&
Objects.equals(getDataOrd(), mtbColr.getDataOrd()) &&
Objects.equals(getDataColloRif(), mtbColr.getDataColloRif()) &&
Objects.equals(getQtaCnf(), mtbColr.getQtaCnf()) &&
Objects.equals(getQtaCol(), mtbColr.getQtaCol()) &&
Objects.equals(getNumOrd(), mtbColr.getNumOrd()) &&
Objects.equals(getNumEtich(), mtbColr.getNumEtich()) &&
Objects.equals(getNumColloRif(), mtbColr.getNumColloRif()) &&
Objects.equals(getDatetimeRow(), mtbColr.getDatetimeRow()) &&
Objects.equals(getCodJcom(), mtbColr.getCodJcom()) &&
Objects.equals(getNumCnf(), mtbColr.getNumCnf()) &&
Objects.equals(getInsPartitaMag(), mtbColr.getInsPartitaMag()) &&
Objects.equals(getMtbPartitaMag_descrizione(), mtbColr.getMtbPartitaMag_descrizione()) &&
Objects.equals(getDataScadPartita(), mtbColr.getDataScadPartita()) &&
Objects.equals(getDescrizione(), mtbColr.getDescrizione()) &&
Objects.equals(getUntMis(), mtbColr.getUntMis()) &&
Objects.equals(getCausale(), mtbColr.getCausale()) &&
Objects.equals(getUtente(), mtbColr.getUtente()) &&
Objects.equals(getCodAnagDoc(), mtbColr.getCodAnagDoc()) &&
Objects.equals(getCodDtipDoc(), mtbColr.getCodDtipDoc()) &&
Objects.equals(getDataDoc(), mtbColr.getDataDoc()) &&
Objects.equals(getSerDoc(), mtbColr.getSerDoc()) &&
Objects.equals(getNumDoc(), mtbColr.getNumDoc()) &&
Objects.equals(getIdRigaDoc(), mtbColr.getIdRigaDoc()) &&
Objects.equals(getPesoNettoKg(), mtbColr.getPesoNettoKg()) &&
Objects.equals(getPesoLordoKg(), mtbColr.getPesoLordoKg()) &&
Objects.equals(getBarcodeUlIn(), mtbColr.getBarcodeUlIn()) &&
Objects.equals(getBarcodeUlOut(), mtbColr.getBarcodeUlOut()) &&
Objects.equals(getCodMdepIn(), mtbColr.getCodMdepIn()) &&
Objects.equals(getCodMdepOut(), mtbColr.getCodMdepOut()) &&
Objects.equals(getPosizioneIn(), mtbColr.getPosizioneIn()) &&
Objects.equals(getPosizioneOut(), mtbColr.getPosizioneOut());
}
@Override
public int hashCode() {
int result = Objects.hashCode(getGestione());
result = 31 * result + Objects.hashCode(getSerCollo());
result = 31 * result + Objects.hashCode(getNumCollo());
result = 31 * result + Objects.hashCode(getDataCollo());
result = 31 * result + Objects.hashCode(getRiga());
result = 31 * result + Objects.hashCode(getRigaOrd());
result = 31 * result + Objects.hashCode(getCodMart());
result = 31 * result + Objects.hashCode(getCodBarre());
result = 31 * result + Objects.hashCode(getCodCol());
result = 31 * result + Objects.hashCode(getCodTagl());
result = 31 * result + Objects.hashCode(getPartitaMag());
result = 31 * result + Objects.hashCode(getGestioneRif());
result = 31 * result + Objects.hashCode(getSerColloRif());
result = 31 * result + Objects.hashCode(getNote());
result = 31 * result + Objects.hashCode(getDataOrd());
result = 31 * result + Objects.hashCode(getDataColloRif());
result = 31 * result + Objects.hashCode(getQtaCnf());
result = 31 * result + Objects.hashCode(getQtaCol());
result = 31 * result + Objects.hashCode(getNumOrd());
result = 31 * result + Objects.hashCode(getNumEtich());
result = 31 * result + Objects.hashCode(getNumColloRif());
result = 31 * result + Objects.hashCode(getDatetimeRow());
result = 31 * result + Objects.hashCode(getCodJcom());
result = 31 * result + Objects.hashCode(getNumCnf());
result = 31 * result + Objects.hashCode(getInsPartitaMag());
result = 31 * result + Objects.hashCode(getMtbPartitaMag_descrizione());
result = 31 * result + Objects.hashCode(getDataScadPartita());
result = 31 * result + Objects.hashCode(getDescrizione());
result = 31 * result + Objects.hashCode(getUntMis());
result = 31 * result + Objects.hashCode(getCausale());
result = 31 * result + Objects.hashCode(getUtente());
result = 31 * result + Objects.hashCode(getCodAnagDoc());
result = 31 * result + Objects.hashCode(getCodDtipDoc());
result = 31 * result + Objects.hashCode(getDataDoc());
result = 31 * result + Objects.hashCode(getSerDoc());
result = 31 * result + Objects.hashCode(getNumDoc());
result = 31 * result + Objects.hashCode(getIdRigaDoc());
result = 31 * result + Objects.hashCode(getPesoNettoKg());
result = 31 * result + Objects.hashCode(getPesoLordoKg());
result = 31 * result + Objects.hashCode(getBarcodeUlIn());
result = 31 * result + Objects.hashCode(getBarcodeUlOut());
result = 31 * result + Objects.hashCode(getCodMdepIn());
result = 31 * result + Objects.hashCode(getCodMdepOut());
result = 31 * result + Objects.hashCode(getPosizioneIn());
result = 31 * result + Objects.hashCode(getPosizioneOut());
return result;
}
}

View File

@@ -2,11 +2,13 @@ package it.integry.integrywmsnative.core.model;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableArrayList;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.gson.annotations.SerializedName;
import org.jetbrains.annotations.Nullable;
@@ -17,12 +19,13 @@ import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
import it.integry.integrywmsnative.core.model.key.DtbDoctKey;
import it.integry.integrywmsnative.core.model.key.MtbColtKey;
import it.integry.integrywmsnative.core.model.observable.ObservableMtbTcol;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
/**
@@ -30,49 +33,103 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
*/
public class MtbColt extends EntityBase {
@SerializedName("gestione")
private String gestione;
private String dataCollo;
@SerializedName("dataCollo")
private LocalDate dataCollo;
@SerializedName("serCollo")
private String serCollo;
@SerializedName("numCollo")
private Integer numCollo;
@SerializedName("rifOrd")
private String rifOrd;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codVdes")
private String codVdes;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codVlis")
private String codVlis;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("codTcol")
private String codTcol;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("filtroOrdini")
private String filtroOrdini;
@SerializedName("preparatoDa")
private String preparatoDa;
@SerializedName("annotazioni")
private String annotazioni;
@SerializedName("posizione")
private String posizione;
@SerializedName("codDtipProvv")
private String codDtipProvv;
@SerializedName("serDocProvv")
private String serDocProvv;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("dataOrd")
private String dataOrd;
private String dataDoc;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("oraInizPrep")
private String oraInizPrep;
@SerializedName("oraFinePrep")
private String oraFinePrep;
@SerializedName("dataDocProvv")
private String dataDocProvv;
@SerializedName("dataVers")
private String dataVers;
@SerializedName("segno")
private Integer segno;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("numDocProvv")
private Integer numDocProvv;
@SerializedName("pesoKg")
private BigDecimal pesoKg;
@SerializedName("pesoNettoKg")
private BigDecimal pesoNettoKg;
@SerializedName("lunghezzaCm")
private BigDecimal lunghezzaCm;
@SerializedName("larghezzaCm")
private BigDecimal larghezzaCm;
@SerializedName("altezzaCm")
private BigDecimal altezzaCm;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("barcodeUl")
private String barcodeUl;
@SerializedName("progressivoUl")
private Integer progressivoUl;
private final transient MutableLiveData<ObservableMtbTcol> mtbTCol = new MutableLiveData<>();
@SerializedName("disablePrint")
private Boolean disablePrint;
@SerializedName("ragSocCliente")
private String ragSocCliente;
@SerializedName("descrizioneAnomalia")
private String descrizioneAnomalia;
@SerializedName("descrizioneLivelloAnomalia")
private String descrizioneLivelloAnomalia;
@SerializedName("escludiPickingVendita")
private Boolean escludiPickingVendita;
@SerializedName("escludiPickingLavorazione")
private Boolean escludiPickingLavorazione;
@SerializedName("mtbColr")
private ObservableArrayList<MtbColr> mtbColr = new ObservableArrayList<>();
public ObservableArrayList<MtbColr> getMtbColr() {
@@ -86,7 +143,7 @@ public class MtbColt extends EntityBase {
public MtbColt() {
type = "mtb_colt";
setDataCollo(UtilityDate.getDateInstance());
setDataCollo(LocalDate.now());
setSerCollo("/");
if (SettingsManager.i().isUserLoggedIn()) {
@@ -94,6 +151,27 @@ public class MtbColt extends EntityBase {
}
}
public MtbColtKey getKey() {
if (UtilityString.isNullOrEmpty(gestione) ||
UtilityString.isNullOrEmpty(serCollo) ||
getDataColloLD() == null ||
numCollo == null)
return null;
return new MtbColtKey(gestione, serCollo, getDataColloLD(), numCollo);
}
public DtbDoctKey getDocumentKey() {
if (UtilityString.isNullOrEmpty(codAnag) ||
UtilityString.isNullOrEmpty(codDtip) ||
UtilityString.isNullOrEmpty(serDoc) ||
dataDoc == null ||
numDoc == null)
return null;
return new DtbDoctKey(codAnag, codDtip, dataDoc, numDoc, serDoc);
}
public MtbColt initDefaultFields(GestioneEnum gestioneEnum) {
setGestione(gestioneEnum);
setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep());
@@ -145,20 +223,13 @@ public class MtbColt extends EntityBase {
}
public String getDataColloHumanLong() {
Date dataColloD = null;
try {
dataColloD = getDataColloD();
} catch (Exception ex) {
UtilityLogger.error(ex);
}
if (dataColloD != null) {
return UtilityDate.formatDate(dataColloD, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN_LONG);
if (dataCollo != null) {
return UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_HUMAN_FORMATTER.format(dataCollo);
} else return null;
}
public String getDataColloS() {
return dataCollo;
return dataCollo != null ? UtilityDate.COMMONS_DATE_FORMATS.DATE_DMY_SLASHED_FORMATTER.format(dataCollo) : null;
}
public Date getDataColloD() {
@@ -166,21 +237,16 @@ public class MtbColt extends EntityBase {
}
public LocalDate getDataColloLD() {
return UtilityDate.recognizeLocalDateWithExceptionHandler(getDataColloS());
return dataCollo;
}
public MtbColt setDataCollo(String dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public MtbColt setDataCollo(Date dataCollo) {
this.dataCollo = UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
this.dataCollo = UtilityDate.recognizeLocalDateWithExceptionHandler(dataCollo);
return this;
}
public MtbColt setDataCollo(LocalDate dataCollo) {
this.dataCollo = UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH);
this.dataCollo = dataCollo;
return this;
}
@@ -351,6 +417,10 @@ public class MtbColt extends EntityBase {
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrd());
}
public LocalDate getDataOrdLD() {
return UtilityDate.recognizeLocalDateWithExceptionHandler(getDataOrd());
}
public String getDataOrd() {
return dataOrd;
}
@@ -361,15 +431,15 @@ public class MtbColt extends EntityBase {
}
public MtbColt setDataOrdD(Date dataOrd) {
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
this.dataOrd = UtilityDate.formatDate(dataOrd, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
return this;
}
public String getDataDoc() {
public LocalDate getDataDoc() {
return dataDoc;
}
public MtbColt setDataDoc(String dataDoc) {
public MtbColt setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
@@ -384,7 +454,7 @@ public class MtbColt extends EntityBase {
}
public MtbColt setOraInizPrep(Date oraInizPrep) {
this.oraInizPrep = UtilityDate.formatDate(oraInizPrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
this.oraInizPrep = UtilityDate.formatDate(oraInizPrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
return this;
}
@@ -398,7 +468,7 @@ public class MtbColt extends EntityBase {
}
public MtbColt setOraFinePrep(Date oraFinePrep) {
this.oraFinePrep = UtilityDate.formatDate(oraFinePrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
this.oraFinePrep = UtilityDate.formatDate(oraFinePrep, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
return this;
}
@@ -434,7 +504,7 @@ public class MtbColt extends EntityBase {
}
public MtbColt setDataVers(Date dataVers) {
this.dataVers = UtilityDate.formatDate(dataVers, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH);
this.dataVers = UtilityDate.formatDate(dataVers, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIMES_SLASH);
return this;
}
@@ -537,6 +607,42 @@ public class MtbColt extends EntityBase {
return this;
}
public String getDescrizioneAnomalia() {
return descrizioneAnomalia;
}
public MtbColt setDescrizioneAnomalia(String descrizioneAnomalia) {
this.descrizioneAnomalia = descrizioneAnomalia;
return this;
}
public String getDescrizioneLivelloAnomalia() {
return descrizioneLivelloAnomalia;
}
public MtbColt setDescrizioneLivelloAnomalia(String descrizioneLivelloAnomalia) {
this.descrizioneLivelloAnomalia = descrizioneLivelloAnomalia;
return this;
}
public Boolean getEscludiPickingVendita() {
return escludiPickingVendita;
}
public MtbColt setEscludiPickingVendita(Boolean escludiPickingVendita) {
this.escludiPickingVendita = escludiPickingVendita;
return this;
}
public Boolean getEscludiPickingLavorazione() {
return escludiPickingLavorazione;
}
public MtbColt setEscludiPickingLavorazione(Boolean escludiPickingLavorazione) {
this.escludiPickingLavorazione = escludiPickingLavorazione;
return this;
}
public String getCodJcom() {
return codJcom;
}
@@ -555,6 +661,15 @@ public class MtbColt extends EntityBase {
return this;
}
public Integer getProgressivoUl() {
return progressivoUl;
}
public MtbColt setProgressivoUl(Integer progressivoUl) {
this.progressivoUl = progressivoUl;
return this;
}
public ObservableMtbTcol getMtbTCol() {
return mtbTCol.getValue();
}
@@ -590,12 +705,12 @@ public class MtbColt extends EntityBase {
try {
String condition = (String.format("(d.g = %s AND d.d = %s and d.n = %s",
UtilityDB.valueToString(filtroOrdineDTO.getGestioneOrd()),
UtilityDB.valueToString(UtilityDate.formatDate(filtroOrdineDTO.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)),
UtilityDB.valueToString(filtroOrdineDTO.getDataOrd()),
UtilityDB.valueToString(filtroOrdineDTO.getNumOrd())));
if (!UtilityString.isNullOrEmpty(filtroOrdineDTO.getDataConsS())) {
if (filtroOrdineDTO.getDataCons() != null) {
condition += (String.format(" AND dr.dc = %s",
UtilityDB.valueToString(UtilityDate.formatDate(filtroOrdineDTO.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))));
UtilityDB.valueToString(filtroOrdineDTO.getDataCons())));
}
condition += ")";
@@ -640,6 +755,7 @@ public class MtbColt extends EntityBase {
}
@NonNull
@Override
public EntityBase clone() {
return clone(true);

View File

@@ -1,39 +1,65 @@
package it.integry.integrywmsnative.core.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class MtbDepo extends EntityBase {
@SerializedName("codMdep")
private String codMdep;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("flagVal")
private String flagVal;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("percDepo")
private BigDecimal percDepo;
@SerializedName("valDepo")
private BigDecimal valDepo;
@SerializedName("indirizzo")
private String indirizzo;
@SerializedName("cap")
private String cap;
@SerializedName("citta")
private String citta;
@SerializedName("prov")
private String prov;
@SerializedName("tel")
private String tel;
@SerializedName("nazione")
private String nazione;
@SerializedName("fax")
private String fax;
@SerializedName("eMail")
private String eMail;
@SerializedName("sitoWeb")
private String sitoWeb;
@SerializedName("codVdes")
private String codVdes;
@SerializedName("serie")
private String serie;
@SerializedName("flagMovimentabile")
private String flagMovimentabile;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("codVlis")
private String codVlis;
@SerializedName("codCcau")
private String codCcau;
@SerializedName("codCcon")
private String codCcon;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("codDtipFat")
private String codDtipFat;
@SerializedName("flagContoVendita")
private String flagContoVendita;
@SerializedName("flagTipoNegozio")
private String flagTipoNegozio;
@SerializedName("codMdepReso")
private String codMdepReso;

View File

@@ -1,21 +1,30 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.util.Objects;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class MtbDepoPosizione {
@SerializedName("codMdep")
private String codMdep;
@SerializedName("posizione")
private String posizione;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("flagMonoCollo")
private String flagMonoCollo;
@SerializedName("flagLineaProduzione")
private String flagLineaProduzione;
@SerializedName("priorita")
private Integer priorita;
@SerializedName("tipoMagazAutomatico")
private String tipoMagazAutomatico;
public MtbDepoPosizione clone() {
try {
return (MtbDepoPosizione) super.clone();
@@ -27,6 +36,18 @@ public class MtbDepoPosizione {
return null;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
MtbDepoPosizione that = (MtbDepoPosizione) o;
return Objects.equals(getCodMdep(), that.getCodMdep()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(isFlagMonoCollo(), that.isFlagMonoCollo()) && Objects.equals(isFlagLineaProduzione(), that.isFlagLineaProduzione()) && Objects.equals(getPriorita(), that.getPriorita()) && Objects.equals(getTipoMagazAutomatico(), that.getTipoMagazAutomatico());
}
@Override
public int hashCode() {
return Objects.hash(getCodMdep(), getPosizione(), getDescrizione(), isFlagMonoCollo(), isFlagLineaProduzione(), getPriorita(), getTipoMagazAutomatico());
}
public String getCodMdep() {
return codMdep;
}
@@ -101,4 +122,5 @@ public class MtbDepoPosizione {
public boolean isMagazzinoAutomatico() {
return !UtilityString.isNullOrEmpty(getTipoMagazAutomatico());
}
}

View File

@@ -1,16 +1,24 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
public class MtbGrup extends EntityBase {
@SerializedName("codMgrp")
private String codMgrp;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("flagValMag")
private String flagValMag;
@SerializedName("logoWeb")
private String logoWeb;
@SerializedName("criterioVal")
private String criterioVal;
@SerializedName("tipoMgrp")
private String tipoMgrp;
@SerializedName("mtbSgrp")
private List<MtbSgrp> mtbSgrp = new ArrayList<>();
public MtbGrup() {

View File

@@ -1,31 +1,53 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
public class MtbInvenr extends EntityBase {
@SerializedName("idInventario")
private Long idInventario;
@SerializedName("idRiga")
private Integer idRiga;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("codMart")
private String codMart;
@SerializedName("codCol")
private String codCol;
@SerializedName("codTagl")
private String codTagl;
@SerializedName("qtaInv")
private BigDecimal qtaInv;
@SerializedName("dataOraInv")
private LocalDateTime dataOraInv;
@SerializedName("costoInv")
private BigDecimal costoInv;
@SerializedName("giacenzaConf")
private BigDecimal giacenzaConf;
@SerializedName("giacenzaDb")
private BigDecimal giacenzaDb;
@SerializedName("idDisp")
private String idDisp;
@SerializedName("dataCreate")
private Date dataCreate;
@SerializedName("numConf")
private BigDecimal numConf;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("scanCodBarre")
private String scanCodBarre;
@SerializedName("zona")
private String zona;
@SerializedName("dataInventario")
private Date dataInventario;
@SerializedName("regolaCalcoloCosto")
private String regolaCalcoloCosto;
@SerializedName("dataScadPartitaMag")
private Date dataScadPartitaMag;
@SerializedName("mtbPartitaMag")
private MtbPartitaMag mtbPartitaMag;
public MtbInvenr() {

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@@ -7,29 +8,53 @@ import java.util.List;
public class MtbInvent extends EntityBase {
@SerializedName("idInventario")
private Long idInventario;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("dataInventario")
private LocalDate dataInventario;
@SerializedName("dataReg")
private LocalDateTime dataReg;
@SerializedName("dataVer")
private LocalDateTime dataVer;
@SerializedName("filtro")
private String filtro;
@SerializedName("flagStato")
private String flagStato;
@SerializedName("flagOperazione")
private String flagOperazione;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("inseritoDa")
private String inseritoDa;
@SerializedName("registratoDa")
private String registratoDa;
@SerializedName("tipoGiacenza")
private String tipoGiacenza;
@SerializedName("tipoVerifica")
private String tipoVerifica;
@SerializedName("verificatoDa")
private String verificatoDa;
@SerializedName("dataIns")
private Date dataIns;
@SerializedName("dataDoc")
private Date dataDoc;
@SerializedName("serDoc")
private String serDoc;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("regolaCalcoloCosto")
private String regolaCalcoloCosto;
@SerializedName("dataOraInizio")
private LocalDateTime dataOraInizio;
@SerializedName("dataOraFine")
private LocalDateTime dataOraFine;
@SerializedName("causale")
private String causale;
@SerializedName("mtbInvenr")
private List<MtbInvenr> mtbInvenr;
public MtbInvent() {

View File

@@ -1,32 +1,76 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
public class MtbPartitaMag extends EntityBase {
@SerializedName("codMart")
private String codMart;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("dataIns")
private LocalDateTime dataIns;
@SerializedName("dataScad")
private LocalDate dataScad;
@SerializedName("scelta")
private Integer scelta;
@SerializedName("costoUntUmMag")
private BigDecimal costoUntUmMag;
@SerializedName("valUntUmMag")
private BigDecimal valUntUmMag;
@SerializedName("taraCnfKg")
private BigDecimal taraCnfKg;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("flagImballoArendere")
private String flagImballoArendere;
@SerializedName("flagStato")
private String flagStato;
@SerializedName("codDiviCont")
private String codDiviCont;
@SerializedName("cambioDiviCont")
private BigDecimal cambioDiviCont;
@SerializedName("barcode")
private String barcode;
@SerializedName("note")
private String note;
@SerializedName("rapConv2")
private BigDecimal rapConv2;
@SerializedName("rapConv3")
private BigDecimal rapConv3;
@SerializedName("posizione")
private String posizione;
@SerializedName("dataAggPrz")
private String dataAggPrz;
@SerializedName("partitaMagSec")
private String partitaMagSec;
@SerializedName("qtaAttesa")
private BigDecimal qtaAttesa;
public MtbPartitaMag() {
@@ -257,4 +301,17 @@ public class MtbPartitaMag extends EntityBase {
this.qtaAttesa = qtaAttesa;
return this;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
MtbPartitaMag that = (MtbPartitaMag) o;
return Objects.equals(getCodMart(), that.getCodMart()) && Objects.equals(getPartitaMag(), that.getPartitaMag()) && Objects.equals(getDescrizione(), that.getDescrizione()) && Objects.equals(getDataIns(), that.getDataIns()) && Objects.equals(getDataScad(), that.getDataScad()) && Objects.equals(getScelta(), that.getScelta()) && Objects.equals(getCostoUntUmMag(), that.getCostoUntUmMag()) && Objects.equals(getValUntUmMag(), that.getValUntUmMag()) && Objects.equals(getTaraCnfKg(), that.getTaraCnfKg()) && Objects.equals(getQtaCnf(), that.getQtaCnf()) && Objects.equals(getFlagImballoArendere(), that.getFlagImballoArendere()) && Objects.equals(getFlagStato(), that.getFlagStato()) && Objects.equals(getCodDiviCont(), that.getCodDiviCont()) && Objects.equals(getCambioDiviCont(), that.getCambioDiviCont()) && Objects.equals(getBarcode(), that.getBarcode()) && Objects.equals(getNote(), that.getNote()) && Objects.equals(getRapConv2(), that.getRapConv2()) && Objects.equals(getRapConv3(), that.getRapConv3()) && Objects.equals(getPosizione(), that.getPosizione()) && Objects.equals(getDataAggPrz(), that.getDataAggPrz()) && Objects.equals(getPartitaMagSec(), that.getPartitaMagSec()) && Objects.equals(getQtaAttesa(), that.getQtaAttesa());
}
@Override
public int hashCode() {
return Objects.hash(getCodMart(), getPartitaMag(), getDescrizione(), getDataIns(), getDataScad(), getScelta(), getCostoUntUmMag(), getValUntUmMag(), getTaraCnfKg(), getQtaCnf(), getFlagImballoArendere(), getFlagStato(), getCodDiviCont(), getCambioDiviCont(), getBarcode(), getNote(), getRapConv2(), getRapConv3(), getPosizione(), getDataAggPrz(), getPartitaMagSec(), getQtaAttesa());
}
}

View File

@@ -1,10 +1,20 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
public class MtbSfam extends EntityBase {
@SerializedName("codMgrp")
private String codMgrp;
@SerializedName("codMsgr")
private String codMsgr;
@SerializedName("codMsfa")
private String codMsfa;
@SerializedName("descrizione")
private String descrizione;
public MtbSfam() {

View File

@@ -1,19 +1,40 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
public class MtbSgrp extends EntityBase {
@SerializedName("codMgrp")
private String codMgrp;
@SerializedName("codMsgr")
private String codMsgr;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("inclInStat")
private String inclInStat;
@SerializedName("contoRimFin")
private String contoRimFin;
@SerializedName("ordinamento")
private Integer ordinamento;
@SerializedName("chkGiacenzaNeg")
private Boolean chkGiacenzaNeg;
@SerializedName("flagReso")
private Boolean flagReso;
@SerializedName("codCconWip")
private String codCconWip;
@SerializedName("mtbSfam")
private List<MtbSfam> mtbSfam = new ArrayList<>();
public MtbSgrp() {

View File

@@ -4,20 +4,42 @@ import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class MtbTCol {
public class MtbTCol extends EntityBase {
@SerializedName("codTcol")
private String codTcol;
@SerializedName("pesoKg")
private BigDecimal pesoKg;
@SerializedName("lunghezzaCm")
private BigDecimal lunghezzaCm;
@SerializedName("larghezzaCm")
private BigDecimal larghezzaCm;
@SerializedName("altezzaCm")
private BigDecimal altezzaCm;
@SerializedName("taraKg")
private BigDecimal taraKg;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("codMart")
private String codMart;
@SerializedName("flagUiUl")
private FlagUiUlEnum flagUiUl;
@SerializedName("circuito")
private String circuito;
public MtbTCol() {
this.type = "mtb_tcol";
}
public String getCodTcol() {
return codTcol;
}

View File

@@ -1,32 +1,32 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class MtbUntMis extends EntityBase {
@SerializedName("untMis")
private String untMis;
@SerializedName("flagDig")
private String flagDig;
@SerializedName("cifreDec")
private BigDecimal cifreDec;
@SerializedName("tipoUm")
private String tipoUm;
@SerializedName("flagUnitaKg")
private String flagUnitaKg;
@SerializedName("flagAttivo")
private String flagAttivo;
public MtbUntMis() {
this.type = "mtb_unt_mis";
}
// Costruttore di copia
public MtbUntMis(MtbUntMis other) {
this();
this.untMis = other.untMis;
this.flagDig = other.flagDig;
this.cifreDec = other.cifreDec; // BigDecimal è immutabile
this.tipoUm = other.tipoUm;
this.flagUnitaKg = other.flagUnitaKg;
this.flagAttivo = other.flagAttivo;
}
public String getUntMis() {
return untMis;
}
@@ -85,4 +85,20 @@ public class MtbUntMis extends EntityBase {
this.flagAttivo = flagAttivo;
return this;
}
/**
* Crea una copia dell'oggetto MtbUntMis corrente
* @return Una nuova istanza di MtbUntMis con gli stessi valori
*/
@Override
public MtbUntMis clone() {
MtbUntMis clone = new MtbUntMis();
clone.setUntMis(this.untMis);
clone.setFlagDig(this.flagDig);
clone.setCifreDec(this.cifreDec);
clone.setTipoUm(this.tipoUm);
clone.setFlagUnitaKg(this.flagUnitaKg);
clone.setFlagAttivo(this.flagAttivo);
return clone;
}
}

View File

@@ -1,10 +1,13 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -14,40 +17,111 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class MvwSitArtUdcDetInventario {
@SerializedName("gestione")
private String gestione;
@SerializedName("dataCollo")
private LocalDate dataCollo;
@SerializedName("serCollo")
private String serCollo;
@SerializedName("numCollo")
private Integer numCollo;
@SerializedName("segno")
private Integer segno;
@SerializedName("codMdep")
private String codMdep;
@SerializedName("posizione")
private String posizione;
@SerializedName("priorita")
private Integer priorita;
@SerializedName("codGruppo")
private String codGruppo;
@SerializedName("gruppo")
private String gruppo;
@SerializedName("codSgruppo")
private String codSgruppo;
@SerializedName("sottogruppo")
private String sottogruppo;
@SerializedName("codMart")
private String codMart;
@SerializedName("diacod")
private String diacod;
@SerializedName("descrizioneEstesa")
private String descrizioneEstesa;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("dataScad")
private LocalDate dataScad;
@SerializedName("codJcom")
private String codJcom;
@SerializedName("commessa")
private String commessa;
@SerializedName("untMis")
private String untMis;
@SerializedName("qtaCol")
private BigDecimal qtaCol;
@SerializedName("numCnf")
private BigDecimal numCnf;
@SerializedName("qtaCnf")
private BigDecimal qtaCnf;
@SerializedName("pesoNettoKg")
private BigDecimal pesoNettoKg;
@SerializedName("pesoLordoKg")
private BigDecimal pesoLordoKg;
@SerializedName("codJfas")
private String codJfas;
@SerializedName("mtbAart")
private MtbAart mtbAart;
@SerializedName("numOrd")
private Integer numOrd;
@SerializedName("dataOrd")
private Date dataOrd;
@SerializedName("barcodeUl")
private String barcodeUl;
@SerializedName("progressivoUl")
private Integer progressivoUl;
@SerializedName("datetimePosizionamento")
private LocalDateTime datetimePosizionamento;
public String getGestione() {
return gestione;
}
public GestioneEnum getGestioneEnum() {
return GestioneEnum.fromString(gestione);
}
public MvwSitArtUdcDetInventario setGestione(String gestione) {
this.gestione = gestione;
return this;
@@ -302,11 +376,35 @@ public class MvwSitArtUdcDetInventario {
return text;
}
public String getBarcodeUl() {
return barcodeUl;
}
public void setBarcodeUl(String barcodeUl) {
this.barcodeUl = barcodeUl;
}
public Integer getProgressivoUl() {
return progressivoUl;
}
public void setProgressivoUl(Integer progressivoUl) {
this.progressivoUl = progressivoUl;
}
public LocalDateTime getDatetimePosizionamento() {
return datetimePosizionamento;
}
public void setDatetimePosizionamento(LocalDateTime datetimePosizionamento) {
this.datetimePosizionamento = datetimePosizionamento;
}
public MtbColr toMtbColr() {
return new MtbColr()
.setCodJcom(getCodJcom())
.setCodMart(getCodMart())
.setDataCollo(UtilityDate.toDate(getDataCollo()))
.setDataCollo(getDataCollo())
.setNumCollo(getNumCollo())
.setSerCollo(getSerCollo())
.setGestione(getGestione())

View File

@@ -1,36 +1,43 @@
package it.integry.integrywmsnative.core.model;
import java.util.Date;
import com.google.gson.annotations.SerializedName;
import org.apache.commons.lang3.StringUtils;
import java.time.LocalDate;
import java.util.Objects;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineInevasoDTO {
private String data;
private Integer numero;
@SerializedName("data")
private LocalDate dataOrd;
@SerializedName("numero")
private Integer numOrd;
@SerializedName("gestione")
private String gestione;
@SerializedName("codMdep")
private String codMdep;
public String getDataOrdS() {
return data;
public LocalDate getDataOrd() {
return dataOrd;
}
public Date getDataOrdD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataOrdS());
}
public OrdineInevasoDTO setData(String data) {
this.data = data;
public OrdineInevasoDTO setDataOrd(LocalDate data) {
this.dataOrd = data;
return this;
}
public Integer getNumOrd() {
return numero;
return numOrd;
}
public OrdineInevasoDTO setNumero(Integer numero) {
this.numero = numero;
public OrdineInevasoDTO setNumOrd(Integer numOrd) {
this.numOrd = numOrd;
return this;
}
@@ -57,4 +64,34 @@ public class OrdineInevasoDTO {
return this;
}
public boolean equalsKey(OrdineInevasoDTO that) {
if (that == null) return false;
return this.dataOrd.equals(that.dataOrd) &&
this.numOrd.equals(that.numOrd) &&
StringUtils.equalsIgnoreCase(this.codMdep, that.codMdep);
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
OrdineInevasoDTO that = (OrdineInevasoDTO) o;
if(!equalsKey(that)) return false;
return StringUtils.equalsIgnoreCase(getCodMdep(), that.getCodMdep());
}
public int hashCodeKey() {
int result = getDataOrd().hashCode();
result = 31 * result + getNumOrd().hashCode();
result = 31 * result + getGestione().hashCode();
return result;
}
@Override
public int hashCode() {
int result = hashCodeKey();
result = 31 * result + Objects.hashCode(getCodMdep());
return result;
}
}

View File

@@ -1,18 +1,32 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
public class StbGestSetup extends EntityBase{
@SerializedName("gestName")
private String gestName;
@SerializedName("section")
private String section;
@SerializedName("keySection")
private String keySection;
@SerializedName("value")
private String value;
@SerializedName("description")
private String description;
@SerializedName("flagSync")
private String flagSync;
@SerializedName("queryDefault")
private String queryDefault;
@SerializedName("flagUserView")
private String flagUserView;
@SerializedName("dataModifica")
private String dataModifica;
@SerializedName("modificatoDa")
private String modificatoDa;
@SerializedName("flagSetupDepo")
private String flagSetupDepo;
@SerializedName("flagSetupUserWeb")
private String flagSetupUserWeb;
public StbGestSetup() {

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
import java.util.List;
@@ -9,26 +10,46 @@ public class StbMenu extends EntityBase {
this.type = "stb_menu";
}
@SerializedName("codOpz")
private String codOpz;
@SerializedName("codParent")
private String codParent;
@SerializedName("tipoAzienda")
private String tipoAzienda;
@SerializedName("descrizione")
private String descrizione;
@SerializedName("descrizioneEstesa")
private String descrizioneEstesa;
@SerializedName("entityName")
private String entityName;
@SerializedName("flagAttivo")
private String flagAttivo;
@SerializedName("flagPrinterSetup")
private String flagPrinterSetup;
@SerializedName("gestName")
private String gestName;
@SerializedName("note")
private String note;
@SerializedName("objectType")
private String objectType;
@SerializedName("openType")
private String openType;
@SerializedName("parameter")
private String parameter;
@SerializedName("pictureMenu")
private String pictureMenu;
@SerializedName("pictureSelect")
private String pictureSelect;
@SerializedName("pos")
private Integer pos;
@SerializedName("posCliente")
private Integer posCliente;
@SerializedName("posTipoAzienda")
private Integer posTipoAzienda;
@SerializedName("urlDescrizione")
private String urlDescrizione;
@SerializedName("stbMenuChildren")
private final List<StbMenu> stbMenuChildren = new ArrayList<>();
public String getCodOpz() {

View File

@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.annotations.SerializedName;
public class VtbDest extends EntityBase implements Parcelable {
@@ -10,20 +12,28 @@ public class VtbDest extends EntityBase implements Parcelable {
type = "vtb_dest";
}
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codVdes")
private String codVdes;
@SerializedName("destinatario")
private String destinatario;
@SerializedName("indirizzo")
private String indirizzo;
@SerializedName("cap")
private String cap;
@SerializedName("citta")
private String citta;
@SerializedName("prov")
private String prov;
@SerializedName("nazione")
private String nazione;

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
public class VtbVetr extends EntityBase {
@@ -8,13 +9,21 @@ public class VtbVetr extends EntityBase {
type = "vtb_vetr";
}
@SerializedName("codVvet")
private String codVvet;
@SerializedName("codSpes")
private String codSpes;
@SerializedName("idRiga")
private String idRiga;
@SerializedName("daQta")
private BigDecimal daQta;
@SerializedName("aQta")
private BigDecimal aQta;
@SerializedName("impUnt")
private BigDecimal impUnt;
@SerializedName("impFisso")
private BigDecimal impFisso;
@SerializedName("codDivi")
private String codDivi;
public String getCodVvet() {

View File

@@ -1,5 +1,6 @@
package it.integry.integrywmsnative.core.model;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.util.List;
@@ -9,24 +10,43 @@ public class VtbVett extends EntityBase {
type = "vtb_vett";
}
@SerializedName("codVvet")
private String codVvet;
@SerializedName("codLettVett")
private String codLettVett;
@SerializedName("codAnag")
private String codAnag;
@SerializedName("ragSoc")
private String ragSoc;
@SerializedName("indirizzo")
private String indirizzo;
@SerializedName("cap")
private String cap;
@SerializedName("citta")
private String citta;
@SerializedName("prov")
private String prov;
@SerializedName("nazione")
private String nazione;
@SerializedName("telefono")
private String telefono;
@SerializedName("fax")
private String fax;
@SerializedName("partIva")
private String partIva;
@SerializedName("note")
private String note;
@SerializedName("eMail")
private String eMail;
@SerializedName("modStamp")
private String modStamp;
@SerializedName("coefVol")
private BigDecimal coefVol;
@SerializedName("flagAttivo")
private String flagAttivo;
@SerializedName("numAutoriz")
private String numAutoriz;
@SerializedName("vtbVetr")
private List<VtbVetr> vtbVetr;

View File

@@ -1,19 +1,22 @@
package it.integry.integrywmsnative.core.model.dto;
import com.google.gson.annotations.SerializedName;
import it.integry.integrywmsnative.core.model.MtbColt;
public class AlreadyRegisteredUDCDTO {
public class AlreadyRegisteredUlDTO {
@SerializedName("mtbColt")
private MtbColt mtbColt;
@SerializedName("canBeRecovered")
private boolean canBeRecovered;
public MtbColt getMtbColt() {
return mtbColt;
}
public AlreadyRegisteredUDCDTO setMtbColt(MtbColt mtbColt) {
public AlreadyRegisteredUlDTO setMtbColt(MtbColt mtbColt) {
this.mtbColt = mtbColt;
return this;
}
@@ -22,7 +25,7 @@ public class AlreadyRegisteredUDCDTO {
return canBeRecovered;
}
public AlreadyRegisteredUDCDTO setCanBeRecovered(boolean canBeRecovered) {
public AlreadyRegisteredUlDTO setCanBeRecovered(boolean canBeRecovered) {
this.canBeRecovered = canBeRecovered;
return this;
}

View File

@@ -1,9 +1,14 @@
package it.integry.integrywmsnative.core.model.dto;
import com.google.gson.annotations.SerializedName;
public class InternalCodAnagsDTO {
@SerializedName("codAnag")
private String codAnag;
@SerializedName("isCliente")
private boolean isCliente;
@SerializedName("isFornitore")
private boolean isFornitore;
public String getCodAnag() {

View File

@@ -0,0 +1,43 @@
package it.integry.integrywmsnative.core.model.dto;
import java.time.LocalDate;
public class PartitaCommessaDTO {
private String partitaMag;
private LocalDate dataScad;
private String codJcom;
private String descrizione;
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public LocalDate getDataScad() {
return dataScad;
}
public void setDataScad(LocalDate dataScad) {
this.dataScad = dataScad;
}
public String getCodJcom() {
return codJcom;
}
public void setCodJcom(String codJcom) {
this.codJcom = codJcom;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
}

View File

@@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.model.dto;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import it.integry.integrywmsnative.core.model.MtbColt;
@@ -10,8 +12,11 @@ import it.integry.integrywmsnative.core.utility.UtilityString;
public class PickDataDTO {
@SerializedName("refMtbColt")
private MtbColt refMtbColt;
@SerializedName("sourceMtbColt")
private MtbColt sourceMtbColt;
@SerializedName("manualPickDTO")
private ManualPickDTO manualPickDTO;
public MtbColt getRefMtbColt() {

View File

@@ -1,26 +1,38 @@
package it.integry.integrywmsnative.core.model.dto;
import com.google.gson.annotations.SerializedName;
import java.util.Date;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
public class StatoArticoloDTO {
@SerializedName("codMart")
private String codMart;
@SerializedName("partitaMag")
private String partitaMag;
@SerializedName("dataScad")
private Date dataScad;
@SerializedName("ggScadPartita")
private Integer ggScadPartita;
@SerializedName("ggMax")
private Integer ggMax;
@SerializedName("ggScadEffettivi")
private Integer ggScadEffettivi;
@SerializedName("ggUtili")
private Integer ggUtili;
@SerializedName("statoArt")
private StatoPartitaMag statoArt;
public String getCodMart() {
return codMart;
}

View File

@@ -0,0 +1,81 @@
package it.integry.integrywmsnative.core.model.dto;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDateTime;
public class SuggestedULPositionDTO {
@SerializedName("codMdep")
private String codMdep;
@SerializedName("posizione")
private String posizione;
@SerializedName("descrizionePosizione")
private String descrizionePosizione;
@SerializedName("datetime")
private LocalDateTime datetime;
@SerializedName("postiOccupati")
private int postiOccupati;
@SerializedName("postiTotali")
private Integer postiTotali;
public String getCodMdep() {
return codMdep;
}
public SuggestedULPositionDTO setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getPosizione() {
return posizione;
}
public SuggestedULPositionDTO setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public String getDescrizionePosizione() {
return descrizionePosizione;
}
public SuggestedULPositionDTO setDescrizionePosizione(String descrizionePosizione) {
this.descrizionePosizione = descrizionePosizione;
return this;
}
public LocalDateTime getDatetime() {
return datetime;
}
public SuggestedULPositionDTO setDatetime(LocalDateTime datetime) {
this.datetime = datetime;
return this;
}
public int getPostiOccupati() {
return postiOccupati;
}
public SuggestedULPositionDTO setPostiOccupati(int postiOccupati) {
this.postiOccupati = postiOccupati;
return this;
}
public Integer getPostiTotali() {
return postiTotali;
}
public SuggestedULPositionDTO setPostiTotali(Integer postiTotali) {
this.postiTotali = postiTotali;
return this;
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.integrywmsnative.core.model.dto;
import it.integry.integrywmsnative.core.model.MtbColr;
public class WithdrawableMtbColr extends MtbColr {
private transient MtbColr withdrawRow;
public WithdrawableMtbColr() {
super();
}
public MtbColr getWithdrawRow() {
return withdrawRow;
}
public WithdrawableMtbColr setWithdrawRow(MtbColr withdrawRow) {
this.withdrawRow = withdrawRow;
return this;
}
}

View File

@@ -0,0 +1,35 @@
package it.integry.integrywmsnative.core.model.key;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDate;
import java.util.Objects;
public class DtbDocrKey extends DtbDoctKey {
@SerializedName("idRiga")
private final int idRiga;
public DtbDocrKey(String codAnag, String codDtip, LocalDate dataDoc, Integer numDoc, String serDoc, int idRiga) {
super(codAnag, codDtip, dataDoc, numDoc, serDoc);
this.idRiga = idRiga;
}
public int getIdRiga() {
return idRiga;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
DtbDocrKey that = (DtbDocrKey) o;
return getIdRiga() == that.getIdRiga();
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), getIdRiga());
}
}

View File

@@ -0,0 +1,98 @@
package it.integry.integrywmsnative.core.model.key;
import com.google.gson.annotations.SerializedName;
import java.time.LocalDate;
import java.util.Objects;
public class DtbDoctKey {
@SerializedName("codAnag")
private String codAnag;
@SerializedName("codDtip")
private String codDtip;
@SerializedName("dataDoc")
private LocalDate dataDoc;
@SerializedName("numDoc")
private Integer numDoc;
@SerializedName("serDoc")
private String serDoc;
public DtbDoctKey() {
}
public DtbDoctKey(String codAnag, String codDtip, LocalDate dataDoc, Integer numDoc, String serDoc) {
this.codAnag = codAnag;
this.codDtip = codDtip;
this.dataDoc = dataDoc;
this.numDoc = numDoc;
this.serDoc = serDoc;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || (getClass() != o.getClass() && !getClass().isAssignableFrom(o.getClass()))) return false;
DtbDoctKey that = (DtbDoctKey) o;
return Objects.equals(codAnag, that.codAnag) &&
Objects.equals(codDtip, that.codDtip) &&
Objects.equals(dataDoc, that.dataDoc) &&
Objects.equals(numDoc, that.numDoc) &&
Objects.equals(serDoc, that.serDoc);
}
@Override
public int hashCode() {
return Objects.hash(codAnag, codDtip, dataDoc, numDoc, serDoc);
}
public String getCodAnag() {
return codAnag;
}
public DtbDoctKey setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodDtip() {
return codDtip;
}
public DtbDoctKey setCodDtip(String codDtip) {
this.codDtip = codDtip;
return this;
}
public LocalDate getDataDoc() {
return dataDoc;
}
public DtbDoctKey setDataDoc(LocalDate dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public DtbDoctKey setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public String getSerDoc() {
return serDoc;
}
public DtbDoctKey setSerDoc(String serDoc) {
this.serDoc = serDoc;
return this;
}
}

View File

@@ -0,0 +1,33 @@
package it.integry.integrywmsnative.core.model.key;
import java.time.LocalDate;
public class MtbColrKey extends MtbColtKey {
private final int riga;
public MtbColrKey(String gestione, String serCollo, LocalDate dataCollo, int numCollo, int riga) {
super(gestione, serCollo, dataCollo, numCollo);
this.riga = riga;
}
public Integer getRiga() {
return riga;
}
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
MtbColrKey that = (MtbColrKey) o;
return getRiga().equals(that.getRiga());
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + getRiga().hashCode();
return result;
}
}

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