Compare commits

..

1284 Commits

Author SHA1 Message Date
5fbf7975d2 Migliorata gestione profile di default in RequestDataDTO
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 18:32:02 +01:00
a75b66bd53 Fix su Hibernte che non funzionava correttamente con profileDb maiuscolo/minuscolo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 18:21:09 +01:00
13439c236d Creato repository per StbEmail
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 16:34:21 +01:00
77d5a9cb9e aggiunta Roberta nelle notifiche
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:56:06 +01:00
d4cfada677 Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 12:52:25 +01:00
27c6795b9f Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 12:52:07 +01:00
dd9ff5c111 prova 2025-12-17 12:52:06 +01:00
1a4773659a Nella procedura di importazione CRONOTIME Geestito invio mail di errore quando un badge non esiste 2025-12-17 12:52:03 +01:00
0d2da1a92c prova
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-17 12:51:46 +01:00
b203e94836 gestita equivalenza su dati di magazzino dell'articolo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:50:44 +01:00
b3c99f7937 Modificato formato data
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 12:40:34 +01:00
6257fd540d Migliorie email interna di errore di sistema
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-17 10:23:08 +01:00
635ac0a1c7 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-16 18:27:36 +01:00
8abf441a8a [carelli - ordini a]
- aggiunto controllo su qta_ord vs qta_cnf
- unificati tutti controlli di esportazione nei servizi
2025-12-16 18:27:29 +01:00
8781b406ff Rimossa cache su MtbAart, completata prima implementazione funzionante di MtbAartRepository e MtbUntMisRepository
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 18:21:17 +01:00
c9325674d9 Merge branch 'develop' into JpaTest 2025-12-16 12:26:54 +01:00
99ca1731b1 Aggiunta share samba su immagine docker. Cambiata immagine base da alpine e ubuntu noble (24)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 12:26:16 +01:00
af6f465c0e modifiche per steup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-16 11:34:12 +01:00
d981e59a7d Rimosso Containerfile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-15 18:27:09 +01:00
6d7212ce97 Prima versione funzionante di Hybernate 2025-12-15 10:42:51 +01:00
5103830369 Finish Feature-SteUp
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 18:52:01 +01:00
5056d7e0c8 Merge branch 'develop' into feature/Feature-SteUp 2025-12-12 18:51:57 +01:00
4b5e46de7b varie steup 2025-12-12 18:51:48 +01:00
4d686ee145 Allineamento dati follies group su mtb_aart_anag
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 18:30:40 +01:00
e842326f5b Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 18:30:32 +01:00
63ad11086f Allineamento dati follies group su mtb_aart_anag 2025-12-12 18:30:26 +01:00
21f6fc6717 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 17:43:00 +01:00
8c2789b5f3 modificata in or la condizione dei db format e gestfood per la cancellazione dei duplicati 2025-12-12 17:42:54 +01:00
8f3ef405cf Merge branch 'develop' into feature/Feature-SteUp 2025-12-12 17:15:44 +01:00
76e76dfcf4 aggiunti parametri nella migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 17:13:14 +01:00
1df5ad7137 varie steup 2025-12-12 17:00:29 +01:00
a43ca46395 Spostato metodo downloadReportList da refactoring
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 16:06:38 +01:00
a63eba544b Allineamento dati Auricchio, levanplast e agricoper per cambio chiave mtb_aart_anag
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 13:20:49 +01:00
ce912bf103 Allineamento dati Auricchio, levanplast e agricoper per cambio chiave mtb_aart_anag 2025-12-12 13:20:44 +01:00
ababbf6142 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 10:12:20 +01:00
e97fd0aacb inserita nota bio nella dtb_note_doc, associata ai tipi documenti e svuotata setup stampa_documenti per rossogargano 2025-12-12 10:12:09 +01:00
51c1ed1d23 Merge branch 'develop' into feature/Feature-SteUp 2025-12-12 09:59:37 +01:00
a9be8f7003 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-12 09:58:38 +01:00
7522092a12 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 09:58:37 +01:00
4dc0174800 Fix su convert mvwSitart to mtbColr 2025-12-12 09:58:32 +01:00
a04b2fa4a1 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 17:14:44 +01:00
04317470c6 creata setup per visualizzare dettaglio su report fatturato agente/clienti 2025-12-11 17:14:35 +01:00
187216dd9f Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 16:46:46 +01:00
e11172a90f Implementato servizio di reset selle posizioni MonoUl 2025-12-11 16:46:35 +01:00
51d5b05bd3 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 16:31:10 +01:00
3a2ceaf217 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 16:31:09 +01:00
c783f69a49 aggiunta setup per esportare 2025-12-11 16:30:22 +01:00
1c8695095b Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 16:06:11 +01:00
fc28af761c creato report personalizzato stampa registri iva per cosmapack 2025-12-11 16:06:02 +01:00
fd4db5ab3b Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 13:12:05 +01:00
f7e1d1f6ca [ROSSOGARGANO]
- fix riposizionamento in posizione monoUl
2025-12-11 13:11:57 +01:00
0b8f82f041 Create nuove utilities
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 12:45:12 +01:00
99680dccd8 Creata nuova utility getMtbUntMisFromCodMart
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 11:21:14 +01:00
e948855fc0 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:30:17 +01:00
0854acacfb Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:30:16 +01:00
1aba141c9f Aggiunto database tempestadi nei customer db 2025-12-11 10:30:02 +01:00
741cb960d4 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:13:39 +01:00
82d7efc00c Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:13:39 +01:00
c6c2739525 Aggiunto database tempestadi nei customer db 2025-12-11 10:13:21 +01:00
313bfc21ff Modificato messaggio di errore per documenti già esistente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 09:44:12 +01:00
36f50ad846 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 18:48:18 +01:00
798e5b532e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 18:48:17 +01:00
c27c96c3d9 Aggiunto parallel stream in retrieve items dalla cache 2025-12-10 18:48:11 +01:00
4e3d15ebd8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 18:47:37 +01:00
0ba9297f39 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-12-10 18:47:36 +01:00
7c036172d8 Aggiunto parallel stream in retrieve items dalla cache 2025-12-10 18:47:22 +01:00
8afa01d8ef Corretto errore null di Ime quando svuotavano il campo tipo bene
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 17:34:59 +01:00
db1949b5b6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 16:22:41 +01:00
bb47dd458e Finish FixSavePreventivo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 16:22:40 +01:00
530b6af4ef [CRM] fix completeOrder 2025-12-10 16:20:22 +01:00
92cd4b1af5 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-10 13:35:53 +01:00
6b71d6b784 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 13:35:53 +01:00
de4d8d225f Aggiunto codMart nella richiesta di retrieveGiacenza 2025-12-10 13:35:43 +01:00
671c2e99d0 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:19:31 +01:00
755e7394b4 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:19:31 +01:00
ce06683722 Fix duplicate key su mtbCols 2025-12-10 12:19:11 +01:00
e8a1a8ca0b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:16:14 +01:00
7a5c024005 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:16:13 +01:00
c82f2a57d8 gestito errore date promo duplicate e sistemata retun dei Thread 2025-12-10 12:13:13 +01:00
78dbf9f7e3 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:01:55 +01:00
b9e863a563 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:01:54 +01:00
60e4429c3f [ANOMALIE UL]
- aggiunta eliminazione livello anomalia
2025-12-10 12:01:44 +01:00
d7012d4e1f eliminta conversione caratteri e sistemata data iniz promo 2025-12-10 11:44:10 +01:00
1d52f79337 fix funzione pvm_getassortimentoClientePedane per "ambiguous column name" su cod_Vdes
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 11:20:28 +01:00
0e1adccb7c inserito campo cod_vdes nella mtb_aart_anag e cancellati duplicati su format e gestfood
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 10:33:57 +01:00
fa76a8e92d Merge remote-tracking branch 'origin/develop' into develop
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-10 10:33:11 +01:00
9b34a51bd9 inserito campo cod_vdes nella mtb_aart_anag e cancellati duplicati su format e gestfood 2025-12-10 10:32:58 +01:00
b75f7e3810 Finish DatiDocSpostaUL
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 09:57:30 +01:00
4aeccdfa76 Aggiunti dati doc in creazione documento sposta ul 2025-12-10 09:56:42 +01:00
39db8e6e1b Modifica migrations per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 09:27:37 +01:00
1b87cacca2 aggiunta fk su mtb_unt_mis
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 16:02:09 +01:00
326bd4294e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 15:03:34 +01:00
6a237ce4d9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 15:03:33 +01:00
a64932d918 correzioni ad esportazione e importazione dialogo 2025-12-09 15:03:21 +01:00
e887aceaaf Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 14:32:50 +01:00
a15d009f76 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 14:32:50 +01:00
a62f37d930 aggiornamento menu 2025-12-09 14:32:39 +01:00
55f23b2dfc aggiunti campi in importazione articoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 13:28:33 +01:00
a4a2b34379 Merge branch 'release/Release-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 12:44:05 +01:00
1ef49b87e8 Merge tag 'Release-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
Finish Release-anomalie
2025-12-09 12:44:05 +01:00
f2d67ea89d anomalie merce
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 12:43:27 +01:00
fda162d867 esportazione document md
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 18:27:06 +01:00
2008ef0e8f Divisa setup TIPO_MOVIMENTO_FISCALE in TIPO_MOVIMENTO_FISCALE_CAR e TIPO_MOVIMENTO_FISCALE_SCAR
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 18:14:35 +01:00
6d8e0e747f Varie per carelli giacenza, attività integry gramm usa
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 15:19:07 +01:00
5417e28630 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-05 13:23:42 +01:00
4ac4686645 [ROSSOGARGANO - AnomalieMerce]
- nuova gestione anomalie merce
2025-12-05 13:23:31 +01:00
1594154639 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 11:38:02 +01:00
3a4a954b91 [CRM] fix completeOrder
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-05 11:37:53 +01:00
744f92c881 [CARELLI] Aggiunto markDocumentReceived
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 10:58:45 +01:00
6e5f099fc2 aggiunta tabelle equivalenti 2025-12-05 10:51:39 +01:00
697cd58e39 aggiunta tabelle equivalenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 10:09:38 +01:00
4bf1f6021f aggiunta tabelle equivalenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 09:41:52 +01:00
118d2d83d5 Fix su query di calcolo fabbisogno linee prod per WMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 17:54:08 +01:00
149bdc36b3 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 13:02:34 +01:00
89c69bc0d2 cambiata la chiave sulla tabella azienda 2025-12-04 13:02:19 +01:00
240f18d19d Fix qta_prod per storico mes
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 13:01:16 +01:00
9a8a144705 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-04 12:13:52 +01:00
2f412f1ad6 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 12:13:52 +01:00
8e8b03889a Creato servizio di create udc with rows 2025-12-04 12:13:47 +01:00
dd4ace59bd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:25:26 +01:00
52c0e0ca61 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:25:25 +01:00
e2f2b9bde9 Migliorato check di correttezza barcode_ul per i le UDC anonime 2025-12-04 11:25:21 +01:00
4ea9be84db Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:23:04 +01:00
11e4b1cf20 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-12-04 11:23:04 +01:00
a66cfa16d8 Aggiunto check di correttezza barcode_ul per i le UDC anonime 2025-12-04 11:22:59 +01:00
9f628973e9 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 09:25:43 +01:00
9fa7f9628c Finish FixCreateContact
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 09:25:43 +01:00
1a5156d53c Fix creazione attività in createContact crm 2025-12-04 09:25:34 +01:00
ba667fd28e inseriti campi cod_linea, cod_slinea, cod_sslinea nella entity mtb_aart
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 08:44:44 +01:00
cddc7f8979 - fix retrieve depositi utente in login
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 16:56:50 +01:00
60c436256e Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-03 15:48:54 +01:00
46449c47b9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 15:48:53 +01:00
f8b6d3ebe0 aggiunto gramm usa 2025-12-03 15:48:31 +01:00
b3d29219ee Modifica per corretta generazione scadenza di fine mese (febbraio)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:14:41 +01:00
2c81a6566b Finish FixNotifyUser
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:02:26 +01:00
f697a122b6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:02:26 +01:00
3f4ed16f20 Fix allegato in b64 nella mail 2025-12-03 12:02:13 +01:00
cbbfbb16b8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 11:38:46 +01:00
585a04ffba Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 11:38:45 +01:00
b025be1bd9 Cambiato response entity in downloadStbEmailContent e downloadJtbDisegniFiles 2025-12-03 11:38:36 +01:00
5453826156 Cambiato response entity allegati fatturazione 2025-12-03 11:36:21 +01:00
8312d48970 Cambiata risposta downloadStbActivityFileAttachment 2025-12-03 11:12:47 +01:00
b50c348528 Cambiato response entity allegati fatturazione 2025-12-03 11:10:42 +01:00
64aeff7bf6 disabilitata setup che chiede se stampare o meno la lettera di quietanza a rossogargano
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 09:56:14 +01:00
2a8cf16ce0 Fix localDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 19:15:05 +01:00
3539e82849 Fix check localDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 18:52:17 +01:00
f4faa20652 Aggiornata connessione FRUDIS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 17:33:54 +01:00
e7f5959e27 creata migratoio e servizio per svuotare il db.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 16:35:50 +01:00
1d897f1461 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:46:05 +01:00
f3e48b9a3e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:46:04 +01:00
f0e41c6554 Fix righe collo con Delete in distribuzioneCollo 2025-12-02 15:45:40 +01:00
3d76dec03a Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:08:49 +01:00
754b58fd37 creata setup che se abilitata chiede se stampare o meno la lettera di quietanza 2025-12-02 15:08:35 +01:00
0627fd59c9 aggiunte tabelle sincronizzaione articoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 14:52:47 +01:00
31480b8fbe Utilizzati nuovi servizi WMS per scaricoMateriaPrimaDaPosizione/scaricoMateriaPrimaDaOrdine
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 10:43:16 +01:00
c1efdf48a6 Modifiche migrations per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 10:08:30 +01:00
e1de9f4db9 Attivazione nuova gestione produzione dulciar
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 09:54:02 +01:00
ce2ec669ba Attivazione nuova gestione produzione dulciar 2025-12-02 09:53:57 +01:00
c9658954aa Finish ModifSetup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:10:14 +01:00
5011aa271d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:10:14 +01:00
af4a5511a3 Creata setup per deposito ricambi macchinari prod 2025-12-01 19:10:05 +01:00
fa996c210c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:03:04 +01:00
c5b5fb62a1 Abilitazione nuova versione generazione ordini di produzione 2025-12-01 19:02:57 +01:00
3b007c061e Finish FixDownload
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:53:14 +01:00
8ee9e2fe57 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:53:14 +01:00
4ddcc6228e Fix errore in download file se mimetype null 2025-12-01 18:53:00 +01:00
7cf9df3549 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:31:26 +01:00
8e8d6cf2c3 Finish ModifSetup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:13:14 +01:00
2a5314fd1e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:13:14 +01:00
9363e674b5 Creata setup per deposito ricambi macchinari prod 2025-12-01 18:13:04 +01:00
e7252f7fea Merge remote-tracking branch 'origin/develop' into develop 2025-12-01 17:55:09 +01:00
b5e1d2e1ce Abilitazione log picking
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 16:50:12 +01:00
53ef2539f5 aggiunto suffisso anche per griglie 2025-12-01 16:16:22 +01:00
6136d9b848 Migliorato errore di dbName, profileDb e CustomerDb non valido
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 16:07:28 +01:00
fe2be9b926 aggiunte nuove entity in sincronizzazioni
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-01 15:10:30 +01:00
1b113999b2 Rimosso log
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 13:11:11 +01:00
4ebcae77ca Migliorie
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-01 13:09:58 +01:00
8d35f9284a Refactoring UserCacheService, adesso sfrutta EntityCache più che il caching integrato.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 13:05:59 +01:00
b953349afc Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:44:34 +01:00
6c2eaaa37a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:44:34 +01:00
9b8824e681 Modifica gestione conto in CTB_AnaG PER IMPORTAZIONE nuovo cliente da WEB 2025-12-01 11:44:20 +01:00
fb03aa1ea7 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:43:30 +01:00
c16e23d3bf Modifica migration per DMS 2025-12-01 11:43:21 +01:00
27055f8e5e Cambiata configurazione ram su Dockerfile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:02:55 +01:00
b8ac769ffd Aggiunto flag_attivo nel trigger changeTipoRiep
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-01 10:57:27 +01:00
0216bc5d53 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:57:09 +01:00
db3973637d Aggiunto flag_attivo nel trigger changeTipoRiep 2025-12-01 10:57:03 +01:00
7dab29e8c2 Aggiornato ems_settings.json
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts:
#	docker/tomcat/conf/integry/ems_settings.json
2025-12-01 10:23:34 +01:00
809ffe73b9 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:02:06 +01:00
4d13d17095 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:02:05 +01:00
f749356735 letti data inizio e fine dalla vtb_list_Data 2025-12-01 10:01:59 +01:00
b2d24ab6b4 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 09:48:04 +01:00
6bb7b55618 inserito campo flag_attivo nella ctb_cont 2025-12-01 09:47:54 +01:00
920257812c Merge branch 'develop' into feature/Feature-SteUp 2025-12-01 09:20:46 +01:00
00efbe6fcf Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 08:55:11 +01:00
cacb24a563 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 08:55:11 +01:00
5da098e058 correzione per evitare che i campi stringa vuoti "" vengano salvati come tali 2025-12-01 08:55:04 +01:00
3e0c443ce3 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 08:48:08 +01:00
b4442bc251 correzione per evitare che i campi stringa vuoti "" vengano salvati come tali 2025-11-28 19:20:32 +01:00
eec353c6a5 Creato servizio per creazione manutenzioni macchinari
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-28 19:19:18 +01:00
8b50f54881 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-28 16:01:18 +01:00
42f50e0d80 disabilitate voci menu nuove gestioni colori, linee, sottolinee e sottosottolinee 2025-11-28 16:01:07 +01:00
cbeae87d23 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-28 12:56:27 +01:00
71cb1db5ef Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-28 12:56:26 +01:00
bb642d92db controllo su null or empty 2025-11-28 12:55:53 +01:00
ddd3b95d17 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-28 12:32:22 +01:00
ff5428f8bd Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-28 12:32:22 +01:00
d3b39ad878 controllo su null or empty 2025-11-28 12:32:15 +01:00
99a366d875 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 17:34:15 +01:00
abc4f1c966 modificata classe MdRigheDTO 2025-11-27 17:34:06 +01:00
fc1c2f192e Migliorata gestione DBMS Change Tracking in caso di disallineamento min valid version
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 17:22:15 +01:00
ac4afa9a2b create nuove voci menu per linee sottolinee e sottosottolinee
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 17:02:33 +01:00
c5a315e070 modifiche alle tabelle delle linee articoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 15:15:49 +01:00
1d0fd3341d Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 14:06:24 +01:00
b44685335a creata setup per salvare path di esportazione xml 2025-11-27 14:06:11 +01:00
e5689da13d Cambiato ems_settings.json
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 11:44:24 +01:00
f57710cb32 Cambiato ems_settings.json
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 11:31:20 +01:00
ceb5dc817c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts:
#	docker/tomcat/conf/integry/ems_settings.json
2025-11-27 11:06:40 +01:00
3a934813d8 Cambiato ems_settings.json 2025-11-27 11:06:27 +01:00
d56fe38e2c Cambiato ems_settings.json
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-11-27 11:06:18 +01:00
5555a40731 Modifica funzione f_pp_consuntivo_prod_tracc
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 10:55:22 +01:00
acf5daf673 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 10:28:18 +01:00
939c4ab236 modificata entity MtbAartMarchio 2025-11-27 10:28:04 +01:00
49237b9585 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 10:21:32 +01:00
abbf298b4f Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 10:21:31 +01:00
34985c9fd3 Sistemato flag recuperaUl in Spedizione WMS 2025-11-27 10:21:27 +01:00
401f0330de Migliorie su ass_serie_ord_a_collo in distribuzione colli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-27 10:00:38 +01:00
7815fb72f1 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:50:32 +01:00
0e8cc5b2de Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:50:31 +01:00
9a18dd6ebd esclusa merce in arrivo 2025-11-26 16:50:06 +01:00
3f0b9315a2 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:22:34 +01:00
32a15a4f3e Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:22:34 +01:00
932f99c147 - rimossa modifiche del codJfas in testata ordini durante la ripianificazione 2025-11-26 16:22:18 +01:00
1fc7d01b9c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:19:25 +01:00
46e47a9549 - fix gestione token in richieste cross profile 2025-11-26 16:19:17 +01:00
ba1bbbafe0 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 16:00:19 +01:00
fa54de3d76 inseriti metodi override nelle entity MtbAartMarchio, MtbMarchioLinea, MtbMarchioSlinea, MtbMarchioSslinea 2025-11-26 16:00:03 +01:00
1550de37e6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 13:30:36 +01:00
450f9f4dd4 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 13:30:35 +01:00
f1da5057d6 Fix su deposito reale dell'utente: è stato aggiunto tra gli header il codMdep che indica il deposito REALE su cui si trova l'utente. Utile per capire quali stampanti usare nel WMS o per sapere su che deposito sta effettuando le chiamate l'utente. 2025-11-26 13:30:30 +01:00
a3d15aeb32 modificata classe mdrighe:aggiunto prezzo netto
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 12:18:54 +01:00
c933c02727 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 11:51:44 +01:00
28b94b228a create classi mdtestate e mdrighe e aggiunto configuratore formati di esportazione md attivo su sardinya 2025-11-26 11:51:34 +01:00
c291db3e34 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 11:47:18 +01:00
3f9a451a70 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 11:47:18 +01:00
9f39c5bc2d fix [GRAMM]
- corretta gestione idRiga ed idStep in ripianificazione ordini di lavoro
2025-11-26 11:47:05 +01:00
6a455db664 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 10:18:47 +01:00
c33c1da199 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-26 10:18:47 +01:00
d0769ea1bd [GRAMM]
- corretta gestione idRiga ed idStep in ripianificazione ordini di lavoro
2025-11-26 10:18:35 +01:00
f3f768380a Merge remote-tracking branch 'origin/develop' into develop 2025-11-26 10:18:01 +01:00
cb2cf06200 [GRAMM]
- corretta gestione idRiga ed idStep in ripianificazione ordini di lavoro
2025-11-26 10:17:35 +01:00
a81fc6813c Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-26 09:44:06 +01:00
5c03b928b6 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-26 09:44:04 +01:00
16b478a511 [ConSegna] Aggiunto importoRiga 2025-11-26 09:43:53 +01:00
c2ef09a604 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 11:56:27 +01:00
f2de64de75 disabilitata setup per visualizzare maschera di riepilogo del saldo del cliente 2025-11-25 11:56:15 +01:00
b877347a77 impostato cod_jcom = note
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-11-25 11:46:34 +01:00
2d43952d96 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 11:43:42 +01:00
ee171374c8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 11:43:42 +01:00
f0d1cdc81a gestita commessa nelle note 2025-11-25 11:43:37 +01:00
1758dcabbb Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-25 11:41:03 +01:00
8231716e97 Finish Hotfix-100
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-25 11:41:02 +01:00
2603cda317 gestita commessa nelle note 2025-11-25 11:40:58 +01:00
77c79c6247 Merge branch 'develop' into feature/Feature-SteUp 2025-11-25 10:58:20 +01:00
532a9cc3f4 MRP_UpdateQtaImpProx considerata 0 la giacenza se negativa
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 10:57:41 +01:00
c26f7feb35 Merge branch 'develop' into feature/Feature-SteUp 2025-11-25 10:10:30 +01:00
15a63cff14 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 10:06:08 +01:00
b53d76358b f_pp_consuntivo_prod_tracc 2025-11-25 10:05:56 +01:00
f9ded1153a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 10:04:57 +01:00
81ddb42e5c Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-25 10:04:56 +01:00
5ac4d4be63 Rimosso momentaneamente controllo parentActivityId null 2025-11-25 10:04:47 +01:00
0b432960ec Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 09:53:57 +01:00
159436247d Finish FixGetMaterialiDistinta
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-25 09:53:57 +01:00
2a2435f64d Corretta funzione getMaterialiDistinta 2025-11-25 09:53:51 +01:00
fba5e331b5 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-25 09:36:20 +01:00
21cc88f295 varie per steup 2025-11-25 09:36:00 +01:00
de21ce7cb8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 17:17:08 +01:00
33f24290a9 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-24 17:17:07 +01:00
dc83e89392 Fix su retrieve mtbAarts wms 2025-11-24 17:16:56 +01:00
d525048bb3 Fix su retrieve mtbAarts wms
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-11-24 17:16:40 +01:00
f5d46be57d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 17:10:27 +01:00
ca4c3c3412 Finish FixProcGeneraOrdLav
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-24 17:10:26 +01:00
e5c16c6e4e Corretta funzione getMaterialiDistinta ed arrotondamento riproporzione qta ord 2025-11-24 17:09:03 +01:00
42bef35d5f Merge branch 'hotfix/Hotfix-1' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 17:04:02 +01:00
44e3de6a0f Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 17:04:01 +01:00
9942f92440 Merge branch 'master' into hotfix/Hotfix-1 2025-11-24 17:03:46 +01:00
e34bb01aea - fix ripianificazione ordini di lavoro 2025-11-24 17:03:27 +01:00
6f11e08807 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 16:40:47 +01:00
aa9529f551 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-24 16:40:46 +01:00
bcb8f4475d Fix regola checkDeleteMtbColrWithoutDoc 2025-11-24 16:40:31 +01:00
8a83213384 Migliorata gestione riconnessione DbmsChangeTracker
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 16:05:30 +01:00
2433c98ab1 Migliorate performance Exchange Clienti
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 15:53:25 +01:00
595fe77472 modifiche a getgrigliaacqiusto 2025-11-24 13:58:22 +01:00
29f9335876 modifiche a procedura di importazione listini di apulia, gestita perc premi, modificata regola che assegna tipo variazione sulle griglie, aggiunta generazione pk nelle migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 12:09:22 +01:00
e975964f53 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 12:01:01 +01:00
9d82cbc610 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 12:01:00 +01:00
0a12dc23f2 Fix check quantità nelle regole di MtbColr 2025-11-24 12:00:42 +01:00
1719f2ba37 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 11:54:01 +01:00
ddd9c73f49 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 11:54:01 +01:00
1b0f5d5d29 Fix check quantità nelle regole di MtbColr 2025-11-24 11:53:51 +01:00
6991e60ec5 Fix inizializzazione mappa char replacements
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 10:50:04 +01:00
8a87d428ae modifiche per evitare l'errore nella generazione del file xml
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 09:55:53 +01:00
0058373710 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-24 09:12:45 +01:00
d9f93b14e1 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-24 09:12:45 +01:00
dea6b14323 modifiche a procedura di salvataggio 2025-11-24 09:12:36 +01:00
d01b4aef8f aggiunta migratione e corretto servizio per selezione conto
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 18:52:03 +01:00
b2c3008464 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 18:05:48 +01:00
d02f44237e modificata funzione getSchedaCosti 2025-11-21 18:05:40 +01:00
675e919652 correzione importazione scontrini mmpos forno
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 16:22:35 +01:00
9d9d4e3d87 Aggiunta setup wms
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 15:48:11 +01:00
19e17f76d4 migration getMaggiorazioneSpese
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 15:03:23 +01:00
df18330a01 Merge remote-tracking branch 'origin/develop' into develop 2025-11-21 15:03:10 +01:00
da61cb5439 setup listini 2025-11-21 14:02:59 +01:00
975e4f2be4 aggiunti default 2025-11-21 13:18:21 +01:00
e31b0bc1a0 Eliminata viene fatta 2 volte 2025-11-21 13:18:06 +01:00
84ccdafd90 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 12:19:27 +01:00
97de2f0e71 create entity mtb_marchio_linea, mtb_marchio_slinea, mtb_marchio_sslinea e inserite come entitychild nella mtb_marchio_linea 2025-11-21 12:19:13 +01:00
1ee321b253 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 10:34:55 +01:00
7912d29f00 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 10:34:54 +01:00
ecd8bca2aa Fix su flagSetNumProt 2025-11-21 10:34:44 +01:00
1a64179099 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 10:12:02 +01:00
54588d20bd Finish FixRipianifica
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 10:12:01 +01:00
84f3823597 Fix lettura setup reimposta lotto in ripianificazione mes 2025-11-21 10:11:51 +01:00
0022e620da impostato flag tracciabilità
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-21 09:49:59 +01:00
62a1f5a85f create viste per contabilità
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 18:25:34 +01:00
cd389dc83f Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 18:02:55 +01:00
974b5f61af Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-20 18:02:54 +01:00
a10876effc Fix su changes detection 2025-11-20 18:02:46 +01:00
4385520480 creazione suggestcode capelli monelli
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-20 17:31:13 +01:00
a1b892a75e Migliorato exchange clienti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 17:28:43 +01:00
92dcc45638 varie contabilità
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 17:14:08 +01:00
a178ec5017 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 13:15:39 +01:00
1456e094a2 Aggiunti log per tracciare invio mail bolle generate e firmate 2025-11-20 13:15:22 +01:00
58b89777bb Aggiunta cache su MtbDepo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 11:53:20 +01:00
f4da09eacc utility funciton for cache
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-20 10:37:08 +01:00
6f47434d6f varie modifiche per movimenti contabili con servizi rest
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 19:22:31 +01:00
8fb8e4c05a Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 13:26:46 +01:00
d18ac96cc4 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 13:26:46 +01:00
9b26849cb6 [MES]
- modificato servizio di ripianificazione ordini di lavorazione: le date degli step non devono essere resettate
2025-11-19 13:26:32 +01:00
fcbee627b0 inserito campo e get e set cod_mssfa nella mtb_aart
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 12:21:33 +01:00
b17d807ca3 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 10:29:49 +01:00
5b017fdad1 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-19 10:29:49 +01:00
4957cba34b sistemata registrazione movimenti contabili 2025-11-19 10:29:43 +01:00
85e59e577f Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 10:15:35 +01:00
5c60cd2558 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 10:15:34 +01:00
5a824d0b3a Fix IntegryCustomerDB per 2M Holding (GRAMM) 2025-11-19 10:15:29 +01:00
f60c3337b1 inserito campo flag_bio nella dtb_note_doc
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-19 08:52:20 +01:00
4ee64127b1 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-18 17:43:57 +01:00
b587e38cc8 Merge branch 'hotfix/Hotfix-1' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-18 17:43:57 +01:00
be4c2d149e Merge branch 'master' into hotfix/Hotfix-1 2025-11-18 17:43:43 +01:00
ccb8b81597 [MES]
- modificata data cons prod in ripianificazione ordini lav
2025-11-18 17:39:58 +01:00
68a45a9eea Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-18 17:27:09 +01:00
d419c38220 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-18 17:27:09 +01:00
8fe752e595 Attivazione nuova gestione produzione 2025-11-18 17:26:52 +01:00
71ffc5b4cf Attivazione nuova gestione produzione 2025-11-18 17:26:44 +01:00
f00f0cf975 Add migration for trigger on ctb_cont to prevent updates with linked movements
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-18 16:49:34 +01:00
19e8949d86 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-18 16:25:49 +01:00
cc189f4761 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-18 16:25:48 +01:00
bd3bf9a8dc FIx customer DB AtiSrl 2025-11-18 16:25:41 +01:00
bee29e357e Aggiunto font cinese semplificato
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 17:35:50 +01:00
461b949581 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 15:37:01 +01:00
7fd4b6236c Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 15:37:00 +01:00
5075e17078 sistemato servizio per aggiornare ordini di slim 2025-11-17 15:36:19 +01:00
c6e2230052 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 15:26:13 +01:00
f9794850c4 Modifica migrations per DMS 2025-11-17 15:26:09 +01:00
ee18ecb15e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 13:02:21 +01:00
656f2018a2 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 13:02:20 +01:00
2b4cea4ada aggiunta murgia test 2025-11-17 13:02:12 +01:00
2aa6384f69 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 12:42:53 +01:00
72ebb39b22 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 12:42:52 +01:00
8e01509e99 aggiunto cod_mart 2025-11-17 12:41:43 +01:00
e4de8e4287 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 11:10:18 +01:00
18da8c2763 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 11:10:17 +01:00
a770e150a4 Aggiunta dataMod in JtbComt e tabelle clienti e prospect 2025-11-17 11:09:33 +01:00
96993755da aggiunta cancellazione riga collo con qta 0
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 10:43:10 +01:00
30db0f9182 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 10:14:41 +01:00
8064e87017 controllo su cancellazione ordini e aggiunta migration 2025-11-17 10:14:28 +01:00
ef399668c4 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-17 10:13:33 +01:00
72059e4623 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 10:13:32 +01:00
db5ee20a39 Fix su cache non funzionante su Integry Servers 2025-11-17 10:13:25 +01:00
ee4bf3d501 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 09:06:03 +01:00
7b40578ea4 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 09:06:03 +01:00
9685bff5ef per ora eliminata cache 2025-11-17 09:05:54 +01:00
3bff9a6fdc Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-17 08:52:08 +01:00
bfa48cbbb1 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-17 08:52:08 +01:00
4f2b251d20 aggiunto levanplastsrl 2025-11-17 08:52:00 +01:00
a1f1ffba95 modificata entity con deletechilds
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-11-14 15:30:38 +01:00
1ab59fa9a6 modificata entity mtbSsfam
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 14:27:34 +01:00
800407ebd7 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 14:06:13 +01:00
3dad6790fc inserita entity child mtbSsfam nella mtbsgrp e mtbgrup 2025-11-14 14:05:58 +01:00
d073a8fd17 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 13:34:07 +01:00
a9068c45cd Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 13:34:07 +01:00
ca78b09ad8 sistemata procedura di importazione colli da slim 2025-11-14 13:34:02 +01:00
3e17a7239a eliminato log
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 13:14:38 +01:00
d78597cba4 create get e set entity child mtbSsfam nella mtbSfam
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-14 13:11:00 +01:00
91f28a8c82 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 12:19:57 +01:00
03a7877899 [CMMS ]
- rimosso codice deposito da anagrafica macchinari
2025-11-14 12:17:55 +01:00
46e8a19c53 creata entity mtbSsfam come entity child mtbSfam
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-14 12:14:20 +01:00
81a42fc1d9 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 19:06:16 +01:00
fdbcc0c539 Gestita data consegna produzione = null 2025-11-13 19:06:12 +01:00
7d51ddb868 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 18:48:43 +01:00
9f25bd2bf6 Finish FixNoteCreaColloLav
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 18:48:16 +01:00
a9ce0d82b6 Corretta impostazione note createULLavorazione
(cherry picked from commit 83d2f329ce)
2025-11-13 18:47:54 +01:00
83d2f329ce Corretta impostazione note createULLavorazione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 18:33:59 +01:00
7e06512598 modificato localdate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 18:22:49 +01:00
b5776e82c9 modifiche a controllo resi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 18:14:22 +01:00
05dd42b0bf Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-13 18:02:35 +01:00
636774ed86 modifiche a inventari, listini e contabilità 2025-11-13 18:02:30 +01:00
6649af6e92 Creata inspection per chiamata SimpleDateFormat con LocalDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 17:37:28 +01:00
acfff8e8d6 Modifiche per carelli in chiusure promo e invio variazioni e moficati date in localdate nei listini di vendita
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 16:38:09 +01:00
44c1bd7cee Creata voce di menu ordini di vendita slim2k
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 15:35:13 +01:00
c712e729cc [GRAMM]
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
- gestione controlli di qualità nuovi
2025-11-13 15:25:46 +01:00
b684129f39 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 12:50:58 +01:00
1b339289c1 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 12:50:57 +01:00
b246991600 odio 2025-11-13 12:50:45 +01:00
dc578d1f17 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 12:40:00 +01:00
6c6f6d4d7e Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 12:40:00 +01:00
50dcb999f1 [TOSCA]
- aggiunto servizio per recuperare ul non pubblicate per la sincronizzazione
2025-11-13 12:39:47 +01:00
c656cc95de Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 11:50:48 +01:00
0b0b5bbf33 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 11:50:47 +01:00
c2310327d2 rimosso parametro inutile 2025-11-13 11:50:35 +01:00
9962471f71 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 11:48:15 +01:00
8ad86f71d3 Merge branch 'hotfix/Hotfix-1'
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-11-13 11:48:15 +01:00
3a42baab00 - corretta gestione profilo alla login
- corretta gestione preparedStatement in pubblicazioni sincronizzazioni
- aggiunto servizio di ripubblicazione impegnato tosca
2025-11-13 11:48:02 +01:00
a1bfd0150c Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 11:17:29 +01:00
2e420fc540 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 11:17:28 +01:00
f591246ae3 sistemati nuovo controlli su partita di magazzino 2025-11-13 11:17:04 +01:00
d4c02cf504 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 09:50:48 +01:00
e15878a9eb Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 09:50:47 +01:00
39f43b3361 varie correzioni per carelli 2025-11-13 09:50:26 +01:00
18a6756860 Rimosso update application name per device id
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-13 09:42:09 +01:00
3640b08041 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-12 19:07:54 +01:00
928d47f772 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-12 19:07:53 +01:00
28478cb11d Ripristinato check di validation della connessione nel datasource 2025-11-12 19:07:47 +01:00
0c48df7895 Modifica migrations per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-12 18:42:29 +01:00
327f5af3dd Aggiunta unità di misura di magazzino e rapporto di conversione 1 in registazione inventario
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-12 16:36:00 +01:00
62234f2edf aggiunto n uovo campo su testata dei listini
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 17:32:08 +01:00
2fcba55965 aggiunto n uovo campo su testata dei listini
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 17:30:49 +01:00
d29768776a Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 16:43:07 +01:00
3dcf6d3ee0 Configurazione nuovo cliente EDI HALLES - GRAMM 2025-11-11 16:43:03 +01:00
7c2aa55eb8 Gestione chiusura commessa MAGGIO 2025-11-11 16:42:42 +01:00
e92d64a05e Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 15:14:54 +01:00
0fa021be3e Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 15:14:53 +01:00
086bd574d5 Aggiunta pezza in login per disallineamento profileDb != dbName 2025-11-11 15:13:47 +01:00
b46f26790d Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 12:24:35 +01:00
c364d57e86 [CONSEGNA] Cambiati i tipi indirizzo per le personeRif che devo riceve la bolla firmata e non 2025-11-11 12:24:22 +01:00
6d89e4d09b Rimosso select * in pvm_getassortimentoCliente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 12:06:49 +01:00
3391051bb8 Finish FixSetupGestWebUser
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 11:35:58 +01:00
acba051357 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 11:35:58 +01:00
785ae254ee Creazione stb_gest_setup presenti solo in wtb_gest_setup_user 2025-11-11 11:35:37 +01:00
21a189ea66 aggiunto controllo su [NULL]
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 10:44:20 +01:00
3a4a11d9e8 Migliorata gestione datasources in BasicConnectionPool
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-11 10:26:39 +01:00
6d5d021884 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 18:35:27 +01:00
185d403d7a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 18:35:27 +01:00
349d983b7f Impostata truncate a 40 su ragione sociale in import Made In Masseria 2025-11-10 18:35:14 +01:00
85ed6b54f9 aggiunto n uovo campo su testata dei listini
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 18:10:15 +01:00
9b6b0c87aa sistemato metodo per errore avevo cambiato il requestparam
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 17:16:34 +01:00
fd68a9b73a modifiche a contabilità per variazione movimento con creazione scadenza e pagamento nello stesso movimento
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 17:07:19 +01:00
433ab4b0ec Inserita voce menù per lanciare procedura di cancellazione movimenti contabili
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 16:29:30 +01:00
df9fbc7f65 Implementato check connection in DbmsChangeTracker
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 15:42:40 +01:00
a8253614b4 aggiunto +
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 13:07:21 +01:00
9977cae821 gestito pagamento contestuale alla registrazione della fattura
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-10 12:46:48 +01:00
344010ed90 Aggiunta cache di StbEditLimit
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-10 12:23:51 +01:00
1c51fb717a Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-10 12:02:05 +01:00
81827a8368 Modifica migrations per DMS 2025-11-10 12:02:00 +01:00
21222a25e9 Gestita esclusione ordini annullati da Distribuzione materiali SMETAR 2025-11-10 12:01:48 +01:00
838f32e04c Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 11:19:51 +01:00
d24a033e01 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 11:19:51 +01:00
bdaf4a5ac6 aggiunta setup per selezionare il tipo calcolo prezzo base 2025-11-10 11:19:41 +01:00
5e76d8db2a Ingrandito campo note_incoterms a 40 in vtb_viaggi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 11:00:13 +01:00
bae92e626b aggiunta setup per mrp
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 10:44:09 +01:00
0d471db37d Aggiunta migration per rimuovere barcode duplicati nella tabella mtb_aart_bar_code sul database Winact (Carelli) 2025-11-10 10:41:14 +01:00
c4c6875e16 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-10 09:45:26 +01:00
3515e5c976 aggiunta possibilità di filtrare per numero ordine
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-10 09:28:41 +01:00
84a6f4c4f1 Aggiunta cache in servizi di completamento unt_mis e qta_cnf 2025-11-07 18:21:09 +01:00
ee9ec1a8a7 Sistemata EntityCacheComponent in debug 2025-11-07 18:20:29 +01:00
1884a9184e Check customerDb su EntityCacheComponent 2025-11-07 18:20:26 +01:00
caa62588b6 Fix su equals in getSetupList. 2025-11-07 18:20:23 +01:00
8bb9803f5b [BIOLEVANTE ]
- fix
2025-11-07 18:20:19 +01:00
ea27c26597 Fix su regole committate per errore.
Migliorato controllo alterObject in BaseMigration.
2025-11-07 18:20:14 +01:00
80aaa94036 Fix su Change Tracking 2025-11-07 18:20:03 +01:00
a82c0de415 Implementato primo sistema di Change Tracking per SQL Server 2025-11-07 18:18:40 +01:00
762ae4827f cancellazione beni e ritenute agganciate al movimento contabile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-07 15:26:33 +01:00
68b12b0cba Aggiunta partitaMag in SitArtOrdDTO
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-07 13:29:12 +01:00
f61577ee64 Aggiunto nuovo servizio per modificare ed esportare li ordini di vendita
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 16:47:47 +01:00
87e4d8704c Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 15:30:51 +01:00
a5f22e68d2 Finish FixCQExplodeDist
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 15:30:51 +01:00
cf261ab427 Fix null pointer se articolo senza cq 2025-11-06 15:30:42 +01:00
5bd3b02ff0 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 15:09:22 +01:00
10f62b669c Aggiunta gestione elenco Colori 2025-11-06 15:09:09 +01:00
565aec0739 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 14:58:22 +01:00
7112cf15da Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 14:58:21 +01:00
03a061ae1f Fix timeDiff di UtilityLocalDate 2025-11-06 14:57:47 +01:00
1e21e37e3c Aggiunto flag primario in pvm_getassortimentoClientePedane
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 12:03:03 +01:00
9da3fe3daa Impostato default flag primario ad 1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 11:11:22 +01:00
b127ca2222 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 10:54:16 +01:00
be688efd2c Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 10:54:15 +01:00
94b1318a56 sistemta modifca assenza e corretto errore di smetar 2025-11-06 10:54:09 +01:00
2e9e120cdb Rinominata classe AvailableConnectionModel
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-06 10:36:03 +01:00
1000b1abbe Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 13:29:03 +01:00
0f2246f033 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 13:29:02 +01:00
9dfee9d605 sistemato errore 2025-11-05 13:28:57 +01:00
3ecd9e365e Finish Feature-CAPELLIMONELLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 12:20:05 +01:00
78a13ae89b Merge branch 'develop' into feature/Feature-CAPELLIMONELLI 2025-11-05 12:19:56 +01:00
6f8ddf6aa5 sistemata migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 12:19:20 +01:00
03f9de19b3 Aggiunto cod_banc, cod_banc_azi e flag_banca_ven in contratti di vendita e delivery plan
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 12:16:38 +01:00
a74e9aeb92 Merge branch 'develop' into feature/Feature-CAPELLIMONELLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 11:56:23 +01:00
709422856b Aggiunto cod_banc, cod_banc_azi e flag_banca_ven in contratti di vendita e delivery plan
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-05 11:02:19 +01:00
034a3cb2b5 Modifica messaggio errore trasf orini da SALPAR a VG
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 18:35:50 +01:00
a9caf10897 sistemata ripianificazione dell'ordine di lavorazione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 17:15:29 +01:00
659908ecf7 Sistemato log
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 16:05:12 +01:00
7ebecd94cd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 13:34:13 +01:00
5bcb9000a9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 13:34:11 +01:00
fe622dd742 sistemate query 2025-11-04 13:34:02 +01:00
ab5d7e74a2 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-04 12:41:44 +01:00
68e6dd246f Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 12:41:43 +01:00
8fe2b50d5c sistemate regola 2025-11-04 12:41:38 +01:00
ebc8401989 Merge branch 'develop' into feature/Feature-CAPELLIMONELLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 12:34:43 +01:00
67765fc7d2 aggiunto controllo su data null nel fromato DAte
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 12:31:05 +01:00
a303459b7d cambiato messaggio
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 12:13:03 +01:00
2b68967ce0 Sistemata entity utenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 11:15:19 +01:00
b0194e569a Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 10:53:02 +01:00
164516166f Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-04 10:53:02 +01:00
3339cf1c9d cambioto salvataggio idx 2025-11-04 10:52:57 +01:00
d635079e50 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-04 10:16:56 +01:00
069ee22499 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-04 10:16:56 +01:00
e7082aef49 inserito rawcontent nella chiamata al servizio di import 2025-11-04 10:13:20 +01:00
ebf3a750a2 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-03 18:25:53 +01:00
a25dc83d30 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 18:25:52 +01:00
7d0bc83b67 sistemato erroer null 2025-11-03 18:24:18 +01:00
38a5b2510a sistemate migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 18:01:30 +01:00
fe2d868ca6 Merge branch 'develop' into feature/Feature-CAPELLIMONELLI 2025-11-03 17:52:27 +01:00
aca7cc07e6 Generazione del movimento di reverse
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 17:41:42 +01:00
a1618ad2ad Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 17:32:32 +01:00
67756553f3 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 17:32:31 +01:00
473c2e05b5 sistemata sulle regole il controllo sulle date nulle 2025-11-03 17:32:17 +01:00
84560a94ea Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 15:14:44 +01:00
9a35af5b20 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 15:14:44 +01:00
ba899f3309 aggiunto log 2025-11-03 15:08:36 +01:00
8b9454a684 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 13:25:47 +01:00
612bc1e3de Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 13:25:47 +01:00
6f198e7d5a correzione fatture elettroniche 2025-11-03 13:25:40 +01:00
0c6f7f769b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 12:54:39 +01:00
19e709fc3d Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 12:54:39 +01:00
fd4636e6a6 sistemata conversione data 2025-11-03 12:54:33 +01:00
62458a0640 modifiche a modellini commerciali
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 12:52:18 +01:00
43efca4045 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 12:11:03 +01:00
5106ff9f12 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-11-03 12:11:03 +01:00
3516a8c8de aggiunto log 2025-11-03 12:10:56 +01:00
62857a9bb0 Merge branch 'develop' into feature/Feature-CAPELLIMONELLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-03 09:05:35 +01:00
jenkins
e1b85b8879 Merge branch 'develop'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-11-02 07:41:47 +01:00
3f4a8b38eb Aggiunto controllo per aggiornamento data scadenza
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 17:37:36 +01:00
99047236fc Merge remote-tracking branch 'origin/develop' into develop 2025-10-31 17:37:27 +01:00
0f3c828c1f Aggiunto controllo per aggiornamento data scadenza 2025-10-31 17:37:20 +01:00
6d950cee38 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 14:08:58 +01:00
2b426103cd modificata vista gramm OlapFermiMacchina 2025-10-31 14:08:45 +01:00
876daa7df4 Implementato log via email degli errori durante le method call pianificate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 13:22:23 +01:00
cca26eb472 creato report personalizzato Conto economico di commessa sintetico per smetar
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 12:55:23 +01:00
a1c7f63976 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 12:19:28 +01:00
e83e7f03c8 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 12:19:28 +01:00
e4b08b9a61 [ROSSOGARGANO]
- aggiunto controllo su funzione suggerimento ean13 per considerare solo gli altri ean13 nel calcolo del massimo disponibile
2025-10-31 12:18:56 +01:00
b4f8fa49da [ROSSOGARGANO]
- aggiunto controllo su funzione suggerimento ean13 per considerare solo gli altri ean13 nel calcolo del massimo disponibile
2025-10-31 12:18:40 +01:00
5842cf0048 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 11:51:03 +01:00
d75dd5ead7 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-31 11:51:03 +01:00
b6eed691d0 [MES]
- aggiunto parametro preparatoDa in Dto creazione UDC per permettere di definire l'utente responsabile della UDC creata (Levanplast)
2025-10-31 11:50:51 +01:00
49626f4371 modificato nome campo dtb_tipi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 10:08:18 +01:00
6e1d889eb8 su db Rossogargano abilitato report Fatturato per Macrozona/Zona solo a chi ha attivo report Fatturato Agenti/Zone 2025-10-31 10:07:58 +01:00
0cf5dbd24b inserito campo flag_delete_plk nella dtb_tipi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-31 09:37:38 +01:00
19d4c6b929 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 17:46:03 +01:00
a040670c5b inserita nuovo voce menù report fatturato per macrozona/zona 2025-10-30 17:45:32 +01:00
b9fd701098 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 17:41:07 +01:00
d39134c47e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 17:41:07 +01:00
fa0b2e338b sistemata registrazione movimeto di reverse 2025-10-30 17:41:00 +01:00
0efc991231 modificata la vista wtb_user con stb_user
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-30 17:13:08 +01:00
965e9ee3b4 sistemato utente
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-10-30 17:12:37 +01:00
59aabd6a43 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 17:11:59 +01:00
40f5649a5f Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 17:11:57 +01:00
45d067673c sistemato close task 2025-10-30 17:11:51 +01:00
9634306d01 aggiunto metodo con localdate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 16:55:07 +01:00
d8e24764dc Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 16:11:16 +01:00
5cd2151f6c Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 16:11:14 +01:00
449aa664ab sistemato doc finante rif import 2025-10-30 16:10:39 +01:00
91f7269af4 Gestito il tipo valore dropdownlist in controlli qualità
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 16:06:04 +01:00
29a8f6efc6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 15:43:42 +01:00
be3b57b1c5 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 15:43:41 +01:00
cd5cfa88bc sistemata notifica 2025-10-30 15:43:34 +01:00
d28e3578e4 aggiunto controllo in steup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 15:24:17 +01:00
af6b053215 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 13:22:37 +01:00
cd3468fd50 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-30 13:22:37 +01:00
ac5361b9a8 sistemato generazione del movimento di reverse 2025-10-30 13:22:31 +01:00
e7b3d65628 eliminato log
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 12:36:37 +01:00
164f105878 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 12:26:21 +01:00
605ec9a910 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-30 12:26:20 +01:00
8d83789356 sistemato serivizio di recuper e sistemati dati 2025-10-30 12:26:15 +01:00
623d9d316a sostituito date con localdate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 12:19:50 +01:00
bba6ae5d9b Refactor Depositi and MovimentiContabili services and controllers; add migration for foreign key constraints
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-30 12:05:01 +01:00
db32ba0e15 modificate classi inserendo localDate 2025-10-30 11:59:32 +01:00
02e2e73259 modificate classi inserendo localDate
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-30 11:50:45 +01:00
1bc1caa528 sistemato serivizio di recuper e sistemati dati 2025-10-30 11:50:20 +01:00
3637ba0048 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-29 17:11:19 +01:00
7409d15cce Modifica funzione acquisizione matricole MAGGIO 2025-10-29 17:11:14 +01:00
563902d29e aggiunti campi: vettore,Targa, num_prenotazione, container,sigillo,nave e id_viaggio nella vista vw_tracciabUDCVend
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-29 15:39:10 +01:00
c2994b8767 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-29 15:31:25 +01:00
7a9b1fba4d creata setup sulla mtb_aart che se abilitata blocca se codice a barre già assegnato ad altra referenza su tutti i db di carelli 2025-10-29 15:31:12 +01:00
88743f65c6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-29 13:34:07 +01:00
61cf7b8601 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-29 13:34:05 +01:00
2663f039a0 elimintao filtro sbagliato su movimenti 2025-10-29 12:58:46 +01:00
0bac28fc98 Aggiunta setup in PICKING > PRODUZIONE per il versamento automatico
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 16:23:50 +01:00
9f696ec2cd Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-28 16:03:24 +01:00
8983748314 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 16:03:24 +01:00
bcb39b8829 eliminti flatrans rs 2025-10-28 16:03:18 +01:00
3abf35028f Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 14:51:32 +01:00
58c7d31fea Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-28 14:51:31 +01:00
68db2d9591 causale reso sistemata 2025-10-28 14:51:26 +01:00
d6d342ba42 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 12:56:15 +01:00
9b7ba6e6f4 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-28 12:56:14 +01:00
fc3fcaf80c cambiata logica di attribuzione data reg su articoli con solo scarichi 2025-10-28 12:56:06 +01:00
8a2029f396 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 11:56:26 +01:00
3b4d29d1c4 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-28 11:56:26 +01:00
952e1b22f2 sistemata recupero scontrini 2025-10-28 11:56:16 +01:00
3151755a1f Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-28 11:28:32 +01:00
2659bbdc83 Finish Hotfix-100
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-28 11:28:31 +01:00
d60ffea913 sistemata recupero scontrini 2025-10-28 11:28:02 +01:00
0144d6d7ef gestiti valori null 2025-10-28 11:24:49 +01:00
755132a1b9 Aggiunto controllo su posizione mono ul in fase di trasferimento del collo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 10:52:53 +01:00
0b1292ec55 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-28 10:38:22 +01:00
4b4ba7bc10 Finish FixPassValidation
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-28 10:38:21 +01:00
8f365e77be Corretto controllo lunghezza password se uguale ad 8 2025-10-28 10:38:13 +01:00
5052f6dc2d VARIAZIONI PER CAPELLI MONELLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 18:22:39 +01:00
42a9756d94 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 17:48:56 +01:00
41fbeb333f Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-27 17:48:56 +01:00
279257a35d aggiunto capelli monelli 2025-10-27 17:48:50 +01:00
5d7d2cb99f Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 16:57:24 +01:00
9676b65be3 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 16:57:24 +01:00
27f28abb9b sistemata chiave 2025-10-27 16:56:29 +01:00
b3e390a634 rivista logica per salvataggio ctb_parr 2025-10-27 14:31:42 +01:00
2ae58205d8 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 12:58:24 +01:00
ea025c1f31 creata setup sulla mtb_aart che se abilitata blocca se codice a barre già assegnato ad altra referenza 2025-10-27 12:58:13 +01:00
0a03b1d489 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 12:31:54 +01:00
9d14673771 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 12:31:53 +01:00
ee9f4b08ff corrette regole su calc peso colli 2025-10-27 12:31:42 +01:00
cdc81c58e7 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 12:22:09 +01:00
4c4b364177 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-27 12:22:08 +01:00
0a46eda642 Hotfix cifre_dec in Bigdecimal 2025-10-27 12:21:54 +01:00
53fb1cb58e rivista logica per salvataggio ctb_parr 2025-10-27 11:30:40 +01:00
74dcedeba9 Fix ricalcolo peso netto e lordo mtb_colr se modificate le qta col
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-24 19:37:52 +02:00
5848f82e4a Refactor Depositi and MovimentiContabili services and controllers; add migration for foreign key constraints
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-24 19:22:22 +02:00
797c5c7736 Refactor Depositi and MovimentiContabili services and controllers; add migration for foreign key constraints
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-24 19:19:54 +02:00
b666064d15 Condizione per Florapulia di gestione esenzione articolo prima del cliente (DA CANCELLARE QUANDO NON SARANNO PIU' NOSTRTI CLIENTI)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-24 18:12:04 +02:00
532aa91b23 Aggiunti campi su CtbAmac
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-24 16:14:23 +02:00
7f2c83ea69 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-24 11:39:44 +02:00
307840c236 moifiche a registrazione movimenti doc finance
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-23 18:18:09 +02:00
25321a9941 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-23 14:59:27 +02:00
dcbf627840 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-23 14:59:26 +02:00
3e069d1c39 Fix check licenza 2025-10-23 14:59:20 +02:00
988712b234 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-23 13:36:23 +02:00
123c7835d6 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-23 13:36:22 +02:00
d9d2b5bef7 Fix check licenza 2025-10-23 13:36:09 +02:00
99740104b9 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-23 12:13:59 +02:00
3606aa99d9 aggiornata vista gramm olapfermimacchina con controllo che le date non siano nulle 2025-10-23 12:13:48 +02:00
673de9d9b1 aggiungo campo id pk nella tabella gramm_simulatore_coan 2025-10-23 12:12:21 +02:00
0bebf87fa4 Rimosso default PVM ad integryApplication
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-23 11:59:09 +02:00
87cb0f8302 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-23 11:34:17 +02:00
6b80520d8d modificata la regola che assegna la versione e eliminta regola non usata 2025-10-23 11:33:40 +02:00
ab956b4a6e Sistemata Migration_20250827151739 2025-10-23 10:36:57 +02:00
2831137dac aggiunto id_art_equi in getListinoVendita 2025-10-23 10:22:53 +02:00
dabf6a0a54 Creata setup per disabilitare controllo su tutti i range di un colore in ordikids
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-22 17:29:22 +02:00
7a6ddde702 Rimosso json property errato su cod divi in VtbListData
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-22 11:14:59 +02:00
17f4e1ad49 Merge tag 'Hotfix-2' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
Finish Hotfix-2
2025-10-21 17:38:24 +02:00
74227e6bf1 Finish Hotfix-2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-21 17:38:23 +02:00
fc2eee29a6 Corretto controllo su codice pagamento 2025-10-21 17:37:47 +02:00
8cf75f9497 Merge remote-tracking branch 'origin/develop' into develop 2025-10-21 16:54:35 +02:00
5b40bd4780 Modifica per DMS 2025-10-21 16:54:30 +02:00
9899944a04 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-21 15:14:27 +02:00
58335a5102 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-21 15:14:25 +02:00
3507bc531c aggiunto cotrnollo su null in parselocaldate 2025-10-21 15:14:20 +02:00
4bb4a6b34b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-21 10:02:23 +02:00
fe0927c0eb Finish FixDuplicaLisv
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-21 10:02:22 +02:00
0d93dd2b1c Corretta duplicazione listino di vendita, prima usava solo l'ultima versione 2025-10-21 10:02:14 +02:00
dad53637e8 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 18:22:44 +02:00
853470701b Add ScontriniController and update ScontriniService for delete functionality 2025-10-20 18:22:32 +02:00
b1ee861a5c Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 18:15:32 +02:00
05857e2b11 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 18:15:32 +02:00
60fb37ad8b Gestione formato CSV e EXCEL su export ANAGRAFICHE ARTICOLI
(cherry picked from commit dae03dc91f)
2025-10-20 18:14:38 +02:00
dae03dc91f Gestione formato CSV e EXCEL su export ANAGRAFICHE ARTICOLI
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 18:06:17 +02:00
5c81248472 Finish Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 17:18:26 +02:00
7184c24f16 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-10-20 17:18:09 +02:00
a2be331295 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 17:17:01 +02:00
18403554e7 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 17:17:00 +02:00
b1e189321c visualizzare come pianificate le attività con scadenza - tornare indietro 2025-10-20 17:16:53 +02:00
e61b2532b1 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 17:01:15 +02:00
db56575b8f Finish Hotfix-100
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-20 17:01:14 +02:00
7832095b86 visualizzare come pianificate le attività con scadenza 2025-10-20 17:01:07 +02:00
2bd8b6392c Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-20 16:03:17 +02:00
442af631aa Finish FlagInDuplicaListinoVend
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 16:03:17 +02:00
2666e9a7ef Gestiti flag da mtb_lisv in duplicazione listino di vendita 2025-10-20 16:02:38 +02:00
7b3395dec8 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 15:55:55 +02:00
7a15a94b38 Tolto controllo su per_aliq<>0 anche quando è presente il destinatario e non ha una sua aliquota 2025-10-20 15:55:32 +02:00
da8884dcdc Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 15:46:31 +02:00
54a09c2300 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 15:46:31 +02:00
8818a42457 regola per la valorizzazione del cod paga 2025-10-20 15:46:24 +02:00
d4a035fc0e Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 14:50:18 +02:00
3c5a0ba1f1 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 13:06:31 +02:00
c49f135e49 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 13:06:31 +02:00
a4d7d09c0b modificata creazione file integretail 2025-10-20 13:06:24 +02:00
73b26249eb Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 13:03:04 +02:00
2581f537b1 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 13:03:04 +02:00
8c14cd1937 modificata creazione file integretail 2025-10-20 13:02:57 +02:00
597c2fe2a2 elimintato metodo non usato
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 12:42:02 +02:00
785b03455e Aggiunto completamento automatico del codice pagamento per documenti di tipo V
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 10:31:20 +02:00
e7a581f326 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 09:35:26 +02:00
db85805afd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 09:35:26 +02:00
3350677b23 Implementato login statico per app 2025-10-20 09:35:10 +02:00
8413be30a0 Aggiunto controllo su email valida nelle persone di riferimento.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 09:20:31 +02:00
9033da0bf2 modificata vista: inserito progressivo_ul della materia prima
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-20 09:07:33 +02:00
6dfd56c58e Modifica per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-17 15:33:01 +02:00
98e251478c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-17 13:14:28 +02:00
d31a28d3b5 Add migration script for setup configuration in W_SUPTABLE 2025-10-17 13:14:14 +02:00
fd5867e5f1 [loginWeb]
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
- corretta login con md5 ma senza profilo
2025-10-17 11:15:11 +02:00
13311f191e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-16 17:07:12 +02:00
1f2ace8258 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-16 17:07:11 +02:00
0aaba82e57 cambiato nome file zucchetti 2025-10-16 17:07:02 +02:00
3888c1ce25 Merge branch 'hotfix/Hotfix-1' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-16 16:14:19 +02:00
954eb96a2a Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-16 16:14:18 +02:00
057e3ac3c1 [SUIT - FARMMES]
- aggiunto MArshaller per convertire localDateTime in XML
2025-10-16 16:14:07 +02:00
49cad4a71a Aggiunto filtro per tipo_mgrp in retrieveArts WMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-16 12:39:24 +02:00
8b593a3b21 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 17:45:30 +02:00
6072ab57c9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 17:45:29 +02:00
120d85c1d3 sistemato calcolo tempi 2025-10-15 17:45:25 +02:00
13e2b1b3a4 Rename method and DTO for activity publication; add ActivityPublicationDTO class
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 16:43:18 +02:00
6c705ab96b Rename .groovy to .java 2025-10-15 16:43:18 +02:00
28e0c448f4 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 16:03:00 +02:00
0b22aa9764 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 16:02:59 +02:00
a1b813f051 sistemato storno scontrino totale 2025-10-15 15:55:59 +02:00
516874a6e5 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 14:38:28 +02:00
5b31befcec corretto DB non esecuzione migration 2025-10-15 14:38:14 +02:00
19335be66b aggiunto campo flag_abil nella srl_user_table e creata entity 2025-10-15 14:37:42 +02:00
9ac451693b Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 13:19:01 +02:00
399f712024 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 13:19:01 +02:00
db38f84fca Add flagPrimario field to MtbLisv and MtbLisvData classes and update related logic 2025-10-15 13:18:29 +02:00
fa94de4135 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 12:03:06 +02:00
81b01dd5a8 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 12:03:05 +02:00
085d6af657 Fix cast data query attività 2025-10-15 12:02:39 +02:00
5421cb12d2 Aggiunto campo articolo in retrieveArts wms
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 11:51:19 +02:00
cd98c3884f Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 10:45:23 +02:00
92e60c95e3 creati report persanalizzati Movimentazione di vendita per licor 2025-10-15 10:45:10 +02:00
227025b526 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-15 09:46:22 +02:00
4647125b61 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-15 09:46:21 +02:00
1217922b90 Refactor activity file attachment e aggiunta la possibilità di rimuovere gli allegati 2025-10-15 09:46:06 +02:00
731c28f382 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-14 18:39:25 +02:00
2c5deeceb6 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 18:39:25 +02:00
8e727aeb73 Gestione nazione in partita iva in invoic ED 2025-10-14 18:39:15 +02:00
273b76715a Gestione nazione in partita iva in invoic ED 2025-10-14 18:39:05 +02:00
7aa8c71b3f Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-14 18:18:34 +02:00
ac235c2b56 ampliato log loginRetail 2025-10-14 18:18:15 +02:00
b78ab2e308 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-14 16:56:09 +02:00
a44a307dd1 Aggiunta funzione per inserire pubblicazioni di attività e creazione del DTO corrispondente 2025-10-14 16:56:05 +02:00
c25d08c9ac Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 16:36:31 +02:00
695e784c73 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 16:36:31 +02:00
0c3415b7d6 [SUIT]
- aggiunto md5 in log per servizi che non usano le credenziali dirette in login
2025-10-14 16:36:20 +02:00
b412860f1f Aggiunta funzione per clonare tabelle nel database
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 15:00:59 +02:00
85f5129057 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 12:46:46 +02:00
74bfc38cd5 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-14 12:46:45 +02:00
3ec6deaec6 Fix su JSON deserialize di un LocalDateTime anche se si passa una date 2025-10-14 12:46:38 +02:00
e2113d0660 aggiunti lotti multipli su kit
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-14 12:07:14 +02:00
8199b354d8 Finish FixRettificaNull
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-10-14 11:48:18 +02:00
4e795f6a0a Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-14 11:48:18 +02:00
5f8732299a Fix null in caso di nessun collo di rettifica in rettificaGiacenzaProduzione 2025-10-14 11:48:05 +02:00
8babc6acfb Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 12:37:39 +02:00
f193d21ffa Modifica per DMS 2025-10-13 12:37:35 +02:00
6361e790b2 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 10:57:47 +02:00
206927622a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 10:57:47 +02:00
b1ee82f0dc Aggiunta colonne extra_project e view_in_meeting nella tabella stb_activity e creazione della migrazione corrispondente 2025-10-13 10:57:34 +02:00
2529660f3b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 09:27:30 +02:00
5c784a3f90 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 09:27:29 +02:00
d493749445 Fix servizi Task 2025-10-13 09:27:18 +02:00
7e9c36ab77 Effettuato arrotondamento a 2 cifre decimali
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 09:11:39 +02:00
904f5115b9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 09:07:41 +02:00
4387c4d1c3 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 09:07:41 +02:00
9c481c5380 aggiunta integry 2025-10-13 09:07:31 +02:00
8eda08d060 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-13 08:41:53 +02:00
jenkins
ea493b3fa2 Merge branch 'develop'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-10-12 07:41:42 +02:00
e8bd3c0c99 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 18:59:07 +02:00
ac7bb55874 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 18:59:07 +02:00
626a728529 [RETTIFICA GIACENZE]
- aggiunto flag_sezione in rettifica collo
- aggiunto flag_sezione default in dtbDocr
2025-10-10 18:58:55 +02:00
9f9e1ef12d aggiunta nazione su carico oli sfuso, modifiche a espotazione listini infragruppo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 14:06:31 +02:00
c6526f6574 Rimossi utilizzi di mvw_sitart_udc_det
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 12:17:13 +02:00
a919c323ae inserita descrizione tabella srl_user_table
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 10:53:27 +02:00
00cb459c66 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 10:36:54 +02:00
e1bee4b70f creata nuova tabella di relazione tra utenti e tabelle 2025-10-10 10:36:45 +02:00
cd81b92bfe Nella generazione della fattura conto deposito gestito inserimento modalità di pagamento e data decorrenza uguali a quelle del contratto
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 10:23:41 +02:00
4120f20c5a elimintati thread
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 09:57:13 +02:00
d43345c5fc Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 09:07:46 +02:00
c0ad1f0770 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 09:07:45 +02:00
a2bd7bc9aa eliminati gruppi senza intercode 2025-10-10 09:07:40 +02:00
02eb94fdef aggiunte descrizioni tabelle
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-10 09:06:34 +02:00
c6380a9e05 In getSuggestedPickingList sostituita dipendenza da mvw_sitart_udc_det con mvw_sitart_udc_det_inventario
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-09 13:32:14 +02:00
08b2cb3289 Corretta query in modo che metta il codice sdi ditta solo quando l'email pec è nulla
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-09 12:31:07 +02:00
65009a6693 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-09 10:53:32 +02:00
cb0f18eb0b Merge branch 'hotfix/Hotfix-1' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-09 10:53:32 +02:00
30108563a0 [MES]
- fix creazione collo carico prodotto finito
2025-10-09 10:53:20 +02:00
bec0430942 Gestione opzione di attivazione nuova versione resi vendita
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-08 16:52:57 +02:00
ed9952d37d Fix su FK non aggiornate a seguito del rename di stb_activity in stb_activity_old
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-08 12:19:05 +02:00
a656c81373 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-08 09:39:02 +02:00
d6c0271129 importazione scontrini mmpos 2025-10-07 18:13:25 +02:00
d3ba9aae5f creata setup che se abilitata quando si va a variare un movimento contabile più vecchio di 30 gg parte la domanda di controllo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-07 15:32:09 +02:00
809a31ea87 sistemata migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-07 15:08:22 +02:00
63cf1920a9 sistemata migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-07 14:56:34 +02:00
3c79fb6745 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-07 12:31:24 +02:00
4a86118707 creata setup che se abilitata chiede la verifica del protocollo dopo la registrazione del documento di acquisto 2025-10-07 12:31:14 +02:00
9dfd8623a7 Finish Feature-Attivita
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-07 10:29:17 +02:00
7e8b8a8bc4 eliminati campi date nella stbactivity
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-07 10:28:50 +02:00
554a78e40f Merge branch 'develop' into feature/Feature-Attivita
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-07 09:49:37 +02:00
32022652b3 Aggiunti dati ttb_qta_min_ord in exportArticoliCodbarre ordikids
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 18:05:41 +02:00
3560f2a661 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 15:34:22 +02:00
63265571ac Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-06 15:34:22 +02:00
73049f32eb Aggiunta opzione di riassegnazione costo da distinta tramire formula 2025-10-06 15:34:05 +02:00
1e9b48811c inviati articoli variati in anagrafica
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 14:39:40 +02:00
2312323649 considerati solo i reparti con intercode
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 14:12:54 +02:00
9c634059ab Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 13:02:52 +02:00
57892e22ee Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-06 13:01:13 +02:00
9d6dd2ff5f Finish Hotfix-100
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-06 13:01:12 +02:00
2d1d15da98 modificate evasione ordini in accettazione 2025-10-06 13:01:02 +02:00
08af6fddb2 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 12:55:55 +02:00
1a97940826 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 12:55:55 +02:00
b2e6b0bd87 modificate evasione ordini in accettazione 2025-10-06 12:55:48 +02:00
c161857422 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 12:04:44 +02:00
69343830a9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 12:04:43 +02:00
f3644dcc3f sistemata entity ttbLine 2025-10-06 12:04:36 +02:00
b8782a14c1 Finish Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 09:38:52 +02:00
4825d59616 Merge branch 'develop' into feature/Feature-Attivita
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-06 09:34:55 +02:00
e10f2d3a0c importazione scontrini carelli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 09:23:37 +02:00
18f4f2770a Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-06 09:09:58 +02:00
jenkins
fbf26157c1 Merge branch 'develop'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-05 07:41:50 +02:00
ee2e5c5938 Nella generazione della scheda tecnica gestiti colli_pedana e colli_strato senza decimali
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 16:57:38 +02:00
8602bbf09d Aggiunto activity/getAvgResolutionTime
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 16:39:40 +02:00
38ef2b297d Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 16:34:17 +02:00
452a2d2555 Aggiunto servizio per retrievePosition 2025-10-03 16:34:10 +02:00
d6794a904f [Salesbook] Sistemata query per retrieveJobProgress 2025-10-03 16:33:50 +02:00
18c2ae047e importazione scontrini carelli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 14:29:32 +02:00
5581055f07 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 12:06:30 +02:00
fc0ac2ec4b gesione tabella ttb_qta_min_ord
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 12:05:18 +02:00
b64cd203eb Aggiornata procedura pianificata di import scontrini per evitare le internal call
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-03 11:13:14 +02:00
e436b9773e valore voucher
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 18:24:02 +02:00
37cb5d90f4 Creata tabella mrl_aart_clie_blacklist
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 16:05:43 +02:00
15e598df7e modificato parametro user_name nella processReport
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 14:33:58 +02:00
b43b6be4ac Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 12:39:22 +02:00
4036d2a04f inserito parametro user_name nella processReport 2025-10-02 12:39:02 +02:00
90bc764e61 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 12:18:08 +02:00
37fcfba74e Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 12:18:08 +02:00
9e5bfc6655 [ROSSOGARGANO - MES]
aggiunta nuova funzione db per suggest data produzione partita
2025-10-02 12:17:56 +02:00
295fd59729 [ROSSOGARGANO - MES]
aggiunta nuova funzione db per suggest data produzione partita
2025-10-02 12:17:48 +02:00
8c2cf7d9fe Corretta funzione per estrazione articolo miscela
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 11:52:18 +02:00
efb786ed0d Corretta unique key in tabella ttb_qta_min_ord
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-02 11:45:49 +02:00
514500de0b gestita wtbDepo come entity child in mtbDepo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 17:12:15 +02:00
304f0a53db Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 17:02:28 +02:00
645b269fc8 Modificato tipo default_depo in Boolean 2025-10-01 17:02:18 +02:00
94ceff0753 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS 2025-10-01 16:52:04 +02:00
7f16ca80f4 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-01 16:48:09 +02:00
14c57d6ab5 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 16:48:08 +02:00
ce56820405 cntrollo null 2025-10-01 16:48:03 +02:00
4e46f89440 Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 16:12:56 +02:00
fa337ffb16 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 16:12:56 +02:00
bd3b915963 corretto tipo dato per la colonna default_Depo 2025-10-01 16:12:44 +02:00
032a4e3aca corretto tipo dato per la colonna default_Depo 2025-10-01 16:12:38 +02:00
3c4d62cde2 Passata in left la query sui colli per segnalazione fatta da Dulciar
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 15:48:06 +02:00
d1a7a166a8 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 15:38:41 +02:00
e0a3dbcea2 eliminati campi date nella stbactivity
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-01 15:38:25 +02:00
112f083c9a Creata entity MrlAartClieBlacklist e creata voce di menu blacklist articoli cliente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 12:31:24 +02:00
adccf68c45 aggiunto modulo rimobrsi KM in menu
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 12:16:58 +02:00
f84a18b9b6 Modifica per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 11:50:54 +02:00
d7ef52f164 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 11:50:27 +02:00
5a91589ac6 Modifica per DMS 2025-10-01 11:50:14 +02:00
942dbeef5e eliminati campi date nella stbactivity
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-10-01 10:41:54 +02:00
a18156014b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 10:00:39 +02:00
c5cbfd406f Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 10:00:38 +02:00
abc2a0bb1e Fix su clean directory 2025-10-01 10:00:31 +02:00
3568b6b17e Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 09:59:09 +02:00
93261bdb87 Fix su clean directory 2025-10-01 09:59:03 +02:00
202261afc1 Visualizzazione flag in stampa riepilogo presenze per dipendente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-10-01 08:48:57 +02:00
75d42d04ee eliminati campi date nella stbactivity
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-30 17:27:15 +02:00
6898cfc92c Finish FixDocDDTP
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 16:36:16 +02:00
e85b00c457 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 16:36:16 +02:00
ba1e8bb41c Fix creazione documento ddtp per documenti con costo acquirente 2025-09-30 16:36:05 +02:00
32ad423fc2 Fix controllo tipo documento save documenti diretti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 16:24:32 +02:00
1661d60b94 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 15:34:12 +02:00
438d62a362 Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 15:34:11 +02:00
0bb2cf76bf Aggiornamento updordini 2025-09-30 15:33:59 +02:00
987a576bfd Aggiornamento updordini 2025-09-30 15:33:28 +02:00
91ea98d9f2 Merge tag 'Hotfix-100' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
Finish Hotfix-100
2025-09-30 15:14:31 +02:00
b64c01e7ce Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 15:14:30 +02:00
be1ee50f32 mina: ottimizzazione getDatiProv 2025-09-30 15:13:53 +02:00
d2955085c5 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 15:11:59 +02:00
10ed26c023 creata setup che verifica o meno che la data decorrenza sia precedente alla data del documento 2025-09-30 15:11:52 +02:00
98cf6d5192 Sistemata UpdProgOrdini: era saltata la parte che aggironata la qta_evasa_prod
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-30 12:15:41 +02:00
7e0ee7192e Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 18:05:47 +02:00
f68690a01b Aumentate dimensioni campo cod_affiliazione destinatario 2025-09-29 18:05:42 +02:00
fcdbe8ab94 eliminati campi date nella stbactivity
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-29 17:42:05 +02:00
19568d1394 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 17:21:20 +02:00
425b4b544f Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 17:21:18 +02:00
5dc8949215 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 17:20:51 +02:00
1497a55607 tolta commit da sincronizzazioni 2025-09-29 17:00:42 +02:00
6f94a290ee AGGIUNTO CONTROLLO SU COD_ANAG NULLO 2025-09-29 16:40:25 +02:00
911271a6b1 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 16:39:56 +02:00
d955609d93 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 16:39:56 +02:00
eddd9ff8e7 Fix su query deposito utente errata 2025-09-29 16:39:51 +02:00
dcd3b0aace gestito log chiusura tagli
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-29 15:48:30 +02:00
77a2fef606 Aggiunte logiche per documenti di integrazione durante la generazione dell'FPX
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-29 15:43:29 +02:00
d54da02dc0 Aumentate dimensioni campo cod_affiliazione destinatario
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 12:48:11 +02:00
7e4c36a785 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 10:46:54 +02:00
1bee7e59ab Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 10:46:53 +02:00
d629f0a21d aggiunti campi rapportini 2025-09-29 10:46:47 +02:00
eecadba27d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 10:13:05 +02:00
ab764a9a50 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 10:13:04 +02:00
6027df9ee5 risolta evasione ordini accettazione 2025-09-29 10:12:56 +02:00
7d831c59e7 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS 2025-09-29 09:21:24 +02:00
eaf8e4779e aggiunto servizio in ascolto
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 09:21:04 +02:00
84669f3929 gestito storno
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-29 08:43:24 +02:00
9b3184281c importazione scontrini new
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-26 17:07:03 +02:00
7dff05df5c Modifiche migrations DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-26 13:04:42 +02:00
b88a5bface Modifiche migrations DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-26 13:04:25 +02:00
48b87b7b48 gestito valore 0 nella divisione con il peso_kg
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-26 09:50:12 +02:00
bc512ab8f2 Rimosso parametro duplicato in getReportParams
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 18:11:29 +02:00
b73d2e9bac nascosto log della login per sicurezza e privacy
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 16:07:23 +02:00
bc18dc3231 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 15:53:31 +02:00
d660bb592b added TtbGrtg, TtbGrtgEl, and TtbQtaMinOrd entity classes
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 15:50:30 +02:00
a5478ef619 migration per textiles
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 15:44:46 +02:00
c8034042aa migration per textiles
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-25 15:36:10 +02:00
bff520b2ab Nel caso di kit con costo da composto valorizzato con funzione f_getPrzNettoAcqArt (stessa espressione prevista nel listino di acquisto)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 14:58:59 +02:00
71eeba9091 Aggiunta migration per abilitare a tutti i clienti (eccetto Carelli) la login tramite servizi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 13:09:53 +02:00
f30284a30b Modificata regola per bloccare cancellazione solo se esiste un movimento di incasso - pagamento sulla partita contabile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-25 11:54:46 +02:00
8932e3ac98 Aggiunto campo "backupAfterImport" utilizzato dalle importazioni da SFTP
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-24 17:36:27 +02:00
856b759acc Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-24 11:35:06 +02:00
c6271341b8 Modificata la query prendendo il codice del PDC quando il diacod è null 2025-09-24 11:34:58 +02:00
b68a7aebd4 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-24 11:29:33 +02:00
c682331a22 Fix build command
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build started...
2025-09-24 11:29:04 +02:00
af6bc8ebe9 Corretto rollback su salvataggio documenti in caso di errore e creazione doc imballo se cod forn trasp impostato
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-09-24 11:24:00 +02:00
685fa64f46 bugfix: corretta creazione indice unico us deposito default utenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-24 11:19:37 +02:00
1456749587 Fix build command
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-24 11:11:27 +02:00
dac957e5b0 Fix build command
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-09-24 11:10:54 +02:00
f8fd7820bc Fix build command
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-24 10:49:34 +02:00
db35c3d914 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-24 10:48:11 +02:00
fde32f2314 Prima build con podman 2025-09-24 10:48:05 +02:00
dee4485a89 WMS
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
- aggiunto flag deposito di default per utente
2025-09-24 10:01:57 +02:00
ef58f2e65c importazione scontrini nuova 2025-09-23 18:45:45 +02:00
d5763c1d03 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 18:32:57 +02:00
26d83ddabf Finish FixCrmCompleteOrder
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-23 18:32:57 +02:00
d0369d85c5 Fix cod anag mancante non associato ad ordine in caso di nuovo cliente 2025-09-23 18:32:50 +02:00
dbba2e3fb3 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 17:24:42 +02:00
6248e0da07 Finish FixCalcPeso
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 17:24:42 +02:00
c9fac89d16 Fix ricalcolo peso non salvato su ordini 2025-09-23 17:24:32 +02:00
11431e37c9 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 17:08:59 +02:00
827fc6836c Modifiche migrations DMS 2025-09-23 17:08:49 +02:00
262d6d0f08 Finish MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 15:53:49 +02:00
ea5c880b0a Merge branch 'develop' into feature/MaxiDataV2
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-09-23 15:53:18 +02:00
182bd07d6c Ripristinata vecchia logica (in attesa di switch ufficiale) dell'importazione degli ordini di maxidata
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 15:52:48 +02:00
66a514468f [MaxiData] Completata implementazione API per creazione pedana, avvio, pausa e stop di ordine di lavoro 2025-09-23 15:52:22 +02:00
ff41b7e0dd Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 13:25:04 +02:00
de6e0865ac Gestione esenzione iva su spese trasporto da prospet 2025-09-23 13:24:58 +02:00
6b8a2fb4c0 Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 12:05:36 +02:00
86e0750f03 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 11:55:23 +02:00
d0bb5e9342 Impostato ad 1 valore setup 2025-09-23 11:55:13 +02:00
9712d81a7d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 11:51:38 +02:00
cea2af9237 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 11:51:37 +02:00
6734cfdde2 sistemato controllo su updprogmaga 2025-09-23 11:51:32 +02:00
8f6ce309a2 Modifica funzione disponibilità TEXTILES
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 11:44:40 +02:00
d551f029a8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 09:23:48 +02:00
87204b30bd Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-23 09:23:47 +02:00
28faad2491 Fix insert or update activity 2025-09-23 09:23:19 +02:00
839942ea40 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-22 15:44:17 +02:00
d24f5387dc Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-22 15:44:17 +02:00
521cc48e56 sistemata notifica 2025-09-22 15:44:11 +02:00
44a9d7dbd2 Modificato il nome utente nella notifica per l'attività
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-09-22 15:43:08 +02:00
74d3dc0a67 migratio per eliminare lettura setup per biolenvante
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-22 15:38:18 +02:00
acc35b8cc8 modifiche per nuova impostazione scontrini
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-22 14:15:33 +02:00
b9b756a811 Merge branch 'develop' into feature/MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-22 10:30:30 +02:00
c1e979391d merge
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-22 09:50:54 +02:00
5fd28fddd1 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-22 08:41:07 +02:00
8a1ef5c6cf Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 18:12:38 +02:00
da57dfed5b Eliminata disattivazione articoli disattivi nell'aggiornamento del listino di vendita in anagrafica 2025-09-19 18:12:33 +02:00
d60b57ff02 [CRM] Gestito in transferProspect la possibilità di passare il codAnag null
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 17:41:24 +02:00
9c85f5da3c Merge branch 'develop' into feature/MaxiDataV2
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 17:05:12 +02:00
8357a33df8 [MaxiData] Completata nuova importazione ordini produzione (To Be Tested)
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 17:00:59 +02:00
7a150516b4 aggiunto campo nella mtb_sgrp
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 13:20:56 +02:00
ddf518d11a Modificate funzioni per estrarre in numero documento del fornitore
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-19 10:46:59 +02:00
cf69cccbce Modificate funzioni per estrarre in numero documento del fornitore
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-19 10:30:05 +02:00
68c220b8a8 cancellata migration
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-19 10:01:24 +02:00
1b05d58049 aggiunta migrazione per la creazione delle funzioni f_getNumDoc4NumDocForn e getNumDoc4NumDocForn
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-19 10:00:34 +02:00
925e08ffc7 Modifica servizio orgcons DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 19:20:24 +02:00
90f86858e9 Modifica migratons DMS 2025-09-18 18:52:32 +02:00
6c1652e955 Modifica migratons DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 18:47:38 +02:00
af364d4220 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 17:45:02 +02:00
b97bd848a8 [WMS] Aggiunta migration che allinea alcune setup del WMS che potrebbero mancare su alcuni clienti 2025-09-18 17:44:55 +02:00
4dedea79cf aggiunta migrazione per la funzione ftx_calcCostoProd aggiunti nuovi campi per slim2k
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 17:37:32 +02:00
29963759f2 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 16:10:14 +02:00
70c1723c5d aggiunta migrazione per la funzione ftx_calcCostoProd aggiunti nuovi campi per slim2k 2025-09-18 16:09:59 +02:00
c0b67577a7 [MaxiData] Implementata prima parte di ImportProduzioni
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 10:39:11 +02:00
82a74cbf1c Modifica gernerazione report invio promozioni a negozio
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-18 10:16:46 +02:00
56fbc96d9a aggiunti gli sconti cliente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 18:27:24 +02:00
7d629b5753 aggiunto sconto cliente e il listino è agganciato ad un solo cliente
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 18:18:38 +02:00
56d7876eb5 [MaxiData] Primi check autorizzazioni 2025-09-17 17:06:29 +02:00
af0f1e14b0 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 16:56:50 +02:00
20c6adc41f Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 16:54:56 +02:00
cfe0ae52e8 aggiunte notifiche su attività T0003 2025-09-17 16:54:52 +02:00
49cbc45ac0 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 16:52:53 +02:00
8672c7df11 riempita tabella drl_tipi_report a biolevante 2025-09-17 16:52:41 +02:00
6177a4b3c4 Spostata voce menu tracciabilita pvm in magazzino
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 16:37:52 +02:00
50c57d1977 attivazione servizi rest su gestione automezzi e nuova gestione documenti di lavorazione su carelli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 16:09:15 +02:00
79355eab19 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 15:06:48 +02:00
d4f2032aa7 aggiunto controllo 2025-09-17 15:06:04 +02:00
d1a1aad1d8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 15:05:42 +02:00
d94f0f1a7e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 15:05:42 +02:00
7507ab834c [WMS] Aggiunto servizio di retrieve ultimi versamenti merce per vecchia gestione colli 2025-09-17 15:05:37 +02:00
a2c007119b Refactor Giacenza handling and add new endpoint for populating Giacenza table
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 14:48:45 +02:00
7e421762d7 aggiunta tabella carelli_giacenza_prog_bck
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 12:27:14 +02:00
a24e26b436 Creato menu tracciabilita su pvm, setup per report ed update viste
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 12:14:29 +02:00
1008229297 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 11:59:09 +02:00
cf492ee2a0 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 11:59:09 +02:00
dac93e9e30 Sistemata retrieve delle pvm info (era POST, convertita in GET) 2025-09-17 11:59:03 +02:00
aaac5bebb7 Merge branch 'develop' into feature/MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-17 09:03:39 +02:00
46002e7580 Update endpoint path for generaCorrispettivi in DocumentController
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 17:21:43 +02:00
5982c8e966 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 17:09:32 +02:00
6889372e40 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 17:09:31 +02:00
158ccaa3ce aggiunto depostio nella descrizione 2025-09-16 17:09:26 +02:00
a0014d5ccd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 16:47:04 +02:00
44091910ff Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 16:47:03 +02:00
b25dff5d48 Add rules to complete serDoc in CtbMovt and CtbMovr; create migration scripts 2025-09-16 16:46:52 +02:00
163613f836 Add rules to complete serDoc in CtbMovt and CtbMovr; create migration scripts
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 16:45:30 +02:00
b163c74771 Refactor generaCorrispettivi method to return a single ServiceRestResponse
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 12:23:29 +02:00
8068110cf3 Vario
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 10:19:57 +02:00
78f91d2cfe Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 10:01:38 +02:00
b39f07414b Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 10:01:37 +02:00
e3be231990 Cambiata lettura profileDb in RequestDataDTO 2025-09-16 10:00:40 +02:00
3ee2272886 Merge branch 'develop' into feature/MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 09:39:28 +02:00
6c58a19495 Aggiunti file in gitignore
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 09:39:05 +02:00
2d11f53330 Aggiunti file in gitignore
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-16 09:38:37 +02:00
ad7274fdbf Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 17:28:47 +02:00
fd2f4772ce Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-15 17:28:47 +02:00
2f649932b6 modifica json log 2025-09-15 17:28:41 +02:00
198e1d284b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:35:54 +02:00
5041244f63 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:35:53 +02:00
592c4f4b9a Add migration for function getNumDoc4NumDocForn 2025-09-15 16:35:39 +02:00
cb7a45d83e Aggiunte API MaxiData di produzione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:26:37 +02:00
6c95492412 Merge branch 'develop' into feature/MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:16:31 +02:00
e026f9a0ea Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:03:29 +02:00
17c5b96c98 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 16:03:28 +02:00
eddad11630 Fix payloadLength nel logger 2025-09-15 16:03:06 +02:00
0f65aaffab Add migration for function getNumDoc4NumDocForn
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-09-15 16:03:01 +02:00
8723751f78 Merge branch 'develop' into feature/MaxiDataV2
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 15:57:12 +02:00
24db8fbcec Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-15 15:56:17 +02:00
c687831f4f Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-09-15 15:56:16 +02:00
b878529840 Fix su lunghezza log 2025-09-15 15:56:11 +02:00
e6ee9c7090 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 15:46:10 +02:00
ab9672cae3 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 15:46:10 +02:00
3dc3aea47b Micro fix 2025-09-15 15:45:54 +02:00
c8fdf2634d Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-15 15:20:08 +02:00
295afc7acc Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 15:20:08 +02:00
450848b080 rivista query 2025-09-15 15:19:51 +02:00
d154ee9852 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 14:13:34 +02:00
ff2420c551 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 14:13:34 +02:00
096650b4f6 Commented out file import logic and set primary DB in transaction manager 2025-09-15 14:13:25 +02:00
b5a2d999e6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 13:51:54 +02:00
92bc126e24 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 13:51:54 +02:00
966f73aef3 correzione procedura di importazione accettazione 2025-09-15 13:51:45 +02:00
77ff799dba Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 12:56:28 +02:00
4804ec24c1 Finish FixAgribookFields
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 12:56:27 +02:00
b1c3935457 Fix uso MultiDBTransactionManager diretto per profiledb della richiesta 2025-09-15 12:56:20 +02:00
6301305b1a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 12:13:26 +02:00
5d0b300e2a Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 12:13:26 +02:00
eac86126c2 eliminta condizione 2025-09-15 12:10:47 +02:00
a3552e0926 [CARELLI] Creati servizi per pagina sul portale scheda viaggi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 11:30:14 +02:00
3bd6521967 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 10:41:31 +02:00
e189aa4f6c Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 10:41:31 +02:00
e318d8625b [biolevante]
- rimosso nome db in query update
2025-09-15 10:41:19 +02:00
0f91128b8e Aggiornato client MaxiData
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 10:36:55 +02:00
d5eb4c62f6 Merge branch 'develop' into feature/MaxiDataV2
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-15 10:04:46 +02:00
360fa9e59f Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 09:10:01 +02:00
a3df8d0822 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-15 09:10:01 +02:00
b902879a26 modifiche su slim 2025-09-15 09:09:54 +02:00
jenkins
e570b32e05 Merge branch 'develop'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-14 07:41:37 +02:00
c2612e40b4 [BIOLEVANTE - SERBATOI]
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
- nuova tabella gestione caratteristiche macchinari
2025-09-12 18:36:31 +02:00
c9ee41a1b1 Aggiornato client MaxiData
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 18:23:20 +02:00
cc8b20d065 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 17:48:08 +02:00
6cade2576e [CRM] Modificata query per chiusura pratica 2025-09-12 17:48:02 +02:00
a64e219632 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 17:26:44 +02:00
3884a6736f sistemate personalizzate report d_cscadfor_nobanca_rep 2025-09-12 17:26:35 +02:00
03664cd9a5 Aggiunti equals in SettingsModel in modo da evitare refresh inutili nel caso i dati non siano cambiati
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 15:44:30 +02:00
ee48302a0b Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 13:17:54 +02:00
9d724911ad riempita tabella drl_tipi_report a rossogargano 2025-09-12 13:17:19 +02:00
3fcd649cce Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 12:53:07 +02:00
3a05e2c10d Merge branch 'hotfix/Hotfix-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 12:53:07 +02:00
e02fe6c36c [CONNECTIONS]
- aggiunto destroy delle connessioni prima della reinizalizzazione post modifiche ad ems-settings
    - aggiunta eccezzione in getConnection se la connessione stabilita ha un db diverso da quello richiesto
2025-09-12 12:52:55 +02:00
eaf10604ef Merge branch 'develop' into feature/MaxiDataV2 2025-09-12 10:57:33 +02:00
26ca33258c Fix logger
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 10:57:11 +02:00
4a0382cafc Merge branch 'develop' into feature/MaxiDataV2
# Conflicts:
#	.idea/copilot.data.migration.agent.xml
2025-09-12 10:52:53 +02:00
450252ff24 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 09:39:47 +02:00
f399b1a4cf Modifica procedura chiusura commessa Maggio 2025-09-12 09:39:31 +02:00
aaed6e7e0a Cambiato log delle richieste
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-12 09:25:47 +02:00
9ef98b50e3 Modifica procedura chiusura commessa Maggio
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 19:17:05 +02:00
52b712ce32 Rimosse classi ed import/export di Amazon e SocialWare
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 16:47:33 +02:00
cd00a16aa3 Rimosse classi e servizi obsoleti che utilizzavano DataSource in maniera diretta.
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-11 15:44:08 +02:00
80429f1700 Creato metodo mapHashMapToCSV.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
Fix loading iniziale SettingsModel.
2025-09-11 15:15:24 +02:00
73d80ef2bc Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 15:13:16 +02:00
36a66ee50d [CRM] Implementate e migliorate logiche per le notifiche 2025-09-11 15:13:08 +02:00
4a954c5870 aggiunta data ispezione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 15:04:24 +02:00
9e4f099515 Fix return compileWordFile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 14:30:45 +02:00
bb21bc678e [Biolevante] fix creazione dataSheet: Cast string variabili e gestiti errori download minio
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-11 13:42:58 +02:00
8e3a4afb5b Esportazione report fatturato agente/clienti in Excel
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 11:36:13 +02:00
55975c45c9 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 11:33:14 +02:00
52adf80a2e Aggiunto bottone di esportazione in Excel 2025-09-11 11:33:06 +02:00
bc349742ef Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts:
#	ems-engine/src/main/webapp/index.html
2025-09-11 10:28:13 +02:00
9fdc1f6b0e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-11 10:27:09 +02:00
5cfff0e143 Modifiche multidbtransaction manager.
Fix WebUI.
2025-09-11 10:27:04 +02:00
bfce428f2c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 17:40:42 +02:00
1e8745fc31 Modifica servizio orgcons DMS 2025-09-10 17:40:24 +02:00
39ffb2ea49 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 17:27:17 +02:00
69cb18762a Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 17:27:16 +02:00
1ba5e25eba modificata condizione su date per estrazione ultima partia acquistata 2025-09-10 17:27:09 +02:00
fe6343f4e4 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-10 17:01:42 +02:00
772242fcae Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 17:01:41 +02:00
777c3e7aac profile 2025-09-10 17:01:31 +02:00
e799d0e577 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 15:54:58 +02:00
c3e8ccf0c2 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 15:54:57 +02:00
ce198e1da9 Finish Hotfix-100 2025-09-10 15:43:27 +02:00
17b821157e Personalizzato report D_TORIEPORDINI_COMP_REP per Two B.
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-10 15:25:08 +02:00
32c7424c89 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 15:17:33 +02:00
df4e76f05e Personalizzato report D_TORIEPORDINI_COMP_REP per Two B. 2025-09-10 15:17:25 +02:00
cce5fa85d3 Fix maxlength su porto non più effettuato
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 15:14:38 +02:00
f13b021fcd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 13:21:17 +02:00
49499c1b91 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 13:21:16 +02:00
ea62524763 aggiunti log 2025-09-10 13:21:10 +02:00
0b0942b995 Autogenerato client maxidata utilizzando openapi-generator 2025-09-10 12:09:03 +02:00
b530ec1821 Aggiunti campi nuovi in contratti di vendita
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 11:09:12 +02:00
bc502cbf74 creato report Schede movimentazioni articoli partita personalizzato per rossogargano
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 10:21:34 +02:00
811b686f17 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 10:05:17 +02:00
4fd2d5494e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 10:05:16 +02:00
f857b2ed95 Migliorie DataSource 2025-09-10 10:04:53 +02:00
3a64d116e6 aggiunta setup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-10 09:11:16 +02:00
b44f2bb2f9 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 17:05:42 +02:00
39d63497bb Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 17:05:41 +02:00
b2250bf3cf Fix check distributore null 2025-09-09 17:05:36 +02:00
54517ba92e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 16:51:17 +02:00
3ae1d3cefe Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 16:51:16 +02:00
a3eade290e Fix su sincronizzazioni 2025-09-09 16:51:08 +02:00
d6ac2f00b6 Creato servizio downloadFileFromRefUuid
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 15:57:47 +02:00
63727411c4 [CRM] Modificati servizi di retrieve 2025-09-09 15:57:25 +02:00
4100c9cc03 Aggiunti file mancanti webapp
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 12:18:03 +02:00
f58282e73b Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 10:27:53 +02:00
566f748fb3 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 10:17:00 +02:00
4630a53881 Modifiche migrations DMS 2025-09-09 10:16:56 +02:00
6fca8f90e6 Migliorato controllo di abilitazione dei contratti di acquisto/vendita 2025-09-09 10:11:23 +02:00
9700db0dbc Cambiato messaggio di compilazione riuscita su webhook MS Teams
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-09 09:29:42 +02:00
1fb09d1a41 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 22:32:44 +02:00
da8bc54f90 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 22:32:44 +02:00
4b823e3b82 Tolto valore assoluto su query di costi (dare - avere) e ricavi (Avere - dare) sulla ctb_movr_coan
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 16:02:08 +02:00
726aa7f080 rimossa eccezione in caso di errore e aggiunto commit per gestione transazioni 2025-09-08 15:56:03 +02:00
14062da824 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 15:31:01 +02:00
4bdf4ab779 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 15:31:00 +02:00
d454b4b8b1 sistemata wherecond tipo doc 2025-09-08 15:29:40 +02:00
b4e22ca7a4 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 15:09:27 +02:00
e7abca0cc0 Aggiunto codice SDI nella tabella azienda 2025-09-08 15:09:18 +02:00
6ad433488e Rimossa dichiarazione setupGest da alcune regole
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 13:10:35 +02:00
1c63622538 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 11:43:22 +02:00
55f05f0541 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 11:43:22 +02:00
192a45786d Rimossa validation query su datasource 2025-09-08 11:43:16 +02:00
79f3105797 modificata gestione della data di ricezione allegati per utilizzare LocalDateTime 2025-09-08 11:43:01 +02:00
70e5dad7c1 modificata gestione della data di ricezione allegati per utilizzare LocalDateTime
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-08 11:41:57 +02:00
63b46cd93f aggiunto controlo per textiles
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-06 07:39:32 +02:00
7872a82cc1 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 21:46:51 +02:00
05ea13b155 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 21:46:50 +02:00
bcc00e39da aggiunta commit 2025-09-05 21:46:43 +02:00
5d3a79827c sistemata syncronizzazione, migration per ftx_getDisponibilitaArticoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 17:54:23 +02:00
6f04ea323c creato report "Scadenze Fornitori" personalizzato per gramm
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 10:57:51 +02:00
eb7c41841b Fix su regola che completa dataIns nelle VtbOfft
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 10:45:20 +02:00
bbfcbeb906 aggiunti campi su contratti v
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-05 10:23:05 +02:00
36c0e3c9d1 rinominato servizio
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 10:19:57 +02:00
e3f2eab10b Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-05 09:30:59 +02:00
b81c7febbe inseriti nuovi campi nella vista w_tracciabUDCProd 2025-09-05 09:30:47 +02:00
97c7ac188c Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 09:30:12 +02:00
4d7a856ffb Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-05 09:30:12 +02:00
94add3ecde Ulteriori fix su Datasource 2025-09-05 09:30:05 +02:00
89ba0a60bf Modifiche migrations DMS
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 18:10:57 +02:00
be1480e2f0 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 18:07:07 +02:00
5e4ec2c630 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 18:07:06 +02:00
1a76055a09 Fix su connessioni del Connection Pool 2025-09-04 18:07:01 +02:00
2b4e97d90d Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 16:11:31 +02:00
dfae26c49e Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 16:11:31 +02:00
d78010662a Fix su serializzazione JSON in callInternalExport 2025-09-04 16:11:10 +02:00
79df2c503f aggiunto tipo documento
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 16:11:04 +02:00
a42736bf91 preso cod_prod e descrizione_prod dalla testata dell ordine nella vista w_tracciabUDCProd
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 15:37:31 +02:00
e53bd108ba Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 14:40:00 +02:00
e9f47d4651 inserito progressivo_ul nella vista w_tracciabUDCProd 2025-09-04 14:39:51 +02:00
951f220626 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 13:28:24 +02:00
3106ce46d9 Sistemato problema aggiornamento progressivi ordini 2025-09-04 13:28:16 +02:00
f8f22ee3b3 Fix su pannello WEB
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 13:07:42 +02:00
79576c06f7 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 13:02:41 +02:00
7058231691 modificate viste vw_tracciabUDCVend e w_tracciabUDCProd 2025-09-04 13:02:32 +02:00
6f876edfa8 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 12:48:36 +02:00
6b2ca47a8a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 12:48:36 +02:00
92f5f7b290 sistemata espotazione excel 2025-09-04 12:48:27 +02:00
a6103e037d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-04 08:42:35 +02:00
b6299d6dd1 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-04 08:42:35 +02:00
9f76fcfc72 Rimossi comandi aggiuntivi nel DataSource 2025-09-04 08:42:30 +02:00
08b5d93be3 Fix su connessioni nelle Sync
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 16:40:02 +02:00
77a1a965ca Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 16:39:42 +02:00
a4d78c740d Merge branch 'master' into develop
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-09-03 16:39:42 +02:00
65fb43f87a Fix su connessioni nelle Sync 2025-09-03 16:39:31 +02:00
9f27301e8b Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts:
#	ems-core/src/main/java/it/integry/ems/sync/SyncManager.java
2025-09-03 16:34:44 +02:00
ce583d2500 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-03 16:33:50 +02:00
8c4430d68a Fix su connessioni nelle Sync 2025-09-03 16:33:39 +02:00
65c26a1f91 aggiunta notifica t0003
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 14:42:33 +02:00
653f3a023a export zucchetti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 13:05:17 +02:00
3c241ea168 export zucchetti 2025-09-03 13:05:04 +02:00
4f88d08a39 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 12:36:28 +02:00
1bcffcc36a modificati alias campi viste per report tracciabilità Rossogargano 2025-09-03 12:36:18 +02:00
6eeb10868d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 12:33:57 +02:00
4b1af00c23 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 12:33:56 +02:00
fd4d79c3be Rimosso limite di max prepared statement 2025-09-03 12:33:15 +02:00
4d4ca3917f Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 12:17:36 +02:00
f5f86985c9 create viste per report tracciabilità Rossogargano 2025-09-03 12:17:30 +02:00
e2f5b5b0a1 Fix check certificato durante l'aggiornamento dei comuni
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-03 10:47:32 +02:00
00405d67bb creato report "Riepilogo Documenti di vendita" personalizzato per rossogargano
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 17:20:24 +02:00
b3475b9fcb Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 12:26:50 +02:00
6fc946d817 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 12:26:50 +02:00
7893e6d808 modifiche per task 2025-09-02 12:26:31 +02:00
a205f222b0 modifiche per task 2025-09-02 11:09:48 +02:00
e99bf3403b Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 10:18:43 +02:00
124a4fe04c elinitato errore se la lista delle migration è vuota 2025-09-02 10:18:23 +02:00
3a18dd2c71 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 09:52:08 +02:00
6e7167f0f2 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 09:52:07 +02:00
2188fa86a5 Fix su numero connessioni DataSource 2025-09-02 09:51:57 +02:00
e41883bd73 Fix su numero connessioni DataSource
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-09-02 09:50:10 +02:00
eddaadc3ba Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-02 09:44:36 +02:00
7c08f0ed48 Aggiornata email di errore delle importazioni delle fatture passive (aggiornamento dei riferimenti non committati precedentemente) 2025-09-02 09:44:29 +02:00
77c8896de5 Aggiornamnto funzione esterna
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-02 09:41:37 +02:00
b078028c24 Aggiornata email di errore delle importazioni delle fatture passive
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-09-02 09:36:20 +02:00
b40e26fc5e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-01 15:55:36 +02:00
5a2f5328b4 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-09-01 15:55:36 +02:00
33dc3129b3 modificato controllo su email controllo autofattura e pianificazione attività 2025-09-01 15:55:16 +02:00
0dc6e9555f Fix importazione ACK
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-29 19:32:25 +02:00
6df7c809a2 Fix email in printDocument
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-08-29 19:32:05 +02:00
8c451e3996 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-29 19:29:31 +02:00
468a453b94 Fix servizi crm 2025-08-29 19:29:23 +02:00
6f52677301 Aggiornamenti pagina ems-api
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-29 19:04:11 +02:00
63a891d061 nuova procedura di importazione scontrini
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-08-29 11:34:31 +02:00
15b80239d1 Creato metodo per annullare ordine di lavorazione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-28 11:49:47 +02:00
044540ff10 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-27 16:57:56 +02:00
90f3a636db modifiche per importazione ordini web ed elimiazione trigger ordl
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-27 16:57:45 +02:00
592d8726d2 Aumentato max total in DataSource in debug
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-27 15:08:53 +02:00
048c639e72 Merge branch 'develop' into feature/Feature-revisione_ordiniWeb
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 13:15:54 +02:00
1111093b38 modificato date con LocalDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 13:15:45 +02:00
87461ce43a migration per sistemare ftx_getDisponibilitaArticoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 13:15:13 +02:00
247ecb69a3 Gestita cancellazione della partita se non in uso per ordini lav e acq
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 11:55:40 +02:00
b414942de9 Sistemata esportazione lotti per gastronomia
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 10:44:11 +02:00
5b1b5c5cde merge
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-26 10:09:18 +02:00
b9a53ec7a2 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-25 18:15:53 +02:00
f1f779b436 migration smetar e correzioni per distinta incassi 2025-08-25 18:14:23 +02:00
06e9bb1c51 Corretto javadoc DataSource e gestita possibilità di tornare un valore fisso in isDebugExecution
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-25 18:04:18 +02:00
833d87f08d modificata vsvw_vendita per smetar
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-25 16:22:01 +02:00
3627c38df6 Gestita cancellazione della partita se non in uso per ordini lav e acq
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-25 10:19:48 +02:00
e5c64dc0fd Fix su lettura setup se stringa vuota e throw diretto exception in importOrdini 2025-08-25 10:17:30 +02:00
4ca6e3e5e9 Fix naming in conflitto
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-22 18:55:24 +02:00
ab0b17470e Aggiornata pagina EMS-API (Buon rientro dalle ferie 😉🎉)
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-08-22 18:49:07 +02:00
70e8857031 [SALESBOOK] Creato servizio per recuperare lo stato di avanzamento di una commessa
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-08-22 18:42:21 +02:00
db2b8214a4 Rimosso codice inutile in getSetupList, ignorato getConfigurationFile in SettingsModel
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-22 10:41:44 +02:00
bfd102a4a2 Fix parametri DataSource in Debug
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-21 15:54:14 +02:00
59780fef0c Merge branch 'feature/Feature-1' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-19 11:19:10 +02:00
aea6d9dc68 [MES]
- aggiunta possibilità di definire il report ordine lavorazione per linea prod
2025-08-19 11:19:02 +02:00
1454144502 [MES]
- aggiunta possibilità di definire il report ordine lavorazione per linea prod
2025-08-19 11:19:02 +02:00
ac997e5e52 Fix parametri DataSource in Debug
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-19 10:22:02 +02:00
2831f675f2 Tuning su DataSource
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-19 10:20:57 +02:00
214c6f6bf1 Migliorato BasicConnectionPool
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-19 09:45:06 +02:00
2d109a57e6 Cambiato caricamento iniziale del SettingsModel e di BasicConnectionPool
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-18 15:25:45 +02:00
c9b98963ae Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-12 17:46:47 +02:00
945aeab210 Aggiunta procedura di importazione Sonoco 2025-08-12 17:46:40 +02:00
956acd02ad inserite get e set della entity child drlTipiReport
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-12 15:22:30 +02:00
ff84144dbf Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-11 12:56:34 +02:00
cfc60bb78d Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-11 12:56:34 +02:00
371ba4848c Mmodifica data validita griglia 2025-08-11 12:56:07 +02:00
1963825bf5 inseriti valori di default
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-11 10:47:11 +02:00
7421ebeea9 cancellata tabella drl_tipi_mod_stampa e creata nuova tabella di relazione drl_tipi_report tra le tabelle dtb_tipi e wtb_jrept
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-11 10:44:13 +02:00
d94bd75770 revisione importazione ordini web
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-07-29 18:23:31 +02:00
32c38b85aa revisione importazione ordini web
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-07-29 15:24:50 +02:00
c7a96834a2 revisione procedura di importazione ordini web
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-07-28 17:54:36 +02:00
1334 changed files with 70314 additions and 77358 deletions

2
.gitignore vendored
View File

@@ -122,3 +122,5 @@ fabric.properties
/temp
/docker/tomcat/conf/integry/logs.db
/docker/tomcat/conf/integry/logs.db-journal
copilot.*.xml
/.idea/dataSources.xml

6
.idea/copilot.data.migration.edit.xml generated Normal file
View File

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

18
.idea/copilotDiffState.xml generated Normal file

File diff suppressed because one or more lines are too long

33
.idea/dataSources.xml generated
View File

@@ -1,11 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@SERVERDB2019" uuid="ff4f0bad-7271-429e-a4e1-bae28629efc8">
<data-source source="LOCAL" name="Biolevante@SERVERDB2019" uuid="ff4f0bad-7271-429e-a4e1-bae28629efc8">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB2019</jdbc-url>
<jdbc-url>jdbc:sqlserver://SERVERDB2019\MSSQLSERVER;database=Biolevante</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="Gramm@SERVERDB2019" uuid="02282d62-6d2a-4b83-bdcf-b558fa6db140">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB2019\MSSQLSERVER;database=Gramm</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="vgalimenti@SERVERDB" uuid="eaf0bcaf-4620-478b-b63c-42e77902813f">
<driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver>
<jdbc-url>jdbc:sqlserver://SERVERDB\MSSQLSERVER;database=vgalimenti</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>

8
.idea/data_source_mapping.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourcePerFileMappings">
<file url="file://$PROJECT_DIR$/.idea/queries/Query.sql" value="ff4f0bad-7271-429e-a4e1-bae28629efc8" />
<file url="file://$PROJECT_DIR$/.idea/queries/Query_1.sql" value="02282d62-6d2a-4b83-bdcf-b558fa6db140" />
<file url="file://$PROJECT_DIR$/.idea/queries/Query_2.sql" value="eaf0bcaf-4620-478b-b63c-42e77902813f" />
</component>
</project>

6
.idea/db-forest-config.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="db-tree-configuration">
<option name="data" value="----------------------------------------&#10;1:0:ff4f0bad-7271-429e-a4e1-bae28629efc8&#10;2:0:02282d62-6d2a-4b83-bdcf-b558fa6db140&#10;3:0:eaf0bcaf-4620-478b-b63c-42e77902813f&#10;" />
</component>
</project>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="LocalDate Checks" />
<version value="1.0" />
</settings>
</component>

View File

@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="central" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />

View File

@@ -2,7 +2,6 @@
<configuration default="false" name="MenuStaticCreator" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="it.integry.ems.menu.MenuStaticCreator" />
<module name="ems-core" />
<shortenClasspath name="MANIFEST" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="it.integry.ems.menu.*" />

View File

@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat 9 (RistoCash)" type="Remote">
<configuration default="false" name="Tomcat 9 (AnydeskTunnel)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="127.0.0.1" />
<option name="HOST" value="localhost" />
<option name="PORT" value="8001" />
<option name="AUTO_RESTART" value="false" />
<RunnerSettings RunnerId="Debug">

View File

@@ -1,16 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat (AnydeskTunnel)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="servertomcat" />
<option name="PORT" value="8001" />
<option name="AUTO_RESTART" value="false" />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="8001" />
<option name="LOCAL" value="false" />
</RunnerSettings>
<method v="2" />
</configuration>
</component>

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

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/.idea/queries/Query_2.sql" dialect="TSQL" />
</component>
</project>

30
.idea/structuralSearch.xml generated Normal file
View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="StructuralSearch">
<searchConfiguration name="LocalDate passato a SimpleDateFormat" text="$formatter$.format($date$)" recursive="true" caseInsensitive="true" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="formatter" nameOfExprType="java\.text\.SimpleDateFormat" within="" contains="" />
<constraint name="date" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDate equals java.util.Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="java.util.Date equals LocalDate inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="java.util.Date equals LocalDateTime inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDateTime equals java.util.Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
</component>
</project>

View File

@@ -1,11 +1,45 @@
FROM tomcat:9-jre8-alpine
RUN apk add --no-cache fontconfig ttf-dejavu
FROM tomcat:9-jre8
ENV TZ="Europe/Rome"
ENV JAVA_OPTS="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512M -Xmx1G -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
ENV JAVA_OPTS="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512M -Xmx2G -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
ENV USERDOMAIN="STUDIO-ML"
# Install Samba
RUN apt-get update && \
apt-get install -y samba samba-common-bin && \
rm -rf /var/lib/apt/lists/*
# Ensure log directory exists and is readable
RUN mkdir -p /usr/local/tomcat/logs && \
chmod -R 755 /usr/local/tomcat/logs
# Create samba user (no login) and add to root group
RUN useradd -M -s /usr/sbin/nologin sambauser && \
printf "sambapass\nsambapass\n" | smbpasswd -a -s sambauser && \
usermod -aG root sambauser
# Samba configuration
RUN printf "\
[global]\n\
workgroup = STUDIO-ML\n\
security = user\n\
map to guest = never\n\
server role = standalone server\n\
unix extensions = no\n\
client min protocol = NT1\n\
\n\
[tomcat-logs]\n\
comment = Tomcat logs (read-only)\n\
path = /usr/local/tomcat/logs\n\
browseable = yes\n\
read only = yes\n\
guest ok = no\n\
valid users = sambauser\n\
force user = root\n\
create mask = 0644\n\
directory mask = 0755\n\
" > /etc/samba/smb.conf
COPY docker/tomcat/conf/integry/ems.properties /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_automated_operations.json /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_settings.json /usr/local/tomcat/conf/integry/

View File

@@ -42,7 +42,7 @@ pipeline {
bat(script: 'mvn clean install -t toolchains-jenkins.xml', returnStdout: true)
archiveArtifacts(artifacts: 'ems-engine/target/ems-api.war', onlyIfSuccessful: true)
}
stash includes: 'ems-engine/target/ems-api.war,docker/**,Dockerfile', name: 'docker-files'
stash includes: 'ems-engine/target/ems-api.war,docker/**,Dockerfile', name: 'container-files'
}
}
@@ -118,7 +118,7 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
steps {
node('server-build') {
echo "Building Docker image"
unstash 'docker-files'
unstash 'container-files'
script {
def branchVersion = ""
@@ -127,7 +127,9 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
branchVersion = "-${env.GIT_BRANCH.toLowerCase().replace('/', '-')}"
}
bat "docker buildx build --platform linux/amd64,linux/arm64 --push -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
// bat "docker buildx build --platform linux/amd64,linux/arm64 --push -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
bat "podman build -t \"git.studioml.it/integry/ems-api${branchVersion}:latest\" ."
bat "podman push \"git.studioml.it/integry/ems-api${branchVersion}:latest\""
//containerImageLink "git.studioml.it/integry/ems-api-${env.GIT_BRANCH.toLowerCase().replace('/', '-')}:latest}"
}
@@ -186,14 +188,14 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
success {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "develop") {
office365ConnectorSend adaptiveCards: true, color: '#008000', message: 'EMS-API &grave; stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
office365ConnectorSend adaptiveCards: true, color: '#008000', message: 'EMS-API è stato compilato con successo', status: 'SUCCESS', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
}
}
}
unstable {
script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "develop") {
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: 'EMS-API &grave; INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
office365ConnectorSend adaptiveCards: true, color: '#FFDE21', message: 'EMS-API è INSTABILE', status: 'UNSTABLE', webhookUrl: 'https://prod-197.westeurope.logic.azure.com:443/workflows/69a7b8ee3c284175bd6da7127c7eb3cf/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_-eMfvsQGkIidHWzzlhGFgiZG28ujHZ41QqzuqD9YGw'
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -229,6 +229,11 @@
<artifactId>arial-rounded</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>it.integry.font</groupId>
<artifactId>NotoSerif</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.groovy</groupId>
@@ -363,6 +368,11 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.20</version> <!-- Versione scritta a mano perché qui non hanno usato lo 0 finale -->
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
@@ -394,6 +404,17 @@
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.7.18</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.15.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>

View File

@@ -768,7 +768,7 @@ public class WooCommerceService {
private void sendErrorMail(String errorMsg, String service, byte[] content, String filename, List<AnomalieDTO> anomalie) {
try {
mailService.sendErrorMailByGestNameSection(multiDBTransactionManager, service, "WOOCOMMERCE", "Errore WooCommerce",
mailService.sendErrorMailByGestNameSection(multiDBTransactionManager.getPrimaryConnection(), service, "WOOCOMMERCE", "Errore WooCommerce",
null, content, filename, anomalie);
} catch (Exception exception) {
logger.error(service, exception);

View File

@@ -0,0 +1,14 @@
package it.integry.annotations;
import it.integry.ems.migration._base.IntegryCustomer;
import org.springframework.stereotype.Indexed;
import java.lang.annotation.*;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface CustomerComponent {
IntegryCustomer value();
}

View File

@@ -0,0 +1,17 @@
package it.integry.annotations;
import it.integry.ems.migration._base.IntegryCustomer;
import org.springframework.core.annotation.AliasFor;
import java.lang.annotation.*;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@CustomerComponent(IntegryCustomer.Integry) // Valore di default, verrà sovrascritto
public @interface CustomerService {
@AliasFor(
annotation = CustomerComponent.class
)
IntegryCustomer value();
}

View File

@@ -11,6 +11,7 @@ public class CommonConstants {
public static final String INTEGRY = "integry";
public static final String PROFILE_DB = "profileDb";
public static final String COD_MDEP = "codMdep";
public static final String WHERE_COND = "whereCond";
public static final String EMPTY_STRING = "";
@@ -20,6 +21,7 @@ public class CommonConstants {
public static final String TIMESTAMP = "timestamp";
public static final String DATE_FORMAT_YMD_SLASHED = "yyyy/MM/dd";
public static final String DATE_FORMAT_YMD = "yyyy-MM-dd";
public static final String DATE_FORMAT_DMY = "dd/MM/yyyy";
public static final String DATE_FORMAT_DMY_DASHED = "dd-MM-yyyy";
@@ -27,7 +29,7 @@ public class CommonConstants {
public static final String TIME_FORMAT = "HH:mm:ss";
public static final String DATETIME_FORMAT_YMD = String.format("%s %s", DATE_FORMAT_YMD, TIME_FORMAT);
public static final String DATETIME_FORMAT_YMD = String.format("%s %s", DATE_FORMAT_YMD_SLASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY = String.format("%s %s", DATE_FORMAT_DMY_DASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY_SLASHED = String.format("%s %s", DATE_FORMAT_DMY, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY_DASHED = String.format("%s %s", DATE_FORMAT_DMY_DASHED, TIME_FORMAT);
@@ -46,6 +48,10 @@ public class CommonConstants {
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_YMD_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD_SLASHED)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_YMD_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_YMD)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_YMD)
@@ -53,6 +59,8 @@ public class CommonConstants {
public static final DateTimeFormatter DATE_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_DMY_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY_DASHED)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_DMY_SLASHED)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_DMY_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_DMY_DASHED)

View File

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.JsonObjectMapperConfig;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
@@ -24,6 +25,7 @@ public abstract class BaseEntityImporter<T> implements IEntityImporter<T> {
protected String format;
protected boolean headless;
protected ImportRequestDTO requestDto;
protected RequestDataDTO requestDataDTO;
protected MultiDBTransactionManager multiDBTransactionManager;
protected List<AnomalieDTO> anomalie = new ArrayList<AnomalieDTO>();
@@ -77,6 +79,12 @@ public abstract class BaseEntityImporter<T> implements IEntityImporter<T> {
return this;
}
@Override
public IEntityImporter<T> setRequestDataDTO(RequestDataDTO requestDataDTO) {
this.requestDataDTO = requestDataDTO;
return this;
}
public List<AnomalieDTO> getAnomalie() {
return anomalie;
}
@@ -100,4 +108,6 @@ public abstract class BaseEntityImporter<T> implements IEntityImporter<T> {
}
}

View File

@@ -2,6 +2,7 @@ package it.integry.ems.Import.base;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.service.SetupGest;
@@ -26,10 +27,14 @@ public interface IEntityImporter<T> {
IEntityImporter<T> setRequestDTO(ImportRequestDTO requestDto);
IEntityImporter<T> setRequestDataDTO(RequestDataDTO requestDataDTO);
List<AnomalieDTO> getAnomalie();
T doImport() throws Exception;
String renameFile(String orginalFileName, List<EntityBase> entities) throws Exception;
}

View File

@@ -3,7 +3,7 @@ package it.integry.ems._context;
import it.integry.annotations.PostContextConstruct;
import it.integry.common.var.EmsDBConst;
import it.integry.ems.expansion.RunnableArgsThrowable;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool;
@@ -13,7 +13,6 @@ import it.integry.ems.task.TaskExecutorService;
import it.integry.ems.user.service.UserCacheService;
import it.integry.ems_model.entity.Azienda;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -56,6 +55,8 @@ public class EmsCoreDBLoader {
public void init() throws Exception {
this.settingsController.addOnConfigUpdated(() -> {
try {
connectionPool.destroy();
connectionPool.init();
load(null);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -64,13 +65,10 @@ public class EmsCoreDBLoader {
}
public void load(final RunnableArgsThrowable<MultiDBTransactionManager> onComplete) throws Exception {
connectionPool.init();
taskExecutorService.executeTask(() -> {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionPool)){
discoverAllConnections(multiDBTransactionManager);
setupAzienda(multiDBTransactionManager);
userCacheService.discoverAllUsers(multiDBTransactionManager);
if (onComplete != null) onComplete.run(multiDBTransactionManager);
} catch (Exception ex) {
@@ -84,18 +82,13 @@ public class EmsCoreDBLoader {
private void discoverAllConnections(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
ArrayList<Callable<Void>> futureTasks = new ArrayList<>();
for (AvailableConnectionsModel model : settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true)) {
for (AvailableConnectionModel model : settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true)) {
AtomicReference<AvailableConnectionsModel> modelAtomicReference = new AtomicReference<>(model);
AtomicReference<AvailableConnectionModel> modelAtomicReference = new AtomicReference<>(model);
futureTasks.add(() -> {
try {
Connection connection = connectionPool.getConnection(modelAtomicReference.get());
String sql = "SELECT db_distributore FROM azienda";
String dbDistributore = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
multiDBTransactionManager.addConnection(connection, modelAtomicReference.get().getDbName().equalsIgnoreCase(dbDistributore));
multiDBTransactionManager.addConnection(modelAtomicReference.get());
return null;
} catch (Exception ex) {
throw new Exception("[" + modelAtomicReference.get().getProfileName() + "] " + ex.getMessage(), ex.getCause());

View File

@@ -0,0 +1,27 @@
package it.integry.ems.adapter;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityString;
import java.io.IOException;
public class LongDeserializer extends JsonDeserializer<Long> {
@Override
public Long deserialize(JsonParser parser, DeserializationContext context)
throws IOException {
String string = parser.getText();
if (!UtilityString.isNullOrEmpty(string)) {
if (string.equalsIgnoreCase("null")) {
return EmsRestConstants.LONG_NULL;
}
return new Long(string);
} else
return null;
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.ems.adapter;
import it.integry.ems_model.utility.UtilityString;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class XmlLocalDateAdapter extends XmlAdapter<String, LocalDate> {
private DateTimeFormatter sdf;
public XmlLocalDateAdapter() {
sdf = DateTimeFormatter.ofPattern("dd-MM-yyyy");
}
public XmlLocalDateAdapter(String format) {
sdf = DateTimeFormatter.ofPattern(format);
}
@Override
public String marshal(LocalDate arg0) throws Exception {
return arg0.format(sdf);
}
@Override
public LocalDate unmarshal(String arg0) throws Exception {
String format = UtilityString.determineDateFormat(arg0);
if (format != null && !"dd-MM-yyyy".equals(format))
sdf = DateTimeFormatter.ofPattern(format);
return LocalDate.parse(arg0,sdf);
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.ems.adapter;
import it.integry.ems_model.utility.UtilityString;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class XmlLocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
private DateTimeFormatter sdf;
public XmlLocalDateTimeAdapter() {
sdf = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
}
public XmlLocalDateTimeAdapter(String format) {
sdf = DateTimeFormatter.ofPattern(format);
}
@Override
public String marshal(LocalDateTime arg0) throws Exception {
return arg0.format(sdf);
}
@Override
public LocalDateTime unmarshal(String arg0) throws Exception {
String format = UtilityString.determineDateFormat(arg0);
if (format != null && !"dd-MM-yyyy HH:mm:ss".equals(format))
sdf = DateTimeFormatter.ofPattern(format);
return LocalDateTime.parse(arg0,sdf);
}
}

View File

@@ -1,269 +0,0 @@
package it.integry.ems.anonymizer;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
/**
* Generatore di nomi e cognomi italiani per l'anonimizzazione dei dati.
* Mantiene la coerenza del sesso tra nome e genere.
*/
public class ItalianNameGenerator {
private final Random random;
// Nomi maschili italiani (200+ nomi)
public static final List<String> MALE_NAMES = Arrays.asList(
"Alessandro", "Andrea", "Antonio", "Francesco", "Marco", "Matteo", "Giuseppe", "Luca",
"Giovanni", "Roberto", "Stefano", "Paolo", "Davide", "Michele", "Simone", "Federico",
"Riccardo", "Fabio", "Daniele", "Massimo", "Claudio", "Nicola", "Gabriele", "Vincenzo",
"Lorenzo", "Salvatore", "Emanuele", "Alberto", "Diego", "Tommaso", "Alessio", "Filippo",
"Giorgio", "Mattia", "Franco", "Bruno", "Enrico", "Mario", "Carlo", "Gianluca",
"Cristian", "Domenico", "Raffaele", "Sergio", "Pasquale", "Gianni", "Carmine", "Gennaro",
"Antonino", "Gaetano", "Rocco", "Mauro", "Pierluigi", "Valerio", "Mirko", "Dario",
"Enzo", "Alfredo", "Renzo", "Giancarlo", "Giampaolo", "Pierpaolo", "Gianfranco", "Guido",
"Nino", "Piero", "Armando", "Luciano", "Renato", "Angelo", "Aldo", "Giulio",
"Marcello", "Rodolfo", "Umberto", "Silvano", "Ivano", "Giampiero", "Silvio", "Maurizio",
"Leonardo", "Adriano", "Ferdinando", "Bernardo", "Teodoro", "Edoardo", "Arturo", "Gino",
"Biagio", "Fabrizio", "Fausto", "Ettore", "Cesare", "Elio", "Amerigo", "Italo",
"Orlando", "Romeo", "Sandro", "Tiziano", "Ignazio", "Ciro", "Loris", "Orazio",
"Lino", "Nello", "Rino", "Primo", "Secondo", "Terzo", "Quarto", "Quinto",
"Sesto", "Settimo", "Ottavio", "Nono", "Decimo", "Benito", "Dante", "Virgilio",
"Omero", "Eugenio", "Aurelio", "Valentino", "Corrado", "Manlio", "Emilio", "Tullio",
"Attilio", "Marcello", "Romolo", "Remo", "Amedeo", "Cosimo", "Damiano", "Sebastiano",
"Cristoforo", "Bartolomeo", "Giacomo", "Simone", "Pietro", "Girolamo", "Leopoldo", "Gaspare",
"Melchiorre", "Baldassarre", "Epifanio", "Gerardo", "Ruggero", "Tancredi", "Arnaldo", "Osvaldo",
"Rinaldo", "Romualdo", "Ubaldo", "Raimondo", "Edmondo", "Redento", "Crescenzo", "Innocenzo",
"Fiorenzo", "Vincenzo", "Enzo", "Renzo", "Nunzio", "Maurizio", "Patrizio", "Orazio",
"Flavio", "Claudio", "Giuliano", "Adriano", "Emiliano", "Massimiliano", "Gianmarco", "Marcantonio",
"Gianbattista", "Giovanbattista", "Giammarco", "Gianluigi", "Giampiero", "Gianmaria", "Giandomenico", "Gianpaolo",
"Pierfrancesco", "Piergiorgio", "Pierangelo", "Piermario", "Piercarlo", "Piergiuseppe", "Gioacchino", "Bartolomeo",
"Benedetto", "Benvenuto", "Bonaventura", "Bonifacio", "Camillo", "Calogero", "Carmelo", "Demetrio",
"Dionisio", "Donato", "Egidio", "Eliseo", "Erminio", "Eustachio", "Evandro", "Ezio",
"Fermo", "Fernando", "Ferruccio", "Fortunato", "Fulvio", "Gaetano", "Germano", "Giosuè",
"Gregorio", "Guglielmo", "Lamberto", "Lanfranco", "Liborio", "Lucio", "Luigi", "Manfredo"
);
// Nomi femminili italiani (200+ nomi)
public static final List<String> FEMALE_NAMES = Arrays.asList(
"Giulia", "Francesca", "Chiara", "Federica", "Sara", "Martina", "Valentina", "Alessandra",
"Silvia", "Elisa", "Giorgia", "Elena", "Paola", "Laura", "Roberta", "Alice", "Serena",
"Barbara", "Anna", "Maria", "Simona", "Claudia", "Monica", "Cristina", "Elisabetta",
"Stefania", "Valeria", "Daniela", "Manuela", "Antonella", "Giovanna", "Sabrina", "Emanuela",
"Ilaria", "Cinzia", "Rosanna", "Patrizia", "Teresa", "Carmela", "Giuseppina", "Rosa",
"Antonietta", "Concetta", "Caterina", "Angela", "Raffaella", "Luisa", "Lucia", "Michela",
"Franceschina", "Graziella", "Isabella", "Benedetta", "Beatrice", "Margherita", "Alessia", "Andrea",
"Cristiana", "Fabiana", "Gabriella", "Gianna", "Lorena", "Marisa", "Nicoletta", "Ornella",
"Rosaria", "Silvana", "Susanna", "Tiziana", "Viviana", "Adriana", "Agnese", "Albina",
"Amelia", "Andreina", "Angelica", "Antonella", "Arianna", "Armida", "Augusta", "Aurora",
"Bruna", "Brunella", "Camilla", "Carla", "Carolina", "Cecilia", "Clara", "Clelia",
"Concettina", "Corinna", "Cosima", "Costanza", "Cristiana", "Delia", "Diana", "Dora",
"Donatella", "Edvige", "Eleonora", "Elvira", "Emma", "Enrichetta", "Ester", "Eugenia",
"Eva", "Fabia", "Fabiola", "Fernanda", "Fiorella", "Fiorenza", "Flora", "Franca",
"Gaia", "Gemma", "Gilda", "Gina", "Gloria", "Grazia", "Ida", "Ilda",
"Immacolata", "Ines", "Iolanda", "Irene", "Iris", "Ivana", "Ivanka", "Lara",
"Letizia", "Licia", "Lidia", "Liliana", "Lina", "Linda", "Lisa", "Livia",
"Loredana", "Lorella", "Lorenza", "Luana", "Luciana", "Lucilla", "Lucrezia", "Ludovica",
"Luigia", "Luna", "Maddalena", "Mafalda", "Marcella", "Marella", "Marilena", "Marina",
"Marisa", "Marta", "Matilde", "Maura", "Mirella", "Miriam", "Morena", "Nadia",
"Natalia", "Natalina", "Nella", "Nelly", "Nicole", "Noemi", "Norma", "Olga",
"Olimpia", "Orietta", "Palmira", "Pamela", "Pascale", "Pasqualina", "Pia", "Piera",
"Pierina", "Priscilla", "Raffaela", "Rebecca", "Regina", "Renata", "Rita", "Romina",
"Rosalba", "Rosalia", "Rosangela", "Rosanna", "Rosella", "Rosetta", "Rosina", "Rossana",
"Rossella", "Samanta", "Sandra", "Santina", "Sebastiana", "Serafina", "Sonia", "Stella",
"Tecla", "Tina", "Tosca", "Tullia", "Uberta", "Umberta", "Ursula", "Vera",
"Veronica", "Vincenza", "Viola", "Virginia", "Vittoria", "Wanda", "Yvonne", "Zaira",
"Zelda", "Zita", "Zoe", "Ambra", "Azzurra", "Bianca", "Celeste", "Diamante",
"Fiamma", "Giada", "Perla", "Sole", "Stella", "Alba", "Alma", "Anya"
);
// Cognomi italiani (300+ cognomi)
public static final List<String> SURNAMES = Arrays.asList(
"Rossi", "Ferrari", "Russo", "Bianchi", "Romano", "Gallo", "Costa", "Fontana",
"Esposito", "Ricci", "Bruno", "Moretti", "Marino", "Greco", "Barbieri", "Lombardi",
"Giordano", "Colombo", "Rizzo", "Benedetti", "Palumbo", "Pellegrini", "Caruso", "Ferretti",
"Galli", "Marchetti", "Villa", "Mancini", "Conte", "Serra", "Ferrero", "Martinelli",
"Mariani", "Giuliani", "Vitale", "Santoro", "Ferrara", "Leone", "Longo", "Gentile",
"Martino", "Fabbri", "Rinaldi", "Messina", "Riva", "Conti", "Silvestri", "Coppola",
"Negri", "Milani", "Parisi", "Sala", "Cattaneo", "Orlando", "Fiore", "Marini",
"Guerra", "Pagano", "Bernardi", "Valenti", "Farina", "Ruggiero", "Caputo", "Monti",
"Grassi", "Montanari", "Santini", "Morelli", "Amato", "Neri", "Donati", "Testa",
"Bianco", "Sorrentino", "Rossini", "Giuliano", "Sartori", "De Angelis", "De Rosa",
"Basile", "Costantini", "Rizzi", "Barone", "Martini", "De Santis", "Basso", "Pellegrino",
"Carbone", "Gatti", "Coppola", "Rossetto", "Piras", "Ricci", "Martinelli", "Sanna",
"Torrisi", "Scuderi", "Priolo", "Anastasi", "Puglisi", "La Rosa", "Catalano", "Garofalo",
"Aiello", "Trovato", "Pappalardo", "Pulvirenti", "Marletta", "Di Marco", "Biondi", "Ferri",
"Testa", "Marchi", "Baldini", "Benedetti", "Colombi", "Gasparini", "Orlandi", "Barbera",
"Damico", "Guerriero", "Napolitano", "Romano", "Mazza", "Caruso", "Ferraro", "Gaeta",
"Di Stefano", "Palma", "Carbone", "Morrone", "Milazzo", "Calabrese", "Ventura", "Palmieri",
"Martello", "Fico", "Pastore", "Arena", "Maggio", "Sciacca", "Pagliaro", "Lupo",
"Mangano", "Capra", "Finocchiaro", "Grasso", "Morabito", "Pellicano", "Castelli", "Castaldo",
"Mauro", "Piazza", "Battaglia", "D Amico", "Forte", "Antonelli", "Delia", "Marino",
"Cosentino", "Lazzaro", "Vitale", "Lombardo", "Crisafulli", "Nicolosi", "Bellomo", "Morreale",
"Messina", "Vaccaro", "Nicosia", "Fazio", "Spina", "Russo", "Parisi", "Zappala",
"Riccobono", "Camilleri", "Barbagallo", "Oliveri", "Pistone", "Gambino", "Cavallaro", "Burgio",
"Gentile", "Restivo", "Di Bella", "Genovese", "Ferrante", "Gianninoto", "Vitrano", "Gargano",
"Lombardi", "Milani", "Picci", "De Luca", "Foti", "Giardina", "Di Pietro", "Russo",
"La Spina", "Morello", "Moschetti", "Penna", "Ferretti", "Colombo", "Marra", "De Simone",
"Cozzi", "Grimaldi", "Pellegrini", "Galdi", "Paolini", "Ferrara", "Santangelo", "Di Giovanni",
"Iannone", "Lucchese", "Orsini", "Mastroianni", "Fiorentino", "Capasso", "Di Napoli", "Giannini",
"Romano", "Vitale", "Fontana", "Galdi", "Giuliani", "Barbieri", "Lombardo", "Martinelli",
"De Rosa", "Ferri", "Caputo", "Castaldi", "Mauro", "Monti", "Villa", "Marcello",
"Ricci", "Ferretti", "Gallo", "Fabbri", "Marini", "Grasso", "Carbone", "Bevilacqua",
"Giannone", "Perna", "Pellegrino", "Di Lorenzo", "Napoli", "Amato", "Donato", "Riccio",
"Giuliano", "Mancuso", "Bellotti", "Bianchini", "Rossetti", "Mazza", "Silvestri", "Baldini",
"Martinelli", "Galli", "Colombo", "Ferraro", "Palumbo", "Marchetti", "Ferrera", "Rossi",
"Caruso", "Serra", "Marchese", "Benedetti", "Franzese", "Basile", "Di Mauro", "Torrisi",
"Licata", "Scuderi", "Platania", "Priolo", "Marletta", "Biondi", "Grassi", "Fontana",
"Pagano", "Gentile", "Moretti", "Guerra", "Santoro", "Longo", "Giordano", "Fiore",
"Marchetti", "Parisi", "Milani", "Orlando", "Sala", "Costa", "Cattaneo", "Neri",
"Donati", "Mancini", "Montanari", "Caputo", "De Angelis", "Sartori", "De Santis", "Basso"
);
public enum Gender {
MALE, FEMALE
}
/**
* Costruttore con seed random sicuro
*/
public ItalianNameGenerator() {
this.random = new SecureRandom();
}
/**
* Costruttore con seed personalizzato per risultati riproducibili
* @param seed seed per il generatore random
*/
public ItalianNameGenerator(long seed) {
this.random = new Random(seed);
}
/**
* Genera un genere casuale
* @return Gender casuale (MALE o FEMALE)
*/
public Gender generateGender() {
return random.nextBoolean() ? Gender.MALE : Gender.FEMALE;
}
/**
* Genera un nome casuale in base al sesso specificato
* @param gender il sesso per cui generare il nome
* @return nome casuale del sesso specificato
*/
public String generateFirstName(Gender gender) {
List<String> names = (gender == Gender.MALE) ? MALE_NAMES : FEMALE_NAMES;
return names.get(random.nextInt(names.size()));
}
/**
* Genera un cognome casuale
* @return cognome casuale
*/
public String generateSurname() {
return SURNAMES.get(random.nextInt(SURNAMES.size()));
}
/**
* Genera un nome completo (nome + cognome) in base al sesso
* @param gender il sesso per cui generare il nome completo
* @return nome completo del sesso specificato
*/
public String generateFullName(Gender gender) {
return generateFirstName(gender) + " " + generateSurname();
}
/**
* Genera un nome completo con sesso casuale
* @return nome completo con sesso casuale
*/
public String generateRandomFullName() {
Gender randomGender = random.nextBoolean() ? Gender.MALE : Gender.FEMALE;
return generateFullName(randomGender);
}
/**
* Genera una persona completa con nome, cognome e sesso
* @return oggetto Person con i dati generati
*/
public Person generatePerson() {
Gender gender = random.nextBoolean() ? Gender.MALE : Gender.FEMALE;
return new Person(generateFirstName(gender), generateSurname(), gender);
}
/**
* Genera una persona mantenendo il sesso specificato
* @param gender il sesso da mantenere
* @return oggetto Person con i dati generati
*/
public Person generatePerson(Gender gender) {
return new Person(generateFirstName(gender), generateSurname(), gender);
}
/**
* Classe interna per rappresentare una persona generata
*/
public static class Person {
private final String firstName;
private final String surname;
private final Gender gender;
public Person(String firstName, String surname, Gender gender) {
this.firstName = firstName;
this.surname = surname;
this.gender = gender;
}
public String getFirstName() {
return firstName;
}
public String getSurname() {
return surname;
}
public Gender getGender() {
return gender;
}
public String getFullName() {
return firstName + " " + surname;
}
@Override
public String toString() {
return String.format("Person{firstName='%s', surname='%s', gender=%s}",
firstName, surname, gender);
}
}
/**
* Metodo di utilità per ottenere il sesso da una stringa
* @param genderString stringa rappresentante il sesso ("M", "F", "MALE", "FEMALE", etc.)
* @return enum Gender corrispondente
* @throws IllegalArgumentException se la stringa non è riconosciuta
*/
public static Gender parseGender(String genderString) {
if (genderString == null) {
throw new IllegalArgumentException("Gender string cannot be null");
}
String normalized = genderString.trim().toUpperCase();
switch (normalized) {
case "M":
case "MALE":
case "MASCHIO":
case "UOMO":
return Gender.MALE;
case "F":
case "FEMALE":
case "FEMMINA":
case "DONNA":
return Gender.FEMALE;
default:
throw new IllegalArgumentException("Unrecognized gender: " + genderString);
}
}
}

View File

@@ -0,0 +1,170 @@
package it.integry.ems.configuration;
import it.integry.annotations.CustomerComponent;
import it.integry.annotations.CustomerService;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.settings.Model.SettingsModel;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.core.type.filter.AnnotationTypeFilter;
/**
* Configurazione per registrare gli scope personalizzati per customer specifici
*/
@Configuration
public class CustomerServicesConfig implements ApplicationListener<ContextRefreshedEvent> {
private final Logger logger = LogManager.getLogger();
@Autowired
private SettingsModel settingsModel;
@Autowired
private ApplicationContext applicationContext;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
// Assicuriamoci che sia il context principale e non un sub-context
if (event.getApplicationContext() == applicationContext) {
registerCustomerBeans();
}
}
private void registerCustomerBeans() {
ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(false);
// Aggiungo filtri per le annotazioni custom
scanner.addIncludeFilter(new AnnotationTypeFilter(CustomerService.class));
scanner.addIncludeFilter(new AnnotationTypeFilter(CustomerComponent.class));
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) applicationContext.getAutowireCapableBeanFactory();
// Scansiono tutti i package del progetto
for (BeanDefinition bd : scanner.findCandidateComponents("it.integry")) {
try {
Class<?> clazz = Class.forName(bd.getBeanClassName());
String beanName = generateBeanName(clazz);
IntegryCustomer customer = extractCustomer(clazz);
// Ora SettingsModel è completamente inizializzato con @PostConstruct chiamato
if (!settingsModel.getDefaultProfile().equalsIgnoreCase(customer.toString())) {
continue;
}
// Evito duplicati controllando se il bean esiste già
if (!registry.containsBeanDefinition(beanName)) {
logger.trace("Registering custom bean for customer: " + customer + " - Class: " + clazz.getSimpleName());
// Creo la definizione del bean
BeanDefinitionBuilder builder = BeanDefinitionBuilder
.genericBeanDefinition(clazz);
// Registro il bean nel registry di Spring
registry.registerBeanDefinition(beanName, builder.getBeanDefinition());
// Determino lo scope del bean per decidere se istanziarlo immediatamente
String beanScope = determineBeanScope(clazz);
if (shouldInstantiateImmediately(beanScope)) {
// Forzo l'istanziazione immediata solo per bean con scope appropriati
try {
Object beanInstance = applicationContext.getBean(beanName);
logger.info("Bean customer {} istanziato con successo: {} (scope: {})",
customer, beanInstance.getClass().getSimpleName(), beanScope);
} catch (Exception e) {
logger.error("Errore durante l'istanziazione del bean {} (scope: {}): {}",
beanName, beanScope, e.getMessage());
}
} else {
logger.info("Bean customer {} registrato ma non istanziato (scope: {}). " +
"Verrà istanziato quando richiesto", customer, beanScope);
}
}
} catch (ClassNotFoundException e) {
logger.error("Impossibile caricare la classe: " + bd.getBeanClassName(), e);
}
}
}
/**
* Genera il nome del bean basato sul nome della classe
*/
private String generateBeanName(Class<?> clazz) {
String simpleName = clazz.getSimpleName();
return Character.toLowerCase(simpleName.charAt(0)) + simpleName.substring(1);
}
private IntegryCustomer extractCustomer(Class<?> clazz) {
if (clazz.isAnnotationPresent(CustomerService.class)) {
CustomerService cs = clazz.getAnnotation(CustomerService.class);
return cs.value();
} else if (clazz.isAnnotationPresent(CustomerComponent.class)) {
CustomerComponent cc = clazz.getAnnotation(CustomerComponent.class);
return cc.value();
}
return IntegryCustomer.Integry; // Valore di default
}
/**
* Determina lo scope del bean analizzando le annotazioni della classe
*/
private String determineBeanScope(Class<?> clazz) {
// Controllo per @Scope
if (clazz.isAnnotationPresent(org.springframework.context.annotation.Scope.class)) {
org.springframework.context.annotation.Scope scopeAnnotation =
clazz.getAnnotation(org.springframework.context.annotation.Scope.class);
return scopeAnnotation.value();
}
// Controllo per @RequestScope
if (clazz.isAnnotationPresent(org.springframework.web.context.annotation.RequestScope.class)) {
return "request";
}
// Controllo per @SessionScope
if (clazz.isAnnotationPresent(org.springframework.web.context.annotation.SessionScope.class)) {
return "session";
}
// Controllo per @ApplicationScope
if (clazz.isAnnotationPresent(org.springframework.web.context.annotation.ApplicationScope.class)) {
return "application";
}
// Default è singleton
return "singleton";
}
/**
* Determina se il bean può essere istanziato immediatamente in base al suo scope
*/
private boolean shouldInstantiateImmediately(String scope) {
switch (scope.toLowerCase()) {
case "request":
case "session":
// I bean con scope request/session non possono essere istanziati
// al di fuori del contesto web
return false;
case "prototype":
// I bean prototype non vengono istanziati automaticamente
return false;
case "singleton":
case "application":
default:
// Singleton e application possono essere istanziati immediatamente
return true;
}
}
}

View File

@@ -14,7 +14,7 @@ public class ExecutorServiceConfig {
private final int corePoolSize = Runtime.getRuntime().availableProcessors();
private final int maxPoolSize = (int) (corePoolSize * 1.5f);
private final int queueSize = 500;
private final int queueSize = 1_000_000;
@Bean
public ExecutorService taskExecutor() {

View File

@@ -0,0 +1,21 @@
package it.integry.ems.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@Configuration
@EnableScheduling // Equivale a <task:annotation-driven/>
public class SchedulerConfig {
@Bean
public ThreadPoolTaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(5); // Equivale a pool-size="5"
scheduler.setThreadNamePrefix("taskScheduler-");
scheduler.initialize();
return scheduler;
}
}

View File

@@ -552,7 +552,7 @@ public class EmsController {
@RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) JsonNode body) throws Exception {
EntityExportResponse<?> entityExportResponse = emsServices.export(typeExport, formatExport, body, headless);
EntityExportResponse<?> entityExportResponse = emsServices.export(multiDBTransactionManager, requestDataDTO, typeExport, formatExport, body, headless);
List<AnomalieDTO> anomalie = new ArrayList<>();
if (entityExportResponse != null && entityExportResponse.getAnomalie() != null && !entityExportResponse.getAnomalie().isEmpty())
@@ -608,7 +608,7 @@ public class EmsController {
@RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) ImportRequestDTO requestBody) throws Exception {
EntityImportResponse<List<EntityBase>> importResponse = emsServices.importEntity(importType, importFormat, requestBody, headless);
EntityImportResponse<List<EntityBase>> importResponse = emsServices.importEntity(multiDBTransactionManager, requestDataDTO, importType, importFormat, requestBody, headless);
List<EntityBase> entities = importResponse.getResponse();
@@ -733,7 +733,7 @@ public class EmsController {
@PathVariable String filename,
@RequestParam(name = "contentDisposition", defaultValue = "attachment") String contentDispositionType,
@RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception {
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(idAttach, requestThumbnail);
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(multiDBTransactionManager, idAttach, requestThumbnail);
if (attachmentDTO != null) {
return ResponseEntity.ok()
@@ -750,13 +750,31 @@ public class EmsController {
return ResponseEntity.notFound().build();
}
@GetMapping(value = "downloadFileFromRefUuid")
public ResponseEntity<byte[]> downloadFileFromRefUuid(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam() String refUuid,
@RequestParam() String fileName) throws Exception {
AttachmentDTO attached = emsServices.downloadFileFromRefUuid(multiDBTransactionManager, refUuid, fileName);
if (attached == null) return ResponseEntity.notFound().build();
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(attached.getMimeType()))
.contentLength(attached.getFileSize())
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.attachment()
.filename(attached.getFileName())
.build()
.toString())
.body(attached.getFileContent());
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.GET)
public ResponseEntity<byte[]> downloadStbFileAttachmentPath(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String idAttach,
@RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception {
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(idAttach, requestThumbnail);
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(multiDBTransactionManager, idAttach, requestThumbnail);
if (attachmentDTO != null) {
return ResponseEntity.ok()
@@ -775,9 +793,8 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_EMAIL_CONTENT, method = RequestMethod.GET)
public byte[] downloadStbEmailContent(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
public ResponseEntity<byte[]> downloadStbEmailContent(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
StbEmailContent stbEmailContent = new StbEmailContent();
stbEmailContent.setIdEmail(idEmail);
stbEmailContent.setOperation(OperationType.SELECT_OBJECT);
@@ -785,11 +802,7 @@ public class EmsController {
stbEmailContent = entityProcessor.processEntity(stbEmailContent, multiDBTransactionManager);
if (stbEmailContent != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename("email.eml").build().toString());
byte[] byteArr = null;
byte[] byteArr;
String pattern = "[^\\x00-\\x7F]";
Pattern pat = Pattern.compile(pattern);
@@ -801,13 +814,18 @@ public class EmsController {
byteArr = Base64.decodeBase64(stbEmailContent.getEmailContent());
}
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename("email.eml")
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET)
@@ -866,12 +884,13 @@ public class EmsController {
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_ORD_PDF, method = RequestMethod.GET)
public byte[] downloadDtbOrdPdf(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
public ResponseEntity<byte[]> downloadDtbOrdPdf(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
DtbOrdPdf dtbOrdPdf = new DtbOrdPdf();
dtbOrdPdf.setGestione(gestione);
dtbOrdPdf.setDataOrd(UtilityDate.RecognizeDate(dataOrd));
@@ -882,17 +901,20 @@ public class EmsController {
dtbOrdPdf = entityProcessor.processEntity(dtbOrdPdf, multiDBTransactionManager);
if (dtbOrdPdf != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString());
byte[] byteArr = dtbOrdPdf.getFilecontentByteArr(true);
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename(ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString())
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.POST)
@@ -909,7 +931,7 @@ public class EmsController {
throw new Exception("Sono stati inviati più file del previsto");
}
StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(idAttach,
StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(multiDBTransactionManager, idAttach,
files[0].getOriginalFilename(),
files[0].getBytes(),
descrizione,
@@ -1088,7 +1110,7 @@ public class EmsController {
.setCodDtip(codDtip);
drlDocAttached.setOperation(OperationType.INSERT);
StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(idAttach,
StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(multiDBTransactionManager, idAttach,
files[0].getOriginalFilename(),
files[0].getBytes(),
descrizione,
@@ -1107,7 +1129,7 @@ public class EmsController {
@RequestMapping(value = "createZipFromFiles", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse createZipFromFiles(@RequestBody CreateZipDTO createZipDTO) throws Exception {
return ServiceRestResponse.createPositiveResponse(emsServices.createZipFromFiles(createZipDTO));
return ServiceRestResponse.createPositiveResponse(emsServices.createZipFromFiles(multiDBTransactionManager, createZipDTO));
}
// @RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_EMAIL_CONTENT, method = RequestMethod.POST)
@@ -1153,22 +1175,10 @@ public class EmsController {
// }
@RequestMapping(value = EmsRestConstants.PATH_CLEAN_DIRECTORIES, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cleanDirectories(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
try {
emsServices.cleanDirectories();
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return new ServiceRestResponse(EsitoType.KO, multiDBTransactionManager.getPrimaryConnection().getProfileName(), e);
}
}
@RequestMapping(value = EmsRestConstants.PATH_EXPORT_SERVER_INFO_ISCC, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse exportServerInfoISCC(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
emsServices.checkServerVariables();
emsServices.checkServerVariables(multiDBTransactionManager);
return ServiceRestResponse.createPositiveResponse();
}

View File

@@ -1,112 +1,172 @@
package it.integry.ems.datasource;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
public class DataSource extends BasicDataSource {
private AvailableConnectionsModel connectionModel;
/**
* Instanzia un nuovo datasource.
* @deprecated
* Il datasource non deve essere istanziato direttamente ma bisogna utilizzare il metodo {@link it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool#getConnection(String)} per ottenere una connessione.
*/
@Deprecated
public DataSource() {
super();
}
public EmsRestConstants.DB_TYPE getTypeDB() {
return connectionModel.getConnectionType();
}
/**
* Ottiene una connessione dal pool. La connessione è wrappata in it.integry.ems.sync.MultiDBTransaction.Connection.
* È responsabilità del chiamante chiudere la connessione per restituirla al pool.
*
* @return una connessione dal pool
* @throws SQLException se si verifica un errore di accesso al database
*/
public Connection getConnection() throws SQLException {
// Restituisce una nuova connessione dal pool di BasicDataSource, wrappata nel nostro tipo Connection
final Connection connection = Connection.fromConnection(super.getConnection());
// Prova a ottenere una connessione per verificare la configurazione e ottenere il sessionID
if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) {
HashMap<String, Object> resultSessionData = UtilityDB.executeSimpleQueryOnlyFirstRow(connection, "select CAST(@@spid AS BIGINT) AS session_id," +
" user_name() AS [user_name]," +
" suser_name() AS [suser_name]," +
" current_user AS [current_user]," +
" system_user AS [system_user]," +
" session_user AS [session_user]," +
" user AS [user]");
connection.setSessionId(UtilityHashMap.getValueIfExists(resultSessionData, "session_id"));
}
connection.setProfileName(connectionModel.getProfileName())
.setInternalDb(connectionModel.getInternalDb());
return connection;
}
public synchronized void initialize(AvailableConnectionsModel connectionModel) throws Exception {
this.connectionModel = connectionModel;
this.setUrl(connectionModel.getDbConnectionString("EMS Connection"));
this.setUsername(connectionModel.getUsername());
this.setPassword(connectionModel.getPasswordDecrypted());
if (!connectionModel.getInternalDb() ||
UtilityDebug.isDebugExecution() ||
UtilityDebug.isIntegryServerDev() ||
!SettingsModel.getInstance().isPrimaryInstance())
this.setMaxIdle(0);
this.setDefaultTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
this.setDefaultAutoCommit(false);
// if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) {
// this.setConnectionInitSqls(Collections.singletonList("SET NOCOUNT ON"));
// }
}
public synchronized void initialize(String profileDB, String connectionName) throws Exception {
if (UtilityString.isNullOrEmpty(profileDB)) {
throw new Exception("Profile DB non valorizzato - controllare la chiamata del servizio");
}
AvailableConnectionsModel connectionModel = null;
List<AvailableConnectionsModel> availableConnectionsModels = SettingsModel.getInstance().getAvailableConnectionsWithoutDuplicatedProfiles(false);
for (AvailableConnectionsModel connectionsModel : availableConnectionsModels) {
if (connectionsModel.getProfileName().equalsIgnoreCase(profileDB)) {
connectionModel = connectionsModel;
}
}
if (connectionModel == null) {
throw new Exception(String.format("Configurazione DB non trovata o dati mancanti (%s)", profileDB));
}
initialize(connectionModel);
}
public synchronized void initialize(String profileDB) throws Exception {
initialize(profileDB, "EMS Connection");
}
package it.integry.ems.datasource;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.SQLException;
import java.util.HashMap;
public class DataSource extends BasicDataSource {
private final int POOL_SIZE;
private AvailableConnectionModel connectionModel;
/**
* Instanzia un nuovo datasource.
*
* @deprecated Il datasource non deve essere istanziato direttamente ma bisogna utilizzare il metodo
* {@link it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool#getConnection(AvailableConnectionModel)} per ottenere una connessione.
*/
@Deprecated
public DataSource() {
super();
POOL_SIZE = 5;
}
@Deprecated
public DataSource(int poolSize) {
super();
POOL_SIZE = poolSize;
}
public EmsRestConstants.DB_TYPE getTypeDB() {
return connectionModel.getConnectionType();
}
/**
* Ottiene una connessione dal pool. La connessione è wrappata in it.integry.ems.sync.MultiDBTransaction.Connection.
* È responsabilità del chiamante chiudere la connessione per restituirla al pool.
*
* @return una connessione dal pool
* @throws SQLException se si verifica un errore di accesso al database
*/
public Connection getConnection() throws SQLException {
// Restituisce una nuova connessione dal pool di BasicDataSource, wrappata nel nostro tipo Connection
final Connection connection = Connection.fromConnection(super.getConnection());
// Prova a ottenere una connessione per verificare la configurazione e ottenere il sessionID
if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) {
HashMap<String, Object> resultSessionData = UtilityDB.executeSimpleQueryOnlyFirstRow(connection, "select CAST(@@spid AS BIGINT) AS session_id," +
" user_name() AS [user_name]," +
" suser_name() AS [suser_name]," +
" current_user AS [current_user]," +
" system_user AS [system_user]," +
" session_user AS [session_user]," +
" user AS [user]");
connection.setSessionId(UtilityHashMap.getValueIfExists(resultSessionData, "session_id"));
}
connection.setProfileName(connectionModel.getProfileName())
.setInternalDb(connectionModel.getInternalDb());
return connection;
}
public synchronized void initialize(String profileDB) throws Exception {
initialize(profileDB, null);
}
public synchronized void initialize(String profileDB, String customAppName) throws Exception {
AvailableConnectionModel connectionsModel = SettingsModel.getInstance().findConnectionModel(profileDB);
initialize(connectionsModel, customAppName);
}
public synchronized void initialize(AvailableConnectionModel connectionModel) throws Exception {
initialize(connectionModel, null);
}
public synchronized void initialize(AvailableConnectionModel connectionModel, String customAppName) throws Exception {
if (connectionModel == null) {
throw new Exception("Configurazione DB non trovata");
}
this.connectionModel = connectionModel;
this.setDriverClassName(connectionModel.getDriverClassName());
this.setUrl(connectionModel.getDbConnectionString(UtilityString.isNull(customAppName, "EMS Connection")));
this.setUsername(connectionModel.getUsername());
this.setPassword(connectionModel.getPasswordDecrypted());
this.setDefaultCatalog(connectionModel.getDbName());
this.setDefaultTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
this.setDefaultAutoCommit(false);
// ===== OTTIMIZZAZIONI CRITICHE =====
// Pool sizing ottimizzato per READ_UNCOMMITTED (meno locking = più connessioni possibili)
this.setInitialSize(POOL_SIZE); // Inizia con più connessioni
this.setMaxTotal(-1); // Aumentato il massimo
this.setMinIdle(POOL_SIZE); // Non scendere sotto 5
this.setMaxIdle(-1); // Mantieni più connessioni idle
// Timeout ottimizzati per performance massime
// this.setMaxWaitMillis(-1L); // Infinito (DEFAULT)
// Validazione veloce ed efficiente
this.setValidationQuery("SELECT 1");
this.setValidationQueryTimeout(30); // Ridotto a 1 secondo
this.setTestWhileIdle(true); // Testa connessioni idle
// Eviction ottimizzata per READ_UNCOMMITTED
// this.setTimeBetweenEvictionRunsMillis(1 * 1000); // Ogni 30 secondi
// this.setMinEvictableIdleTimeMillis(1 * 60 * 1000); // 3 minuti (ridotto da 5)
// this.setNumTestsPerEvictionRun(5); // Testa più connessioni per volta
// Connection leak protection
this.setRemoveAbandonedOnBorrow(true);
this.setRemoveAbandonedOnMaintenance(true);
this.setRemoveAbandonedTimeout(3 * 60 * 10); // 3 minuti
this.setLogAbandoned(true); // Disabilita in produzione per performance
// Performance boosts massimi
// this.setPoolPreparedStatements(true);
// this.setMaxOpenPreparedStatements(200);
// this.setCacheState(true);
this.setFastFailValidation(true);
// Ottimizzazioni specifiche per SQL Server con READ_UNCOMMITTED
if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) {
// Impostazioni connection specifiche per SQL Server
//this.setConnectionInitSqls(java.util.Arrays.asList(
//"SET NOCOUNT ON",
//"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED",
//"SET ARITHABORT ON"
//));
}
// Logging ottimizzato (disabilita in produzione)
this.setLogExpiredConnections(true);
// ==================== ULTERIORI OTTIMIZZAZIONI ====================
// Connection properties specifiche per performance
this.setDefaultReadOnly(false);
// Ottimizzazioni DBCP2 avanzate
// this.setLifo(false); // FIFO per distribuzione equa delle connessioni
// this.setSoftMinEvictableIdleTimeMillis(120000); // 2 minuti soft eviction
// if (!connectionModel.getInternalDb() ||
// UtilityDebug.isDebugExecution() ||
// UtilityDebug.isIntegryServerDev() ||
// !SettingsModel.getInstance().isPrimaryInstance()) {
// this.setInitialSize(0);
//// this.setMaxTotal(5);
// this.setMinIdle(0);
// this.setMaxIdle(1);
// }
}
}

View File

@@ -0,0 +1,302 @@
package it.integry.ems.dbms_change_tracker.component;
import com.microsoft.sqlserver.jdbc.SQLServerConnection;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.dbms_change_tracker.model.ChangeTrackingConfigDTO;
import it.integry.ems.dbms_change_tracker.model.DetectedChangeDataDTO;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class DbmsChangeTracker {
private DataSource dataSource;
private final Logger logger = LogManager.getLogger();
private final int CHANGE_RETENTION_HOURS = 1;
private final boolean AUTO_CLEANUP = true;
private Connection integryConnection;
private boolean trackerEnabled = false;
private long currentVersion;
private Listener eventListener;
public DbmsChangeTracker(String profileDb) throws Exception {
createDataSource(profileDb);
createConnection();
}
private void createDataSource(String profileDb) throws Exception {
DataSource ds = new DataSource(1);
ds.initialize(profileDb, "Integry Changes Tracker");
this.dataSource = ds;
}
private void createConnection() throws SQLException {
integryConnection = dataSource.getConnection();
if (!(integryConnection.isWrapperFor(SQLServerConnection.class))) {
integryConnection.close();
throw new SQLException("Connection is not a SQL Server connection");
}
}
private void checkConnection() {
try {
UtilityDB.executeSimpleQuery(integryConnection, "SELECT 1");
if (integryConnection.isClosed())
createConnection();
} catch (SQLException e) {
try {
try {
integryConnection.close();
} catch (Exception ex) {
//ignore
}
createConnection();
} catch (SQLException ex) {
logger.error("Unable to reestablish DB connection for Change Tracker", ex);
throw new RuntimeException("Unable to reestablish DB connection for Change Tracker");
}
}
}
public void enableTrackerInDbms() throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
final ChangeTrackingConfigDTO currentConfig = retrieveTrackerCurrentConfig();
if (currentConfig != null) {
logInfo("Changes Tracker is already enabled (with " + currentConfig.getRetentionPeriod() + " " + currentConfig.getRetentionPeriodUnit().toLowerCase() + " retention and auto cleanup " + (currentConfig.isAutoCleanupOn() ? "ON" : "OFF") + ")");
return;
}
String enableSql = "ALTER DATABASE [" + integryConnection.getDbName() + "] \n" +
"SET CHANGE_TRACKING = ON (" +
"CHANGE_RETENTION = " + CHANGE_RETENTION_HOURS + " HOURS, " +
"AUTO_CLEANUP = " + (AUTO_CLEANUP ? "ON" : "OFF") +
");\n";
//COMMIT necessario perché ALTER DATABASE richiede che non ci siano altre transazioni attive
UtilityDB.executeStatement(integryConnection, "COMMIT", enableSql);
logInfo("Changes Tracker is now enabled (with " + CHANGE_RETENTION_HOURS + " hours retention and auto cleanup " + (AUTO_CLEANUP ? "ON" : "OFF") + ")");
}
public void enableTrackerOnTable(String tableName) throws SQLException {
if (isTableTrackingEnabled(tableName)) {
return;
}
UtilityDB.executeStatement(integryConnection, "ALTER TABLE dbo." + tableName + "\n" +
"ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON);", "COMMIT");
}
public void disableTrackerOnNotUsedTables(List<String> usedTables) throws SQLException {
final List<String> trackedTables = retrieveTrackedTables();
trackedTables.removeAll(usedTables);
for (String tableName : trackedTables) {
disableTrackerOnTable(tableName);
}
}
public void disableTrackerOnTable(String tableName) throws SQLException {
if (!isTableTrackingEnabled(tableName)) {
return;
}
UtilityDB.executeStatement(integryConnection, "ALTER TABLE dbo." + tableName + "\n" +
"DISABLE CHANGE_TRACKING;", "COMMIT");
}
public void startTracking() throws SQLException {
currentVersion = retrieveCurrentVersion();
trackerEnabled = true;
}
public void checkForChanges() throws Exception {
if (!trackerEnabled)
return;
checkConnection();
final List<String> trackedTables = retrieveTrackedTables();
HashMap<Long, List<DetectedChangeDataDTO>> changesByVersion = new HashMap<>();
for (String trackedTable : trackedTables) {
long minValidVersion = getMinValidVersion(trackedTable);
if (currentVersion < minValidVersion) {
if (eventListener != null) {
eventListener.onTrackingResetted();
currentVersion = retrieveCurrentVersion();
return;
}
}
final List<DetectedChangeDataDTO> detectedChanges = retrieveChangeList(trackedTable);
detectedChanges.forEach(detectedChangeDataDTO -> {
changesByVersion.putIfAbsent(detectedChangeDataDTO.getSysChangeVersion(), new ArrayList<>());
changesByVersion.get(detectedChangeDataDTO.getSysChangeVersion()).add(detectedChangeDataDTO);
});
}
logTrace("Detected " + changesByVersion.size() + " changes since version " + currentVersion);
dispatchChanges(changesByVersion);
}
private void dispatchChanges(HashMap<Long, List<DetectedChangeDataDTO>> changesByVersion) throws Exception {
final List<Long> sortedChanges = changesByVersion.keySet().stream()
.sorted()
.collect(Collectors.toList());
for (Long changeId : sortedChanges) {
final List<DetectedChangeDataDTO> detectedChanges = changesByVersion.get(changeId);
for (DetectedChangeDataDTO detectedChange : detectedChanges) {
switch (detectedChange.getSysChangeOperation()) {
case INSERT:
if (eventListener != null)
eventListener.onInsertDetected(detectedChange.getTableName(), detectedChange.getPrimaryKey());
break;
case UPDATE:
if (eventListener != null)
eventListener.onUpdateDetected(detectedChange.getTableName(), detectedChange.getPrimaryKey());
break;
case DELETE:
if (eventListener != null)
eventListener.onDeleteDetected(detectedChange.getTableName(), detectedChange.getPrimaryKey());
break;
}
}
currentVersion = changeId;
}
}
private List<DetectedChangeDataDTO> retrieveChangeList(String tableName) throws SQLException {
String sql = "SELECT *\n" +
"FROM CHANGETABLE(CHANGES dbo." + tableName + ", " + currentVersion + ") AS c";
final List<HashMap<String, Object>> result = UtilityDB.executeSimpleQuery(integryConnection, sql);
return result.stream()
.map(x -> {
DetectedChangeDataDTO detectedChangeDataDTO = new DetectedChangeDataDTO()
.setTableName(tableName);
Long sysChangeVersion = UtilityHashMap.<Long>getValueIfExists(x, "SYS_CHANGE_VERSION");
detectedChangeDataDTO.setSysChangeVersion(sysChangeVersion);
Long sysChangeCreationVersion = UtilityHashMap.<Long>getValueIfExists(x, "SYS_CHANGE_CREATION_VERSION");
detectedChangeDataDTO.setSysChangeCreationVersion(sysChangeCreationVersion);
detectedChangeDataDTO.setSysChangeOperation(DetectedChangeDataDTO.Operation.from(UtilityHashMap.<String>getValueIfExists(x, "SYS_CHANGE_OPERATION")));
List<String> keysToRemove = new ArrayList<>();
for (String colName : x.keySet()) {
if (colName.startsWith("SYS_"))
keysToRemove.add(colName);
}
for (String colName : keysToRemove) {
x.remove(colName);
}
detectedChangeDataDTO.setPrimaryKey(x);
return detectedChangeDataDTO;
})
.collect(Collectors.toList());
}
private long retrieveCurrentVersion() throws SQLException {
String sql = "SELECT CHANGE_TRACKING_CURRENT_VERSION() AS current_version";
long currentVersion = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(integryConnection, sql);
return currentVersion;
}
private long getMinValidVersion(String table) throws SQLException {
String sql = "SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID(" + UtilityDB.valueToString(table) + "))";
long minValidVersion = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(integryConnection, sql);
return minValidVersion;
}
private List<String> retrieveTrackedTables() throws SQLException {
String sql = "SELECT OBJECT_NAME(object_id) AS table_name\n" +
" FROM sys.change_tracking_tables";
List<String> trackedTables = UtilityDB.executeSimpleQueryOnlyFirstColumn(integryConnection, sql);
return trackedTables;
}
private boolean isTableTrackingEnabled(String tableName) throws SQLException {
String sql = "SELECT CAST(COUNT(is_track_columns_updated_on) AS BIT) AS enabled\n" +
" FROM sys.change_tracking_tables \n" +
" WHERE object_id = OBJECT_ID('dbo." + tableName + "')";
boolean enabled = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(integryConnection, sql);
return enabled;
}
private ChangeTrackingConfigDTO retrieveTrackerCurrentConfig() throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String checkSql = "SELECT DB_NAME(database_id) as database_name,\n" +
"CAST(is_auto_cleanup_on AS BIT) AS is_auto_cleanup_on,\n" +
"retention_period,\n" +
"retention_period_units_desc,\n" +
"max_cleanup_version\n" +
"FROM sys.change_tracking_databases \n" +
"WHERE DB_NAME(database_id)=DB_NAME()";
final ChangeTrackingConfigDTO currentConfig = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(integryConnection, checkSql, ChangeTrackingConfigDTO.class);
return currentConfig;
}
private void logInfo(String message) {
logger.info("[" + integryConnection.getProfileName() + "] " + message);
}
private void logTrace(String message) {
logger.trace("[" + integryConnection.getProfileName() + "] " + message);
}
public DbmsChangeTracker setEventListener(Listener eventListener) {
this.eventListener = eventListener;
return this;
}
public interface Listener {
void onInsertDetected(String tableName, HashMap<String, Object> primaryKey) throws Exception;
void onUpdateDetected(String tableName, HashMap<String, Object> primaryKey) throws Exception;
void onDeleteDetected(String tableName, HashMap<String, Object> primaryKey) throws Exception;
void onTrackingResetted() throws Exception;
}
}

View File

@@ -0,0 +1,141 @@
package it.integry.ems.dbms_change_tracker.component;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordDeletedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordInsertedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordUpdatedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableTrackingResettedEvent;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Component
public class DbmsChangeTrackerComponent {
private final Logger logger = LogManager.getLogger();
private final HashMap<IntegryCustomerDB, DbmsChangeTracker> activeChangeTrackers = new HashMap<>();
private final ArrayList<String> trackedTables = new ArrayList<String>() {{
add(MtbDepo.ENTITY);
add(MtbDepoPosizioni.ENTITY);
add(StbEditLimit.ENTITY);
add(StbGestSetup.ENTITY);
add(StbGestSetupDepo.ENTITY);
add(StbUser.ENTITY);
add(WtbClie.ENTITY);
add(WtbDepo.ENTITY);
add(WtbGestSetupUser.ENTITY);
}};
private final ApplicationEventPublisher applicationEventPublisher;
@PostContextAutowired
private MultiDBTransactionManager multiDBTransactionManager;
public DbmsChangeTrackerComponent(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
@PostContextConstruct(priority = 10)
public void init() throws Exception {
for (Connection conn : multiDBTransactionManager.getActiveConnections()) {
IntegryCustomerDB customerDB = IntegryCustomerDB.parse(conn.getDbName());
activeChangeTrackers.put(customerDB, new DbmsChangeTracker(conn.getProfileName()));
}
enableAllChangeTracking();
}
private void enableAllChangeTracking() throws Exception {
for (Map.Entry<IntegryCustomerDB, DbmsChangeTracker> entrySet : activeChangeTrackers.entrySet()) {
final IntegryCustomerDB customerDB = entrySet.getKey();
final DbmsChangeTracker dbmsChangeTracker = entrySet.getValue();
try {
dbmsChangeTracker.enableTrackerInDbms();
for (String tableName : trackedTables) {
dbmsChangeTracker.enableTrackerOnTable(tableName);
}
dbmsChangeTracker.disableTrackerOnNotUsedTables(trackedTables);
dbmsChangeTracker.setEventListener(new DbmsChangeTracker.Listener() {
@Override
public void onInsertDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemInserted(customerDB, tableName, primaryKey);
}
@Override
public void onUpdateDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemUpdated(customerDB, tableName, primaryKey);
}
@Override
public void onDeleteDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemDeleted(customerDB, tableName, primaryKey);
}
@Override
public void onTrackingResetted() throws Exception {
requestGlobalReset(customerDB);
}
});
dbmsChangeTracker.startTracking();
} catch (Exception e) {
throw new Exception("Errore durante l'abilitazione del DbmsChangeTracker per il customer: " + customerDB.getValue(), e);
}
}
}
@Scheduled(fixedDelay = 5, timeUnit = TimeUnit.SECONDS)
private void checkAllChanges() throws Exception {
for (DbmsChangeTracker dbmsChangeTracker : activeChangeTrackers.values()) {
try {
dbmsChangeTracker.checkForChanges();
} catch (Exception e) {
logger.error("Errore durante il controllo delle modifiche nel DbmsChangeTracker.", e);
}
}
}
private void onItemInserted(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item inserted in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordInsertedEvent(this, customerDB, tableName, primaryKey));
}
private void onItemUpdated(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item updated in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordUpdatedEvent(this, customerDB, tableName, primaryKey));
}
private void onItemDeleted(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item deleted in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordDeletedEvent(this, customerDB, tableName, primaryKey));
}
private void requestGlobalReset(IntegryCustomerDB customerDB) {
logger.warn("Table tracking resetted in profileDb {} ", customerDB.getValue());
applicationEventPublisher.publishEvent(new TableTrackingResettedEvent(this, customerDB));
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.ems.dbms_change_tracker.component.exception;
public class DbmsChangeTrackerInvalidMinVersionException extends Exception {
private final String tableName;
private final long currentVersion;
private final long minValidVersion;
public DbmsChangeTrackerInvalidMinVersionException(String tableName, long currentVersion, long minValidVersion) {
super("Change Tracking on table " + tableName + " has been reset. Current version: " + currentVersion + ", Min valid version: " + minValidVersion);
this.tableName = tableName;
this.minValidVersion = minValidVersion;
this.currentVersion = currentVersion;
}
public String getTableName() {
return tableName;
}
public long getCurrentVersion() {
return currentVersion;
}
public long getMinValidVersion() {
return minValidVersion;
}
}

View File

@@ -0,0 +1,67 @@
package it.integry.ems.dbms_change_tracker.model;
import it.integry.ems_model.annotation.SqlField;
public class ChangeTrackingConfigDTO {
@SqlField("database_name")
private String databaseName;
@SqlField("is_auto_cleanup_on")
private boolean autoCleanupOn;
@SqlField("retention_period")
private int retentionPeriod;
@SqlField("retention_period_units_desc")
private String retentionPeriodUnit;
// @SqlField("max_cleanup_version")
private Object maxCleanupVersion;
public String getDatabaseName() {
return databaseName;
}
public ChangeTrackingConfigDTO setDatabaseName(String databaseName) {
this.databaseName = databaseName;
return this;
}
public boolean isAutoCleanupOn() {
return autoCleanupOn;
}
public ChangeTrackingConfigDTO setAutoCleanupOn(boolean autoCleanupOn) {
this.autoCleanupOn = autoCleanupOn;
return this;
}
public int getRetentionPeriod() {
return retentionPeriod;
}
public ChangeTrackingConfigDTO setRetentionPeriod(int retentionPeriod) {
this.retentionPeriod = retentionPeriod;
return this;
}
public String getRetentionPeriodUnit() {
return retentionPeriodUnit;
}
public ChangeTrackingConfigDTO setRetentionPeriodUnit(String retentionPeriodUnit) {
this.retentionPeriodUnit = retentionPeriodUnit;
return this;
}
public Object getMaxCleanupVersion() {
return maxCleanupVersion;
}
public ChangeTrackingConfigDTO setMaxCleanupVersion(Object maxCleanupVersion) {
this.maxCleanupVersion = maxCleanupVersion;
return this;
}
}

View File

@@ -0,0 +1,108 @@
package it.integry.ems.dbms_change_tracker.model;
import com.fasterxml.jackson.annotation.JsonValue;
import it.integry.ems_model.entity._enum.IBaseEnum;
import java.util.HashMap;
public class DetectedChangeDataDTO {
private long sysChangeVersion;
private Long sysChangeCreationVersion;
private Operation sysChangeOperation;
private String tableName;
private HashMap<String, Object> primaryKey;
public long getSysChangeVersion() {
return sysChangeVersion;
}
public DetectedChangeDataDTO setSysChangeVersion(long sysChangeVersion) {
this.sysChangeVersion = sysChangeVersion;
return this;
}
public Long getSysChangeCreationVersion() {
return sysChangeCreationVersion;
}
public DetectedChangeDataDTO setSysChangeCreationVersion(Long sysChangeCreationVersion) {
this.sysChangeCreationVersion = sysChangeCreationVersion;
return this;
}
public Operation getSysChangeOperation() {
return sysChangeOperation;
}
public DetectedChangeDataDTO setSysChangeOperation(Operation sysChangeOperation) {
this.sysChangeOperation = sysChangeOperation;
return this;
}
public String getTableName() {
return tableName;
}
public DetectedChangeDataDTO setTableName(String tableName) {
this.tableName = tableName;
return this;
}
public HashMap<String, Object> getPrimaryKey() {
return primaryKey;
}
public DetectedChangeDataDTO setPrimaryKey(HashMap<String, Object> primaryKey) {
this.primaryKey = primaryKey;
return this;
}
public enum Operation implements IBaseEnum<Operation> {
INSERT('I'),
UPDATE('U'),
DELETE('D');
private final char value;
Operation(char value) {
this.value = value;
}
public static Operation from(Object value) {
if (value instanceof String && ((String) value).length() == 1) {
value = ((String) value).charAt(0);
}
char castValue = (char) value;
for (Operation b : Operation.values()) {
if (b.value == castValue)
return b;
}
return null;
}
@JsonValue
public char getValue() {
return this.value;
}
@Override
public Object get() {
return this.value;
}
@Override
public Operation fromInternal(Object val) {
return from(val);
}
@Override
public String toString() {
return String.valueOf(value);
}
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.ems.dbms_change_tracker.model.events;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.event.BaseCustomerDBEvent;
import java.util.HashMap;
public class TableRecordDeletedEvent extends BaseCustomerDBEvent {
private final String tableName;
private final HashMap<String, Object> primaryKey;
public TableRecordDeletedEvent(Object source, IntegryCustomerDB integryCustomerDB, String tableName, HashMap<String, Object> primaryKey) {
super(source, integryCustomerDB);
this.tableName = tableName;
this.primaryKey = primaryKey;
}
public String getTableName() {
return tableName;
}
public HashMap<String, Object> getPrimaryKey() {
return primaryKey;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.ems.dbms_change_tracker.model.events;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.event.BaseCustomerDBEvent;
import java.util.HashMap;
public class TableRecordInsertedEvent extends BaseCustomerDBEvent {
private final String tableName;
private final HashMap<String, Object> primaryKey;
public TableRecordInsertedEvent(Object source, IntegryCustomerDB integryCustomerDB, String tableName, HashMap<String, Object> primaryKey) {
super(source, integryCustomerDB);
this.tableName = tableName;
this.primaryKey = primaryKey;
}
public String getTableName() {
return tableName;
}
public HashMap<String, Object> getPrimaryKey() {
return primaryKey;
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.ems.dbms_change_tracker.model.events;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.event.BaseCustomerDBEvent;
import java.util.HashMap;
public class TableRecordUpdatedEvent extends BaseCustomerDBEvent {
private final String tableName;
private final HashMap<String, Object> primaryKey;
public TableRecordUpdatedEvent(Object source, IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
super(source, customerDB);
this.tableName = tableName;
this.primaryKey = primaryKey;
}
public String getTableName() {
return tableName;
}
public HashMap<String, Object> getPrimaryKey() {
return primaryKey;
}
}

View File

@@ -0,0 +1,11 @@
package it.integry.ems.dbms_change_tracker.model.events;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.event.BaseCustomerDBEvent;
public class TableTrackingResettedEvent extends BaseCustomerDBEvent {
public TableTrackingResettedEvent(Object source, IntegryCustomerDB customerDB) {
super(source, customerDB);
}
}

View File

@@ -28,7 +28,7 @@ public class DevicesRequestInterceptor implements HandlerInterceptor {
RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
if (requestDataDTO.isValidProfileDB() && requestDataDTO.isValidDeviceId()) {
deviceService.updateUsage(requestDataDTO.getApplication(), requestDataDTO.getDeviceId());
deviceService.updateUsage(requestDataDTO.getDeviceId());
}
return true;

View File

@@ -2,15 +2,16 @@ package it.integry.ems.directory;
import com.fasterxml.jackson.databind.node.ArrayNode;
import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.properties.EmsProperties;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.FileItem;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
import it.integry.security.utility.RestUtil;
import org.apache.logging.log4j.LogManager;
@@ -30,6 +31,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
import java.util.TimerTask;
@@ -53,42 +55,44 @@ public class EmailWatcherListener extends TimerTask {
@Override
public synchronized void run() {
try {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(emailListenerInfo.getDatabase())) {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
String flagAttivo = null, username = null, password = null,
imap = null, pop3 = null, pop3Port = null, imapPort = null;
DataSource ds = new DataSource();
ds.initialize(emailListenerInfo.getDatabase());
String[] params = emailListenerInfo.getSetupGestBranch().split("\\|");
if (params.length >= 2) {
flagAttivo = setupGest.getSetup(ds.getConnection(), params[0], params[1], "ATTIVO");
username = setupGest.getSetup(ds.getConnection(), params[0], params[1], "USERNAME");
final HashMap<String, String> setupData = setupGest.getSetupSection(conn, params[0], params[1]);
flagAttivo = UtilityHashMap.getValueIfExists(setupData, "ATTIVO");
username = UtilityHashMap.getValueIfExists(setupData, "USERNAME");
if (UtilityString.isNullOrEmpty(username))
throw new Exception(params[0] + "/" + params[1] + "/USERNAME non configurato correttamente");
password = setupGest.getSetup(ds.getConnection(), params[0], params[1], "PASSWORD");
password = UtilityHashMap.getValueIfExists(setupData, "PASSWORD");
if (UtilityString.isNullOrEmpty(password))
throw new Exception(params[0] + "/" + params[1] + "/PASSWORD non configurato correttamente");
pop3 = setupGest.getSetup(ds.getConnection(), params[0], params[1], "POP3");
pop3 = UtilityHashMap.getValueIfExists(setupData, "POP3");
if (UtilityString.isNullOrEmpty(pop3))
throw new Exception(params[0] + "/" + params[1] + "/POP3 non configurato correttamente");
pop3Port = setupGest.getSetup(ds.getConnection(), params[0], params[1], "POP3_PORT");
pop3Port = UtilityHashMap.getValueIfExists(setupData, "POP3_PORT");
if (UtilityString.isNullOrEmpty(pop3Port))
throw new Exception(params[0] + "/" + params[1] + "/POP3_PORT non configurato correttamente");
imap = setupGest.getSetup(ds.getConnection(), params[0], params[1], "IMAP");
imap = UtilityHashMap.getValueIfExists(setupData, "IMAP");
if (UtilityString.isNullOrEmpty(imap))
throw new Exception(params[0] + "/" + params[1] + "/IMAP non configurato correttamente");
imapPort = setupGest.getSetup(ds.getConnection(), params[0], params[1], "IMAP_PORT");
imapPort = UtilityHashMap.getValueIfExists(setupData, "IMAP_PORT");
if (UtilityString.isNullOrEmpty(imapPort))
throw new Exception(params[0] + "/" + params[1] + "/IMAP_PORT non configurato correttamente");
}
ds.close();
if (!UtilityString.isNullOrEmpty(flagAttivo) && "S".equals(flagAttivo)) {
Properties sysProperties = System.getProperties();
Session session = Session.getDefaultInstance(sysProperties);
@@ -160,7 +164,7 @@ public class EmailWatcherListener extends TimerTask {
String value = response.readEntity(String.class);
String emailDbg = setupGest.getSetup(ds.getConnection(), params[0], params[1], "EMAIL_DBG");
String emailDbg = setupGest.getSetup(conn, params[0], params[1], "EMAIL_DBG");
if (value.charAt(0) == '{') {
ServiceRestResponse respWra = jsonObjectMapper.readValue(value, ServiceRestResponse.class);
if (respWra.getEsito() == EsitoType.KO) {

View File

@@ -5,6 +5,10 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.http.ContentDisposition;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -28,26 +32,26 @@ public class DownloadController {
private MimeTypesHandler mimetypesFileTypeMap;
@RequestMapping(value = "download/{uuid}/{fileName}", method = RequestMethod.GET)
public byte[] download(HttpServletResponse response,
@PathVariable String uuid,
@PathVariable String fileName) throws Exception {
public ResponseEntity<byte[]> download(@PathVariable String uuid,
@PathVariable String fileName) throws Exception {
byte[] fileContent = downloadFileHandlerService.getDownloadFileContent(uuid);
if (fileContent != null) {
String filename = downloadFileHandlerService.getDownloadFileName(uuid);
String mimeType = Files.probeContentType(Paths.get(fileName));
MediaType mediaType = mimetypesFileTypeMap.getContentType(fileName);
response.setContentType(mimeType);
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
response.setContentLength(fileContent.length);
return fileContent;
return ResponseEntity.ok()
.contentType(mediaType)
.contentLength(fileContent.length)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename(filename)
.build()
.toString())
.body(fileContent);
}
response.sendError(404, "File non trovato");
return null;
return ResponseEntity.notFound().build();
}
}

View File

@@ -8,7 +8,6 @@ import it.integry.ems.utility.UtilityFile;
import it.integry.ems_model.entity.StbFilesAttached;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.io.File;
@@ -16,7 +15,6 @@ import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@Service
public class DownloadFileHandlerService {
@@ -26,12 +24,6 @@ public class DownloadFileHandlerService {
private final HashMap<String, CachedFileDto> mFileMap = new HashMap<>();
@Scheduled(fixedDelay = 1, timeUnit = TimeUnit.HOURS, zone = "Europe/Rome")
public void clean() {
UtilityFile.cleanDirectory(getTempPath(), 1, "");
}
public DownloadFileDto generateDownloadItem(File file) throws IOException {
return generateDownloadItem(file.getName(), FileUtils.readFileToByteArray(file), false);
}

View File

@@ -1,30 +0,0 @@
package it.integry.ems.dto;
import java.util.Objects;
public class ArticoloPartitaCommessaDTO extends ArticoloPartitaDTO {
private String codJcom;
@Override
public boolean equals(Object o) {
if (!(o instanceof ArticoloPartitaCommessaDTO)) return false;
if (!super.equals(o)) return false;
ArticoloPartitaCommessaDTO that = (ArticoloPartitaCommessaDTO) o;
return Objects.equals(getCodJcom(), that.getCodJcom());
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), getCodJcom());
}
public String getCodJcom() {
return codJcom;
}
public ArticoloPartitaCommessaDTO setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.dto;
import java.time.LocalDateTime;
import java.util.Date;
public class ExtendedStbActivity {
@@ -14,11 +15,9 @@ public class ExtendedStbActivity {
private String userCreator;
private String note;
private String activityDescription;
private Date dataInsAct;
private int priorita;
private Date alarmDate;
private Date alarmTime;
private Date oraInsAct;
private LocalDateTime alarmTime;
private LocalDateTime oraInsAct;
private String activityTypeId;
private String parentActivityId;
private StbActivityEmailObject emailObject;
@@ -116,15 +115,6 @@ public class ExtendedStbActivity {
return this;
}
public Date getDataInsAct() {
return dataInsAct;
}
public ExtendedStbActivity setDataInsAct(Date dataInsAct) {
this.dataInsAct = dataInsAct;
return this;
}
public int getPriorita() {
return priorita;
}
@@ -134,29 +124,20 @@ public class ExtendedStbActivity {
return this;
}
public Date getAlarmDate() {
return alarmDate;
}
public ExtendedStbActivity setAlarmDate(Date alarmDate) {
this.alarmDate = alarmDate;
return this;
}
public Date getAlarmTime() {
public LocalDateTime getAlarmTime() {
return alarmTime;
}
public ExtendedStbActivity setAlarmTime(Date alarmTime) {
public ExtendedStbActivity setAlarmTime(LocalDateTime alarmTime) {
this.alarmTime = alarmTime;
return this;
}
public Date getOraInsAct() {
public LocalDateTime getOraInsAct() {
return oraInsAct;
}
public ExtendedStbActivity setOraInsAct(Date oraInsAct) {
public ExtendedStbActivity setOraInsAct(LocalDateTime oraInsAct) {
this.oraInsAct = oraInsAct;
return this;
}

View File

@@ -3,7 +3,7 @@ package it.integry.ems.dynamic_cache;
import it.integry.ems.expansion.RunnableArgsWithReturn;
import it.integry.ems.expansion.RunnableWithReturn;
import it.integry.ems.looper.service.LooperService;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -37,8 +37,7 @@ public class DynamicCacheService {
DATI_AZIENDA_KEY,
ENTITY_LOGGER_SETUP,
GRIGLIA_ACQUISTO_KEY,
ENTITY_SYNC_KEY,
STB_GEST_SETUP_KEY
ENTITY_SYNC_KEY
}
public void addItem(Keys key, int invalidateTimeInMins, RunnableWithReturn<Object> refreshAction) {
@@ -51,11 +50,11 @@ public class DynamicCacheService {
List<String> finalDbNames = dbNames.stream().map(String::toLowerCase).collect(Collectors.toList());
RunnableWithReturn<Object> internalRefreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections()
Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
.collect(Collectors.groupingBy(AvailableConnectionModel::getDbName));
final HashMap<String, T> cachedDataByDB = new HashMap<>();
@@ -83,11 +82,11 @@ public class DynamicCacheService {
RunnableWithReturn<Object> refreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections()
Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
.collect(Collectors.groupingBy(AvailableConnectionModel::getDbName));
final HashMap<String, List<? extends EntityBase>> cachedEntitiesByDB = new HashMap<>();
@@ -138,11 +137,11 @@ public class DynamicCacheService {
RunnableWithReturn<Object> refreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections()
Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
.collect(Collectors.groupingBy(AvailableConnectionModel::getDbName));
final HashMap<String, List<?>> cacheQueryByDB = new HashMap<>();

View File

@@ -0,0 +1,322 @@
package it.integry.ems.dynamic_cache;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.dbms_change_tracker.component.DbmsChangeTrackerComponent;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordDeletedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordInsertedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableRecordUpdatedEvent;
import it.integry.ems.dbms_change_tracker.model.events.TableTrackingResettedEvent;
import it.integry.ems.dto.EntityHierarchy;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityPropertyHolder;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityQuery;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Component
public class EntityCacheComponent implements ApplicationListener {
private final Logger logger = LogManager.getLogger();
private final DbmsChangeTrackerComponent dbmsChangeTrackerComponent;
private final EntityPropertyHolder entityPropertyHolder;
private final HashMap<IntegryCustomerDB, ConcurrentHashMap<String, ConcurrentHashMap<HashMap<String, Object>, EntityBase>>> entityCache = new HashMap<>();
// Lock per IntegryCustomerDB per garantire accessi sincronizzati alla cache di quel customer
private final ConcurrentHashMap<IntegryCustomerDB, Object> cacheLocks = new ConcurrentHashMap<>();
private Object getCacheLock(IntegryCustomerDB customerDB) {
cacheLocks.putIfAbsent(customerDB, new Object());
return cacheLocks.get(customerDB);
}
private final HashMap<String, Class<? extends EntityBase>> enabledEntities = new HashMap<String, Class<? extends EntityBase>>() {{
put(MtbDepo.ENTITY, MtbDepo.class);
put(MtbDepoPosizioni.ENTITY, MtbDepoPosizioni.class);
put(StbEditLimit.ENTITY, StbEditLimit.class);
put(StbGestSetup.ENTITY, StbGestSetup.class);
put(StbGestSetupDepo.ENTITY, StbGestSetupDepo.class);
put(StbUser.ENTITY, StbUser.class);
put(WtbDepo.ENTITY, WtbDepo.class);
put(WtbGestSetupUser.ENTITY, WtbGestSetupUser.class);
put(WtbClie.ENTITY, WtbClie.class);
}};
public EntityCacheComponent(DbmsChangeTrackerComponent dbmsChangeTrackerComponent, EntityPropertyHolder entityPropertyHolder) {
this.dbmsChangeTrackerComponent = dbmsChangeTrackerComponent;
this.entityPropertyHolder = entityPropertyHolder;
}
@PostContextAutowired
private MultiDBTransactionManager multiDBTransactionManager;
@PostContextConstruct
private void init() throws Exception {
if (UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer())
return;
for (Connection conn : multiDBTransactionManager.getActiveConnections()) {
IntegryCustomerDB customerDB = IntegryCustomerDB.parse(conn.getDbName());
if (customerDB == null)
throw new RuntimeException("Impossibile inizializzare IntegryCustomerDB per il database: " + conn.getDbName());
for (Map.Entry<String, Class<? extends EntityBase>> enabledEntity : enabledEntities.entrySet()) {
String tableName = enabledEntity.getKey();
refreshCacheForEntity(conn, customerDB, tableName);
}
}
}
private void refreshCacheGlobal(IntegryCustomerDB customerDB) throws Exception {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(customerDB)) {
Connection conn = mdb.getPrimaryConnection();
for (Map.Entry<String, Class<? extends EntityBase>> enabledEntity : enabledEntities.entrySet()) {
String tableName = enabledEntity.getKey();
refreshCacheForEntity(conn, customerDB, tableName);
}
}
}
private void refreshCacheForEntity(IntegryCustomerDB customerDB, String tableName) throws Exception {
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(customerDB)) {
Connection conn = mdb.getPrimaryConnection();
refreshCacheForEntity(conn, customerDB, tableName);
}
}
private void refreshCacheForEntity(Connection connection, IntegryCustomerDB customerDB, String tableName) throws Exception {
// Sincronizziamo l'intera operazione di refresh per il customerDB per evitare accessi concorrenti
synchronized (getCacheLock(customerDB)) {
Class<? extends EntityBase> clazz = enabledEntities.get(tableName);
// if (clazz == null)
// throw new RuntimeException("Entity cache is not enabled for table " + tableName);
entityCache.putIfAbsent(customerDB, new ConcurrentHashMap<>());
entityCache.get(customerDB).remove(tableName);
ConcurrentHashMap<HashMap<String, Object>, EntityBase> entities = retrieveEntityList(connection, tableName, clazz);
entityCache.get(customerDB).put(tableName, entities);
logger.trace(String.format("[%s] Cached %d records for entity %s",
customerDB.getValue(),
entities.size(),
clazz.getSimpleName()));
}
}
public <T extends EntityBase> List<T> getCachedEntitiesList(IntegryCustomerDB customerDB, String tableName, Predicate<T> filterPredicate) {
return getCachedEntitiesStream(customerDB, tableName, filterPredicate)
.collect(Collectors.toList());
}
public <T extends EntityBase> Stream<T> getCachedEntitiesStream(IntegryCustomerDB customerDB, String tableName, Predicate<T> filterPredicate) {
// Per evitare accessi concorrenti leggiamo/snapshottiamo la cache sotto lock per quel customerDB
Stream<T> snapshot;
synchronized (getCacheLock(customerDB)) {
if (!isCacheEnabled(customerDB, tableName)) {
try {
refreshCacheForEntity(customerDB, tableName);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// prendo un'istantanea degli oggetti clonati per poter lavorare fuori dal lock
snapshot = entityCache.get(customerDB)
.get(tableName)
.values()
.parallelStream()
.map(x -> (T) x.clone());
if (filterPredicate != null)
snapshot = snapshot.filter(filterPredicate);
}
return snapshot;
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof TableRecordInsertedEvent) {
handleRecordInserted((TableRecordInsertedEvent) event);
} else if (event instanceof TableRecordUpdatedEvent) {
handleRecordUpdated((TableRecordUpdatedEvent) event);
} else if (event instanceof TableRecordDeletedEvent) {
handleRecordDeleted((TableRecordDeletedEvent) event);
} else if (event instanceof TableTrackingResettedEvent) {
try {
handleTableTrackingResetted((TableTrackingResettedEvent) event);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
private void handleRecordInserted(TableRecordInsertedEvent event) {
if (!isCacheEnabled(event.getCustomerDB(), event.getTableName()))
return;
HashMap<String, Object> entityPrimaryKey = convertSqlMapToEntityMap(event.getPrimaryKey(), enabledEntities.get(event.getTableName()));
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(event.getCustomerDB())) {
EntityBase newItem = retrieveEntityItem(mdb.getPrimaryConnection(), event.getTableName(),
enabledEntities.get(event.getTableName()),
event.getPrimaryKey());
// sincronizziamo la modifica per il customerDB
synchronized (getCacheLock(event.getCustomerDB())) {
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void handleRecordUpdated(TableRecordUpdatedEvent event) {
if (!isCacheEnabled(event.getCustomerDB(), event.getTableName()))
return;
HashMap<String, Object> entityPrimaryKey = convertSqlMapToEntityMap(event.getPrimaryKey(), enabledEntities.get(event.getTableName()));
try (MultiDBTransactionManager mdb = new MultiDBTransactionManager(event.getCustomerDB())) {
EntityBase newItem = retrieveEntityItem(mdb.getPrimaryConnection(), event.getTableName(),
enabledEntities.get(event.getTableName()),
event.getPrimaryKey());
// sincronizziamo la modifica per il customerDB
synchronized (getCacheLock(event.getCustomerDB())) {
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void handleRecordDeleted(TableRecordDeletedEvent event) {
if (!isCacheEnabled(event.getCustomerDB(), event.getTableName()))
return;
HashMap<String, Object> entityPrimaryKey = convertSqlMapToEntityMap(event.getPrimaryKey(), enabledEntities.get(event.getTableName()));
// sincronizziamo la rimozione per il customerDB
final EntityBase removedItem;
synchronized (getCacheLock(event.getCustomerDB())) {
removedItem = entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.remove(entityPrimaryKey);
}
}
private void handleTableTrackingResetted(TableTrackingResettedEvent event) throws Exception {
// reset e refresh sono eseguiti in modo sincronizzato per quel customer
resetTablesCache(event.getCustomerDB());
refreshCacheGlobal(event.getCustomerDB());
}
private ConcurrentHashMap<HashMap<String, Object>, EntityBase> retrieveEntityList(Connection connection, String tableName, Class<? extends EntityBase> clazz) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = "SELECT * FROM " + tableName;
List<? extends EntityBase> objects = UtilityDB.executeSimpleQueryDTO(connection, sql, clazz);
if (objects == null)
objects = new ArrayList<>();
final List<EntityHierarchy.Field> pkFields = entityPropertyHolder.getEntityFields(clazz, EntityHierarchy.Field::isPrimaryKey);
ConcurrentHashMap<HashMap<String, Object>, EntityBase> objectsMap = new ConcurrentHashMap<>();
for (EntityBase object : objects) {
HashMap<String, Object> pkMap = new HashMap<>();
for (EntityHierarchy.Field pkField : pkFields) {
Object pkValue = pkField.getField().get(object);
pkMap.put(pkField.getFieldName(), pkValue);
}
objectsMap.put(pkMap, object);
}
return objectsMap;
}
private EntityBase retrieveEntityItem(Connection connection, String tableName, Class<?> clazz, HashMap<String, Object> primaryKey) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = "SELECT * FROM " + tableName + "\n" +
" WHERE " + UtilityQuery.concatFieldsInWhereCond(primaryKey);
final EntityBase object = (EntityBase) UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, clazz);
return object;
}
private HashMap<String, Object> convertSqlMapToEntityMap(HashMap<String, Object> sqlMap, Class<? extends EntityBase> clazz) {
HashMap<String, Object> entityMap = new HashMap<>();
for (Map.Entry<String, Object> entry : sqlMap.entrySet()) {
String fieldName = entityPropertyHolder.getEntityFields(clazz, f -> f.isSqlField() && f.getSqlField().value().equals(entry.getKey()))
.stream()
.findFirst()
.map(EntityHierarchy.Field::getFieldName)
.orElse(entry.getKey());
entityMap.put(fieldName, entry.getValue());
}
return entityMap;
}
private void resetTableCache(IntegryCustomerDB customerDB, String tableName) {
synchronized (getCacheLock(customerDB)) {
if (entityCache.containsKey(customerDB) && entityCache.get(customerDB).containsKey(tableName)) {
entityCache.get(customerDB).remove(tableName);
}
}
}
private void resetTablesCache(IntegryCustomerDB customerDB) {
// sincronizziamo la rimozione dell'intera cache per il customer
synchronized (getCacheLock(customerDB)) {
entityCache.remove(customerDB);
}
}
private boolean isCacheEnabled(IntegryCustomerDB customerDB, String tableName) {
return (entityCache.containsKey(customerDB) && entityCache.get(customerDB).containsKey(tableName)) ||
!(UtilityDebug.isDebugExecution() || UtilityDebug.isIntegryServer());
}
}

View File

@@ -1,371 +0,0 @@
package it.integry.ems.entity_logger.db_schema_manager.component;
import it.integry.ems.entity_logger.db_schema_manager.dto.ForeignKeyDependency;
import it.integry.ems.entity_logger.db_schema_manager.dto.ForeignKeyDependencyReport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class SQLServerForeignKeyManager {
private final Logger logger = LogManager.getLogger();
private Connection connection;
private boolean disableForeignKeyChecks;
public SQLServerForeignKeyManager(Connection connection) {
this(connection, false);
}
public SQLServerForeignKeyManager(Connection connection, boolean disableForeignKeyChecks) {
this.connection = connection;
this.disableForeignKeyChecks = disableForeignKeyChecks;
}
/**
* Aggiorna una foreign key e tutte le sue dipendenze in un'unica transazione
*
* @param tableName Nome della tabella principale
* @param columnName Nome della colonna che contiene la chiave primaria
* @param oldValue Valore attuale della chiave
* @param newValue Nuovo valore della chiave
* @return true se l'operazione è completata con successo
* @throws SQLException in caso di errore
*/
public <T> boolean updateForeignKeyWithDependencies(String tableName, String columnName,
T oldValue, T newValue) throws SQLException {
boolean originalAutoCommit = connection.getAutoCommit();
List<String> disabledConstraints = new ArrayList<>();
try {
// Disabilita auto-commit per gestire la transazione manualmente
connection.setAutoCommit(false);
logger.info(String.format("Inizio aggiornamento FK: %s.%s da %s a %s",
tableName, columnName, oldValue, newValue));
// 1. Disabilita i vincoli foreign key se richiesto
if (disableForeignKeyChecks) {
disabledConstraints = disableForeignKeyConstraints(tableName, columnName);
logger.info(String.format("Disabilitati %d vincoli foreign key", disabledConstraints.size()));
}
// 2. Trova tutte le dipendenze
List<ForeignKeyDependency> dependencies = findAllDependencies(tableName, columnName);
logger.info(String.format("Trovate %d dipendenze da aggiornare", dependencies.size()));
if (disableForeignKeyChecks) {
// Se i vincoli sono disabilitati, possiamo aggiornare in qualsiasi ordine
// Aggiorniamo prima la tabella principale per semplicità
updateMainTable(tableName, columnName, oldValue, newValue);
// Poi aggiorniamo tutte le tabelle dipendenti
for (ForeignKeyDependency dependency : dependencies) {
updateDependentTable(dependency, oldValue, newValue);
}
} else {
// Ordine normale: prima le dipendenti, poi la principale
for (ForeignKeyDependency dependency : dependencies) {
updateDependentTable(dependency, oldValue, newValue);
}
updateMainTable(tableName, columnName, oldValue, newValue);
}
// 3. Riabilita i vincoli foreign key se erano stati disabilitati
if (disableForeignKeyChecks && !disabledConstraints.isEmpty()) {
enableForeignKeyConstraints(disabledConstraints);
logger.info("Vincoli foreign key riabilitati");
// 4. Verifica l'integrità dei dati dopo aver riabilitato i vincoli
if (!checkConstraintIntegrity(disabledConstraints)) {
throw new SQLException("Violazione dell'integrità referenziale dopo l'aggiornamento");
}
}
// Commit della transazione
connection.commit();
logger.info("Aggiornamento completato con successo");
return true;
} catch (SQLException e) {
// Rollback in caso di errore
try {
connection.rollback();
logger.error("Errore durante l'aggiornamento, rollback eseguito: " + e.getMessage(), e);
// Se i vincoli erano stati disabilitati, prova a riabilitarli anche dopo il rollback
if (disableForeignKeyChecks && !disabledConstraints.isEmpty()) {
try {
enableForeignKeyConstraints(disabledConstraints);
logger.info("Vincoli foreign key riabilitati dopo rollback");
} catch (SQLException enableEx) {
logger.error("ATTENZIONE: Impossibile riabilitare i vincoli dopo rollback: " + enableEx.getMessage(), enableEx);
}
}
} catch (SQLException rollbackEx) {
logger.error("Errore durante il rollback: " + rollbackEx.getMessage(), rollbackEx);
}
throw e;
} finally {
// Ripristina l'auto-commit originale
connection.setAutoCommit(originalAutoCommit);
}
}
/**
* Disabilita tutti i vincoli foreign key che referenziano la tabella/colonna specificata
*/
private List<String> disableForeignKeyConstraints(String tableName, String columnName) throws SQLException {
List<String> disabledConstraints = new ArrayList<>();
List<ForeignKeyDependency> dependencies = findAllDependencies(tableName, columnName);
for (ForeignKeyDependency dependency : dependencies) {
String disableQuery = String.format(
"ALTER TABLE [%s].[%s] NOCHECK CONSTRAINT [%s]",
dependency.getDependentSchema(),
dependency.getDependentTable(),
dependency.getConstraintName()
);
try (Statement stmt = connection.createStatement()) {
stmt.execute(disableQuery);
disabledConstraints.add(String.format("%s.%s.%s",
dependency.getDependentSchema(),
dependency.getDependentTable(),
dependency.getConstraintName()));
logger.trace(String.format("Disabilitato vincolo: %s", dependency.getConstraintName()));
}
}
return disabledConstraints;
}
/**
* Riabilita i vincoli foreign key precedentemente disabilitati
*/
private void enableForeignKeyConstraints(List<String> constraintIdentifiers) throws SQLException {
for (String constraintId : constraintIdentifiers) {
String[] parts = constraintId.split("\\.");
if (parts.length != 3) {
logger.warn("Formato constraint identifier non valido: " + constraintId);
continue;
}
String schema = parts[0];
String table = parts[1];
String constraint = parts[2];
String enableQuery = String.format(
"ALTER TABLE [%s].[%s] CHECK CONSTRAINT [%s]",
schema, table, constraint
);
try (Statement stmt = connection.createStatement()) {
stmt.execute(enableQuery);
logger.trace(String.format("Riabilitato vincolo: %s", constraint));
}
}
}
/**
* Verifica l'integrità dei vincoli dopo averli riabilitati
*/
private boolean checkConstraintIntegrity(List<String> constraintIdentifiers) throws SQLException {
boolean allValid = true;
for (String constraintId : constraintIdentifiers) {
String[] parts = constraintId.split("\\.");
if (parts.length != 3) continue;
String schema = parts[0];
String table = parts[1];
String constraint = parts[2];
// Verifica se ci sono violazioni del vincolo
String checkQuery = String.format("SELECT COUNT(*) as violations\n" +
" FROM [%s].[%s] child\n" +
" LEFT JOIN (\n" +
" SELECT fkc.referenced_object_id, fkc.referenced_column_id,\n" +
" fkc.parent_object_id, fkc.parent_column_id\n" +
" FROM sys.foreign_key_columns fkc\n" +
" INNER JOIN sys.foreign_keys fk ON fkc.constraint_object_id = fk.object_id\n" +
" WHERE fk.name = '%s'\n" +
" ) fk_info ON 1=1\n" +
" LEFT JOIN sys.tables ref_table ON fk_info.referenced_object_id = ref_table.object_id\n" +
" LEFT JOIN sys.schemas ref_schema ON ref_table.schema_id = ref_schema.schema_id\n" +
" WHERE child.[%s] IS NOT NULL\n" +
" AND NOT EXISTS (\n" +
" SELECT 1 FROM [%s].[%s] parent\n" +
" WHERE parent.[%s] = child.[%s]\n" +
" )", schema, table, constraint,
"temp_col", // Questo dovrebbe essere sostituito con la colonna effettiva
"temp_schema", "temp_table", "temp_parent_col", "temp_col");
// Query semplificata per il check di integrità
String simpleCheckQuery = String.format(
"DBCC CHECKCONSTRAINTS('[%s].[%s].[%s]') WITH ALL_CONSTRAINTS",
schema, table, constraint
);
try (Statement stmt = connection.createStatement()) {
try (ResultSet rs = stmt.executeQuery("SELECT 1")) {
// Se la query non solleva eccezioni, il vincolo è valido
logger.trace(String.format("Vincolo %s superato controllo integrità", constraint));
} catch (SQLException e) {
logger.warn(String.format("Violazione integrità per vincolo %s: %s", constraint, e.getMessage()));
allValid = false;
}
}
}
return allValid;
}
/**
* Trova tutte le dipendenze foreign key di una tabella/colonna
*/
private List<ForeignKeyDependency> findAllDependencies(String tableName, String columnName) throws SQLException {
List<ForeignKeyDependency> dependencies = new ArrayList<>();
String query = "SELECT \n" +
" fk.name AS constraint_name,\n" +
" OBJECT_SCHEMA_NAME(fk.parent_object_id) AS dependent_schema,\n" +
" OBJECT_NAME(fk.parent_object_id) AS dependent_table,\n" +
" COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS dependent_column,\n" +
" OBJECT_SCHEMA_NAME(fk.referenced_object_id) AS referenced_schema,\n" +
" OBJECT_NAME(fk.referenced_object_id) AS referenced_table,\n" +
" COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS referenced_column\n" +
" FROM sys.foreign_keys fk\n" +
" INNER JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id\n" +
" WHERE OBJECT_NAME(fk.referenced_object_id) = ?\n" +
" AND COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) = ?\n" +
" ORDER BY dependent_table";
try (PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setString(1, tableName);
stmt.setString(2, columnName);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
ForeignKeyDependency dependency = new ForeignKeyDependency(
rs.getString("constraint_name"),
rs.getString("dependent_schema"),
rs.getString("dependent_table"),
rs.getString("dependent_column"),
rs.getString("referenced_schema"),
rs.getString("referenced_table"),
rs.getString("referenced_column")
);
dependencies.add(dependency);
}
}
}
return dependencies;
}
/**
* Aggiorna una tabella dipendente
*/
private void updateDependentTable(ForeignKeyDependency dependency, Object oldValue, Object newValue) throws SQLException {
String updateQuery = String.format(
"UPDATE [%s].[%s] SET [%s] = ? WHERE [%s] = ?",
dependency.getDependentSchema(),
dependency.getDependentTable(),
dependency.getDependentColumn(),
dependency.getDependentColumn()
);
try (PreparedStatement stmt = connection.prepareStatement(updateQuery)) {
stmt.setObject(1, newValue);
stmt.setObject(2, oldValue);
int rowsAffected = stmt.executeUpdate();
logger.info(String.format("Aggiornate %d righe in %s.%s",
rowsAffected, dependency.getDependentTable(), dependency.getDependentColumn()));
}
}
/**
* Aggiorna la tabella principale
*/
private void updateMainTable(String tableName, String columnName, Object oldValue, Object newValue) throws SQLException {
String updateQuery = String.format("UPDATE [%s] SET [%s] = ? WHERE [%s] = ?",
tableName, columnName, columnName);
try (PreparedStatement stmt = connection.prepareStatement(updateQuery)) {
stmt.setObject(1, newValue);
stmt.setObject(2, oldValue);
int rowsAffected = stmt.executeUpdate();
logger.info(String.format("Aggiornate %d righe nella tabella principale %s.%s",
rowsAffected, tableName, columnName));
}
}
/**
* Verifica se un valore esiste già come chiave primaria
*/
public boolean checkIfValueExists(String tableName, String columnName, Object value) throws SQLException {
String query = String.format("SELECT COUNT(*) FROM [%s] WHERE [%s] = ?", tableName, columnName);
try (PreparedStatement stmt = connection.prepareStatement(query)) {
stmt.setObject(1, value);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
return rs.getInt(1) > 0;
}
}
}
return false;
}
/**
* Ottiene un rapporto dettagliato delle dipendenze prima dell'aggiornamento
*/
public ForeignKeyDependencyReport getDependencyReport(String tableName, String columnName, Object value) throws SQLException {
List<ForeignKeyDependency> dependencies = findAllDependencies(tableName, columnName);
ForeignKeyDependencyReport report = new ForeignKeyDependencyReport();
for (ForeignKeyDependency dependency : dependencies) {
int count = countDependentRecords(dependency, value);
report.addDependency(dependency, count);
}
return report;
}
private int countDependentRecords(ForeignKeyDependency dependency, Object value) throws SQLException {
String countQuery = String.format(
"SELECT COUNT(*) FROM [%s].[%s] WHERE [%s] = ?",
dependency.getDependentSchema(),
dependency.getDependentTable(),
dependency.getDependentColumn()
);
try (PreparedStatement stmt = connection.prepareStatement(countQuery)) {
stmt.setObject(1, value);
try (ResultSet rs = stmt.executeQuery()) {
return rs.next() ? rs.getInt(1) : 0;
}
}
}
// Setter per modificare il comportamento sui vincoli FK
public void setDisableForeignKeyChecks(boolean disableForeignKeyChecks) {
this.disableForeignKeyChecks = disableForeignKeyChecks;
}
public boolean isDisableForeignKeyChecks() {
return disableForeignKeyChecks;
}
}

View File

@@ -1,40 +0,0 @@
package it.integry.ems.entity_logger.db_schema_manager.dto;
public class ForeignKeyDependency {
private final String constraintName;
private final String dependentSchema;
private final String dependentTable;
private final String dependentColumn;
private final String referencedSchema;
private final String referencedTable;
private final String referencedColumn;
public ForeignKeyDependency(String constraintName, String dependentSchema,
String dependentTable, String dependentColumn,
String referencedSchema, String referencedTable,
String referencedColumn) {
this.constraintName = constraintName;
this.dependentSchema = dependentSchema;
this.dependentTable = dependentTable;
this.dependentColumn = dependentColumn;
this.referencedSchema = referencedSchema;
this.referencedTable = referencedTable;
this.referencedColumn = referencedColumn;
}
// Getter methods
public String getConstraintName() { return constraintName; }
public String getDependentSchema() { return dependentSchema; }
public String getDependentTable() { return dependentTable; }
public String getDependentColumn() { return dependentColumn; }
public String getReferencedSchema() { return referencedSchema; }
public String getReferencedTable() { return referencedTable; }
public String getReferencedColumn() { return referencedColumn; }
@Override
public String toString() {
return String.format("%s.%s.%s -> %s.%s.%s",
dependentSchema, dependentTable, dependentColumn,
referencedSchema, referencedTable, referencedColumn);
}
}

View File

@@ -1,37 +0,0 @@
package it.integry.ems.entity_logger.db_schema_manager.dto;
import java.util.HashMap;
import java.util.Map;
public class ForeignKeyDependencyReport {
private final Map<ForeignKeyDependency, Integer> dependencyCount = new HashMap<>();
public void addDependency(ForeignKeyDependency dependency, int count) {
dependencyCount.put(dependency, count);
}
public Map<ForeignKeyDependency, Integer> getDependencies() {
return new HashMap<>(dependencyCount);
}
public int getTotalRecordsAffected() {
return dependencyCount.values().stream().mapToInt(Integer::intValue).sum();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("=== RAPPORTO DIPENDENZE ===\n");
for (Map.Entry<ForeignKeyDependency, Integer> entry : dependencyCount.entrySet()) {
sb.append(String.format("Tabella: %s.%s, Colonna: %s, Record da aggiornare: %d\n",
entry.getKey().getDependentSchema(),
entry.getKey().getDependentTable(),
entry.getKey().getDependentColumn(),
entry.getValue()));
}
sb.append(String.format("TOTALE RECORD DA AGGIORNARE: %d\n", getTotalRecordsAffected()));
return sb.toString();
}
}

View File

@@ -6,7 +6,7 @@ import it.integry.annotations.PostContextConstruct;
import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager;
import it.integry.ems.entity_logger.db_schema_manager.dto.*;
import it.integry.ems.looper.service.LooperService;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -57,7 +57,7 @@ public class EntityLoggerComponent {
private void syncDBScheme() throws Exception {
AvailableConnectionsModel connectionsModel = settingsModel.getDefaultConnectionModel();
AvailableConnectionModel connectionsModel = settingsModel.getDefaultConnectionModel();
if (connectionsModel == null) {
throw new Exception("Impossibile ricavare la default connection");
@@ -107,7 +107,7 @@ public class EntityLoggerComponent {
}
if (settingsModel.getAvailableConnections().stream().noneMatch(x -> x.getDbName().equalsIgnoreCase(destDBName))) {
settingsModel.addAvailableConnection(new AvailableConnectionsModel()
settingsModel.addAvailableConnection(new AvailableConnectionModel()
.setInternalDb(false)
.setHost(dbHost)
.setUsername(dbUsername)
@@ -210,12 +210,12 @@ public class EntityLoggerComponent {
return;
try {
List<AvailableConnectionsModel> connectionsModels = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true);
List<AvailableConnectionModel> connectionsModels = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true);
String historyProfileDB = settingsController.getHistoryProfileDb();
try (MultiDBTransactionManager historyMultiDB = new MultiDBTransactionManager(historyProfileDB)) {
for (AvailableConnectionsModel sourceConnectionModel : connectionsModels) {
for (AvailableConnectionModel sourceConnectionModel : connectionsModels) {
String sql = "SELECT * FROM stb_log_entity_setup" +
" WHERE entity_name <> " + UtilityDB.valueToString(StbLogEntitySetup.ENTITY);

View File

@@ -0,0 +1,8 @@
package it.integry.ems.exception;
public class DistributoreDatabaseNotPresentException extends Exception {
public DistributoreDatabaseNotPresentException() {
super("Distributore database not present yet");
}
}

View File

@@ -0,0 +1,7 @@
package it.integry.ems.exception;
public class InvalidCustomerDbException extends RuntimeException {
public InvalidCustomerDbException(String dbName) {
super("Invalid customer database name: " + dbName + ". Please check your ems_settings.json");
}
}

View File

@@ -0,0 +1,7 @@
package it.integry.ems.exception;
public class InvalidDbNameException extends RuntimeException {
public InvalidDbNameException(String dbName) {
super("Invalid database name: " + dbName + ". Please check your ems_settings.json");
}
}

View File

@@ -0,0 +1,7 @@
package it.integry.ems.exception;
public class InvalidProfileDbException extends RuntimeException {
public InvalidProfileDbException(String profileDb) {
super("Invalid profile db: " + profileDb + ". Please check your ems_settings.json");
}
}

View File

@@ -1,9 +1,6 @@
package it.integry.ems.expansion;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Observable;
import java.util.Observer;
import java.util.*;
public class ObservableArrayList<T> extends Observable {
@@ -122,4 +119,16 @@ public class ObservableArrayList<T> extends Observable {
notifyObservers();
}
@Override
public boolean equals(Object o) {
if (!(o instanceof ObservableArrayList)) return false;
ObservableArrayList<?> that = (ObservableArrayList<?>) o;
return Objects.equals(value, that.value);
}
@Override
public int hashCode() {
return Objects.hashCode(value);
}
}

View File

@@ -1,5 +1,6 @@
package it.integry.ems.expansion;
import java.util.Objects;
import java.util.Observable;
public class ObservableField<T> extends Observable {
@@ -34,4 +35,16 @@ public class ObservableField<T> extends Observable {
super.addObserver((o, arg) -> observerCallback.run());
}
@Override
public boolean equals(Object o) {
if (!(o instanceof ObservableField)) return false;
ObservableField<?> that = (ObservableField<?>) o;
return Objects.equals(value, that.value);
}
@Override
public int hashCode() {
return Objects.hashCode(value);
}
}

View File

@@ -357,8 +357,8 @@ public abstract class BaseEntityExporter implements IEntityExporter {
case EMAIL:
if (UtilityString.isNullOrEmpty(wtbUserInfo.getEmail()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCc()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCcn())) {
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCc()) &&
UtilityString.isNullOrEmpty(wtbUserInfo.getEmailCcn())) {
break;
}
@@ -369,7 +369,8 @@ public abstract class BaseEntityExporter implements IEntityExporter {
entityExportResponse.setMessageContent("Messaggio creato automaticamente: " + "INVIO " + type + " formato " + format);
}
fileSharerSettings = MailService.readParameter(multiDBTransactionManager, null);
fileSharerSettings = ApplicationContextProvider.getApplicationContext().getBean(MailService.class)
.readParameter(multiDBTransactionManager.getPrimaryConnection(), null);
((EmailFileSharerSettings) fileSharerSettings)
.withSubject(entityExportResponse.getMessageSubject())
.withTextMessage(entityExportResponse.getMessageContent())
@@ -403,7 +404,7 @@ public abstract class BaseEntityExporter implements IEntityExporter {
}
}
if (counterTotalSend > 0 && counterFailedSend == counterTotalSend && retException != null) {
if (counterTotalSend > 0 && counterFailedSend == counterTotalSend && retException != null) {
//Se gli invii precedenti sono andati bene usciamo
throw retException;
}
@@ -426,7 +427,7 @@ public abstract class BaseEntityExporter implements IEntityExporter {
try {
MailService mailService = ContextLoader.getCurrentWebApplicationContext().getBean(MailService.class);
mailService.sendInfoMail(multiDBTransactionManager, notificationEmail,
mailService.sendInfoMail(multiDBTransactionManager.getPrimaryConnection(), notificationEmail,
String.format("Esportazione di %s - %s", getType(), getFormat()),
String.format("come da accordi, l'esportazione %s - %s &egrave; stata completata.", getType(), getFormat()));

View File

@@ -51,7 +51,7 @@ public class ExportFromQuery {
userName, type, format));
if (UtilityString.isNullOrEmpty(wtbUsersInfo.getQueryCustom())) {
if (!UtilityString.isNullOrEmpty(wtbUsersInfo.getQueryCustom())) {
query = wtbUsersInfo.getQueryCustom();
}
query = UtilityDB.addwhereCond(query, whereCond, true);

View File

@@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import com.fasterxml.jackson.dataformat.csv.CsvSchema.Column;
import it.integry.common.var.CommonConstants;
import it.integry.ems_model.ImportExport.Interfaces.IExportFormat;
import it.integry.ems_model.ImportExport.Interfaces.IImportFormat;
import it.integry.ems_model.annotation.DtoField;
@@ -64,7 +63,7 @@ public class CsvMapper<T> {
builder.addColumn(new Column(i, columns[i]));
}
builder.setLineSeparator(System.getProperty("line.separator"));
builder.setLineSeparator(System.lineSeparator());
CsvSchema schema = builder.build().withoutQuoteChar();
mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true);

View File

@@ -2,6 +2,7 @@ package it.integry.ems.file_formatter.txt;
import com.annimon.stream.Stream;
import it.integry.ems_model.annotation.DtoField;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -10,6 +11,7 @@ import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -76,8 +78,16 @@ public class TxtMapper<T> {
if (ignorePosition)
stringBuilder.append(value).append(fieldsSplitChar);
else
else {
if ( stringBuilder.length() > 0 && stringBuilder.length() < dtoField.startPosition() ) {
int numChar = dtoField.startPosition() - stringBuilder.length();
for (int i = 0; i < numChar; i++) {
stringBuilder.append(fieldsSplitChar);
}
}
stringBuilder.insert(dtoField.startPosition(), value).append(fieldsSplitChar);
}
} catch (Exception e) {
logger.error(e);
@@ -208,6 +218,8 @@ public class TxtMapper<T> {
if (value != null) {
if (!UtilityString.isNullOrEmpty(dtoField.format()) && value instanceof Date) {
value = new SimpleDateFormat(dtoField.format()).format(value);
} else if (!UtilityString.isNullOrEmpty(dtoField.format()) && value instanceof LocalDate) {
value = UtilityLocalDate.formatDate((LocalDate) value, dtoField.format() );
} else if (!UtilityString.isNullOrEmpty(dtoField.formula()) && value instanceof BigDecimal) {
value = ((BigDecimal) value).setScale(dtoField.scale(), RoundingMode.HALF_DOWN);
String formula = dtoField.formula().replaceAll("this", value.toString());

View File

@@ -2,8 +2,12 @@ package it.integry.ems.javabeans;
import com.fasterxml.jackson.annotation.JsonInclude;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.jpa.TenantContext;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.model.IntegryApplicationEnum;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.user.dto.UserDTO;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityString;
@@ -16,13 +20,15 @@ import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Component
@Scope("request")
@Scope(WebApplicationContext.SCOPE_REQUEST)
public class RequestDataDTO {
private final Logger logger = LogManager.getLogger();
@@ -33,28 +39,39 @@ public class RequestDataDTO {
@Autowired
private ResponseJSONObjectMapper jsonObjectMapper;
@Autowired
private SettingsModel settingsModel;
private String requestURI;
private String requestClientIP;
private String profileDB;
//Indica il codice deposito reale dell'utente che effettua la richiesta, ovvero la posizione fisica dell'utente
private String codMdep;
private Long deviceId;
private String username;
private String password;
private boolean includeNulls = false;
private IntegryApplicationEnum integryApplication = IntegryApplicationEnum.PVM;
private IntegryApplicationEnum integryApplication;
private UserDTO userDTO;
@PostConstruct
public void init() throws IOException, InterruptedException {
if (request != null && request.getQueryString() != null && request.getQueryString().contains(CommonConstants.PROFILE_DB)) {
if (request != null && request.getParameter(CommonConstants.PROFILE_DB) != null) {
profileDB = request.getParameter(CommonConstants.PROFILE_DB);
} else if (request != null && request.getHeader(CommonConstants.PROFILE_DB) != null) {
profileDB = request.getHeader(CommonConstants.PROFILE_DB);
}
if (request != null && request.getHeader(CommonConstants.COD_MDEP) != null) {
codMdep = request.getHeader(CommonConstants.COD_MDEP);
}
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) {
readAuthenticationClaims(authentication);
@@ -89,6 +106,21 @@ public class RequestDataDTO {
} else {
jsonObjectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
}
// Logica di fallback o recupero tenant da sessione/utente
if (profileDB == null || profileDB.isEmpty()) {
profileDB = settingsModel.getDefaultProfile();
}
if (profileDB != null) {
TenantContext.setCurrentTenant(profileDB);
}
}
@PreDestroy
public void destroy() throws Exception {
TenantContext.clear();
}
@@ -98,10 +130,20 @@ public class RequestDataDTO {
.setPassword("sql");
}
public static RequestDataDTO systemMockupData(String profileDb) {
final RequestDataDTO requestDataDTO = systemMockupData();
requestDataDTO.profileDB = profileDb;
return requestDataDTO;
}
public boolean isValidProfileDB() {
return !UtilityString.isNullOrEmpty(profileDB);
}
public boolean isValidCodMdep() {
return !UtilityString.isNullOrEmpty(codMdep);
}
public boolean isValidDeviceId() {
return deviceId != null;
}
@@ -132,6 +174,20 @@ public class RequestDataDTO {
return profileDB;
}
public String getCodMdep() {
return codMdep;
}
public IntegryCustomerDB getCustomerDB() {
if (UtilityString.isNullOrEmpty(profileDB))
return null;
final SettingsModel settingsModel = ApplicationContextProvider.getApplicationContext().getBean(SettingsModel.class);
final String dbName = settingsModel.getDbNameFromProfileDb(profileDB);
return IntegryCustomerDB.parse(dbName);
}
public Long getDeviceId() {
return deviceId;
}

View File

@@ -0,0 +1,56 @@
package it.integry.ems.jpa;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultiTenantDataSource extends AbstractRoutingDataSource {
private final BasicConnectionPool basicConnectionPool;
private final SettingsModel settingsModel;
public MultiTenantDataSource(BasicConnectionPool basicConnectionPool, SettingsModel settingsModel) {
this.basicConnectionPool = basicConnectionPool;
this.settingsModel = settingsModel;
}
@Override
protected Object determineCurrentLookupKey() {
return TenantContext.getCurrentTenant();
}
@Override
public void afterPropertiesSet() {
Map<Object, Object> targetDataSources = new HashMap<>();
List<AvailableConnectionModel> connections = settingsModel.getAvailableConnections(false);
// Imposta il primo come default se necessario, o gestisci il caso null
// DataSource defaultDataSource = null;
for (AvailableConnectionModel model : connections) {
DataSource ds = basicConnectionPool.getDataSource(model.getProfileName());
if (ds != null) {
targetDataSources.put(model.getProfileName().toLowerCase(), ds);
// if (defaultDataSource == null) {
// defaultDataSource = ds;
// }
}
}
this.setTargetDataSources(targetDataSources);
//this.setDefaultTargetDataSource(defaultDataSource);
super.afterPropertiesSet();
}
// Metodo per ricaricare i datasource se vengono aggiunti nuovi tenant a runtime
public void refreshDataSources() {
this.afterPropertiesSet();
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.jpa;
public class TenantContext {
private static final ThreadLocal<String> currentTenant = new ThreadLocal<>();
public static void setCurrentTenant(String tenant) {
if (tenant == null)
throw new IllegalArgumentException("Tenant identifier cannot be null");
currentTenant.set(tenant.toLowerCase());
}
public static String getCurrentTenant() {
return currentTenant.get();
}
public static void clear() {
currentTenant.remove();
}
}

View File

@@ -0,0 +1,10 @@
package it.integry.ems.jpa.entity;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
// Classe base per le entity JPA
}

View File

@@ -0,0 +1,10 @@
package it.integry.ems.jpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.NoRepositoryBean;
@NoRepositoryBean
public interface BaseRepository<T, ID> extends JpaRepository<T, ID> {
// Interfaccia base per i repository
}

View File

@@ -0,0 +1,36 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.MtbAart;
import org.springframework.data.jpa.repository.EntityGraph;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
public interface MtbAartRepository extends BaseRepository<MtbAart, String> {
Optional<MtbAart> findByCodMart(String codMart);
@EntityGraph(attributePaths = {"mtbUntMis"})
Optional<MtbAart> findWithUntMisByCodMart(String codMart);
List<MtbAart> findByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbUntMis"})
List<MtbAart> findWithUntMisByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbUntMis", "mtbAartBarCode"})
List<MtbAart> findWithBarcodeWithUntMisByCodMartIn(List<String> codMarts);
@EntityGraph(attributePaths = {"mtbAartBarCode"})
Optional<MtbAart> findWithBarcodeByCodMart(String codMart);
@Query("SELECT m FROM MtbAart m WHERE m.untMis = 'KG'")
List<MtbAart> findByUntMisKG();
@Query("SELECT m.flagQtaCnfFissa FROM MtbAart m WHERE m.codMart = :codMart")
Optional<String> findFlagQtaCnfFissaByCodMart(@Param("codMart") String codMart);
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.MtbUntMis;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
public interface MtbUntMisRepository extends BaseRepository<MtbUntMis, String> {
Optional<MtbUntMis> findByUntMis(String untMis);
List<MtbUntMis> findByUntMisIn(List<String> untMis);
@Query("SELECT a.mtbUntMis FROM MtbAart a WHERE a.codMart = :codMart")
Optional<MtbUntMis> findByCodMart(@Param("codMart") String codMart);
int countByUntMis(String untMis);
@Query("SELECT u.cifreDec FROM MtbUntMis u WHERE u.flagUnitaKg = :flagUnitaKg")
List<BigDecimal> findCifreDecByFlagUnitaKg(@Param("flagUnitaKg") String flagUnitaKg);
}

View File

@@ -0,0 +1,15 @@
package it.integry.ems.jpa.repository;
import it.integry.ems_model.entity.StbEmail;
import org.springframework.data.jpa.repository.Query;
import java.util.Optional;
public interface StbEmailRepository extends BaseRepository<StbEmail, Integer> {
@Query("SELECT e FROM StbEmail e WHERE e.flagDefault = 'S'")
Optional<StbEmail> findByFlagDefaultTrue();
@Query("SELECT e FROM StbEmail e WHERE UPPER(e.eMail) = UPPER(?1)")
Optional<StbEmail> findByEmailIgnoreCase(String email);
}

View File

@@ -33,6 +33,7 @@ public class JsonObjectMapperConfig {
module.addDeserializer(BigDecimal.class, new BigDecimalDeserialize());
module.addDeserializer(Integer.class, new IntegerDeserializer());
module.addDeserializer(Long.class, new LongDeserializer());
module.addDeserializer(String.class, new StringUnicodeDeserialize());

View File

@@ -1,7 +1,8 @@
package it.integry.ems.license;
import it.integry.common.var.CommonConstants;
import it.integry.ems.javabeans.RequestDataDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
@@ -11,7 +12,6 @@ import java.util.Random;
public class LicenseCheckInterceptor extends HandlerInterceptorAdapter {
@Autowired
private LicenseComponent licenseComponent;
@@ -19,13 +19,9 @@ public class LicenseCheckInterceptor extends HandlerInterceptorAdapter {
HttpServletRequest request,
HttpServletResponse response, Object handler) {
RequestDataDTO requestData = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
String profileDB = null;
if (request != null && request.getQueryString() != null && request.getQueryString().contains(CommonConstants.PROFILE_DB)) {
profileDB = request.getParameter(CommonConstants.PROFILE_DB);
} else if (request != null && request.getHeader(CommonConstants.PROFILE_DB) != null) {
profileDB = request.getHeader(CommonConstants.PROFILE_DB);
}
String profileDB = requestData.getProfileDB();
LicenseStatusDTO licenseStatusDTO = null;
if (profileDB != null) licenseStatusDTO = licenseComponent.getLicenseStatus(profileDB);

View File

@@ -8,7 +8,7 @@ import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@Component
@@ -59,11 +60,11 @@ public class LicenseComponent {
if (!canStart)
return;
List<AvailableConnectionsModel> availableConnectionsModels = settingsModel.getAvailableConnections(true);
List<AvailableConnectionModel> availableConnectionModels = settingsModel.getAvailableConnections(true);
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager()) {
for (AvailableConnectionsModel model : availableConnectionsModels) {
for (AvailableConnectionModel model : availableConnectionModels) {
multiDBTransactionManager.addConnection(model);
}
@@ -105,14 +106,19 @@ public class LicenseComponent {
} else {
List<LicenseStatusDTO> licenses = response.getDTO(new TypeReference<List<LicenseStatusDTO>>() {
});
if (licenses == null) return;
if (licenses == null || licenses.isEmpty()) return;
listAziende.forEach((key, value) -> {
cachedLicenseStatus.remove(key);
licenses.stream().filter(x -> x.getPartIva().equalsIgnoreCase(value))
.findFirst()
.ifPresent(license -> cachedLicenseStatus.put(key, license));
final Optional<LicenseStatusDTO> licenseSearch = licenses.stream().filter(x -> x.getPartIva().equalsIgnoreCase(value))
.findFirst();
if (licenseSearch.isPresent()) {
cachedLicenseStatus.put(key, licenseSearch.get());
} else {
cachedLicenseStatus.put(key, licenses.get(0));
}
});
}

View File

@@ -10,10 +10,13 @@ import java.util.Date;
public class LicenseStatusDTO {
@SqlField("part_iva")
private String partIva;
@SqlField("classe_merito")
private Quality quality;
@SqlField
private Status status;
@SqlField("data_scad_license")
private Date expiringDate;

View File

@@ -11,7 +11,7 @@ import java.util.ArrayList;
import java.util.Random;
@Component
public class LooperService {
public class LooperService {
private final ArrayList<LoopDTO> mLoopsHandler = new ArrayList<>();
private final ArrayList<TaskModel> mLoopsTask = new ArrayList<>();

View File

@@ -17,10 +17,12 @@ import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.ApplicationName;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.types.TypeDbObject;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import it.integry.ems_model.utility.dto.PkTableDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.context.ContextLoader;
@@ -74,6 +76,18 @@ public abstract class BaseMigration implements MigrationModelInterface {
return UtilityDB.executeSimpleQueryDTO(connection, sql, clazz);
}
protected @NotNull <T> List<T> executeQueryOnlyFirstColumn(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstColumn(connection, sql);
}
protected @NotNull HashMap<String, Object> executeQueryOnlyFirstRow(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstRow(connection, sql);
}
protected @NotNull <T> T executeQueryOnlyFirstRowFirstColumn(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
protected void executeStatement(String... sqls) throws SQLException {
executeStatement(connection, sqls);
}
@@ -140,6 +154,10 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
private void alterObject(SqlObjectTypeEnum sqlObject, String objectName, String sql) throws SQLException, IOException {
if (UtilityString.isNullOrEmpty(objectName)) {
throw new IllegalArgumentException("ObjectName in createOrUpdateFunction(), createOrUpdateView(), createOrUpdateTrigger(), createOrUpdateProcedure() cannot be null or empty");
}
executeStatement("IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + sqlObject.toString() + " " + objectName,
sql);
@@ -154,7 +172,20 @@ public abstract class BaseMigration implements MigrationModelInterface {
UtilityDB.createIndex(connection, indexTableDTO);
}
protected void dropIndex(String tableName, String indexName) throws Exception {
protected void createPrimaryKey(PkTableDTO pkTableDTO) throws Exception {
UtilityDB.createPK(connection, pkTableDTO);
}
protected void cloneTable(String sourceTable, String newTable, boolean fillNewTable, boolean dropOldTable, boolean renameNewTable) throws Exception {
UtilityDB.cloneTable(connection, sourceTable, newTable, fillNewTable, dropOldTable, renameNewTable);
}
protected boolean existIndex(String tableName, String indexName) throws SQLException {
return UtilityDB.existIndex(connection, tableName, indexName);
}
protected void dropIndex(String tableName, String indexName) throws SQLException {
UtilityDB.dropIndex(connection, tableName, indexName);
}
@@ -392,6 +423,25 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
}
protected String getSetupValue(String gestName, String section, String keySection) throws SQLException {
String sql = Query.format("SELECT value FROM " + StbGestSetup.ENTITY +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
//Create a getStbGestSetup method to return the entire StbGestSetup object
protected StbGestSetup getStbGestSetup(String gestName, String section, String keySection) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format("SELECT * FROM stb_gest_setup " +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, StbGestSetup.class);
}
protected void deleteSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
@@ -474,6 +524,16 @@ public abstract class BaseMigration implements MigrationModelInterface {
stbGestSetup.manageWithParentConnection(connection);
}
protected void dropSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
.setSection(section)
.setKeySection(keySection);
stbGestSetup.setOperation(OperationType.DELETE);
stbGestSetup.manageWithParentConnection(connection);
}
protected void addAutomatedOperation(BaseScheduledOperationDTO operation) {
new Thread(() -> {
try {
@@ -594,4 +654,38 @@ public abstract class BaseMigration implements MigrationModelInterface {
protected boolean isSqlServer2022() throws Exception {
return getSqlCompatibilityLevel() == DatabaseVersionEnum.SQLServer2022;
}
protected void addDescriptionTable(String tableName, String description) throws SQLException {
if (existsTable(tableName)) {
addDescriptionObject(tableName, TypeDbObject.TABLE, description);
}
}
protected void addDescriptionView(String viewName, String description) throws SQLException {
if (existsView(viewName)) {
addDescriptionObject(viewName, TypeDbObject.VIEW, description);
}
}
private void addDescriptionObject(String objectName, TypeDbObject type, String description) throws SQLException {
String typeString = "TABLE";
if (type == TypeDbObject.VIEW) {
typeString = "VIEW";
}
executeStatement(
Query.format("EXEC sp_addextendedproperty " +
"@name = N'MS_Description', " +
"@value = %s, " +
"@level0type = N'SCHEMA', @level0name = 'dbo', " +
"@level1type = %s, @level1name = %s;", description, typeString, objectName));
}
private void addDescriptionColumn(String tableName, String columnName, String description) throws SQLException {
executeStatement(Query.format("EXEC sp_addextendedproperty 'MS_Description', %s, 'SCHEMA', 'dbo', 'TABLE',%s, 'COLUMN', %s)",
description, tableName, columnName));
}
}

View File

@@ -8,7 +8,7 @@ public enum IntegryCustomer {
IntegryCustomerDB.Agricoper_IlVisone,
IntegryCustomerDB.Agricoper_Luva),
ATI(IntegryCustomerDB.ATI_Finpart),
ATI(IntegryCustomerDB.ATI, IntegryCustomerDB.ATI_Finpart),
Auricchio(IntegryCustomerDB.Auricchio_Auricchio,
IntegryCustomerDB.Auricchio_AuricchioMiki,
IntegryCustomerDB.Auricchio_AuricchioSrl,
@@ -20,6 +20,7 @@ public enum IntegryCustomer {
Biolevante(IntegryCustomerDB.Biolevante_Biolevante,
IntegryCustomerDB.Biolevante_BiolevanteStorico,
IntegryCustomerDB.Biolevante_TenutaSanMartino),
CapelliMonelli(IntegryCustomerDB.CapelliMonelli_CapelliMonelli),
Carelli(IntegryCustomerDB.Carelli_Carelli,
IntegryCustomerDB.Carelli_GestFood,
IntegryCustomerDB.Carelli_Chiuso,
@@ -70,7 +71,8 @@ public enum IntegryCustomer {
Gramm(IntegryCustomerDB.Gramm_Gramm,
IntegryCustomerDB.Gramm_PrimeOlive,
IntegryCustomerDB.Gramm_ProveStage,
IntegryCustomerDB.Gramm_2MHolding),
IntegryCustomerDB.Gramm_2MHolding,
IntegryCustomerDB.Gramm_GrammUsa),
Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica),
Igood(IntegryCustomerDB.Igood_Aida,
IntegryCustomerDB.Igood_Igood,
@@ -117,7 +119,10 @@ public enum IntegryCustomer {
IntegryCustomerDB.Suit_TenutaArianna,
IntegryCustomerDB.Suit_Valpietro),
Tempesta(IntegryCustomerDB.Tempesta_Tempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta),
IntegryCustomerDB.Tempesta_DI,
IntegryCustomerDB.Tempesta_VivaiTempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta_DI
),
Tosca(IntegryCustomerDB.Tosca_Ba,
IntegryCustomerDB.Tosca_Ce,
IntegryCustomerDB.Tosca_Cz,

View File

@@ -1,5 +1,6 @@
package it.integry.ems.migration._base;
import it.integry.ems.exception.InvalidCustomerDbException;
import it.integry.ems_model.utility.UtilityString;
import java.util.Arrays;
@@ -9,7 +10,9 @@ public enum IntegryCustomerDB {
Agricoper_IlVisone("ilvisone"),
Agricoper_Luva("luva"),
ATI("atisrl"),
ATI_Finpart("Finpart"),
Auricchio_Auricchio("auricchio"),
Auricchio_AuricchioMiki("auricchio_miki"),
Auricchio_AuricchioSrl("auricchiosrl"),
@@ -20,16 +23,18 @@ public enum IntegryCustomerDB {
Auricchio_AuricchioSons("auricchiosons"),
Biolevante_Biolevante("biolevante_peppe"),
Biolevante_Biolevante("biolevante"),
Biolevante_BiolevanteStorico("biolevante_storico"),
Biolevante_TenutaSanMartino("tenutasanmartino"),
CapelliMonelli_CapelliMonelli("capelli_monelli"),
Carelli_Carelli("carelli"),
Carelli_GestFood("gestfood"),
Carelli_Chiuso("chiuso"),
Carelli_Format("format"),
Carelli_Murgia("murgia"),
Carelli_MurgiaTest("murgia_test"),
Carelli_Panimal("panimal"),
Carelli_Winact("winact"),
Carelli_Csgr("csgr"),
@@ -88,10 +93,11 @@ public enum IntegryCustomerDB {
Frudis_Frudis("frudis"),
Gramm_Gramm("gramm_peppe"),
Gramm_Gramm("gramm"),
Gramm_PrimeOlive("primeolive"),
Gramm_ProveStage("grammprovestage"),
Gramm_2MHolding("2M_HOLDING"),
Gramm_2MHolding("dueemme"),
Gramm_GrammUsa("gramm_usa"),
Idrotecnica_Idrotecnica("idrotecnica"),
@@ -102,7 +108,7 @@ public enum IntegryCustomerDB {
Igood_ShopService("shop_service"),
Ime_ImeTe("ime_te_peppe"),
Ime_ImeTe("ime_te"),
Integry_Studioml("studioml"),
@@ -122,6 +128,7 @@ public enum IntegryCustomerDB {
Levanplast_Perilflor("perilflor"),
Levanplast_PerilflorSrl("perilflorsrl"),
Levanplast_Levanplast("levanplast"),
Levanplast_Levanplastsrl("levanplastsrl"),
Maggio_MaggioSrl("maggiosrl"),
Maggio_GiovMaggio("giovmaggio"),
@@ -191,7 +198,9 @@ public enum IntegryCustomerDB {
Tempesta_Tempesta("tempesta"),
Tempesta_DI("tempestadi"),
Tempesta_VivaiTempesta("vivaitempesta"),
Tempesta_VivaiTempesta_DI("vivaitempestadi"),
Tosca_Ba("tosca_ba"),
@@ -229,6 +238,6 @@ public enum IntegryCustomerDB {
return Arrays.stream(values()).filter(x -> x.getValue().equalsIgnoreCase(value))
.findFirst()
.orElse(null);
.orElseThrow(() -> new InvalidCustomerDbException(value));
}
}

View File

@@ -1,508 +0,0 @@
package it.integry.ems.migration.dto.common;
import it.integry.ems.migration.dto.SqlObjectTypeEnum;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import java.io.IOException;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDate;
import java.util.ArrayList;
public class MigrationMvwSitArtUdcDetInventarioDTO {
public static void apply(Connection connection) throws Exception {
//Aggiorno i campi barcode_ul_in, barcode_ul_out, posizione_in, posizione_out, cod_mdep_in, cod_mdep_out
updateNewFieldsInMtbColrs(connection);
//Migration di conversione aziende a nuova mvw_sitart_udc_det_inventario
createBackupOfOldView(connection);
dropView(connection, "mvw_sitart_udc_det_inventario");
createNewView(connection);
}
public static void updateNewFieldsInMtbColrs(Connection connection) throws Exception {
executeStatement(connection, "UPDATE mtb_colr\n" +
"SET barcode_ul_in = new_data.barcode_ul_in,\n" +
" barcode_ul_out = new_data.barcode_ul_out,\n" +
" posizione_in = new_data.posizione_in,\n" +
" posizione_out = new_data.posizione_out,\n" +
" cod_mdep_in = new_data.cod_mdep_in,\n" +
" cod_mdep_out = new_data.cod_mdep_out\n" +
"FROM mtb_colr\n" +
" INNER JOIN (SELECT mtb_colt.barcode_ul AS barcode_ul_in,\n" +
" IIF(num_collo_rif IS NOT NULL, mtb_colt_rif.barcode_ul, NULL) AS barcode_ul_out,\n" +
" mtb_colt.posizione AS posizione_in,\n" +
" IIF(num_collo_rif IS NOT NULL, mtb_colt_rif.posizione, NULL) AS posizione_out,\n" +
" mtb_colt.cod_mdep AS cod_mdep_in,\n" +
" IIF(num_collo_rif IS NOT NULL, mtb_colt_rif.cod_mdep, NULL) AS cod_mdep_out,\n" +
"\n" +
" mtb_colr.gestione,\n" +
" mtb_colr.data_collo,\n" +
" mtb_colr.ser_collo,\n" +
" mtb_colr.num_collo,\n" +
" mtb_colr.riga\n" +
"\n" +
" FROM dbo.mtb_colr\n" +
" INNER JOIN dbo.mtb_colt ON mtb_colr.gestione = mtb_colt.gestione AND\n" +
" mtb_colr.data_collo = mtb_colt.data_collo AND\n" +
" mtb_colr.ser_collo = mtb_colt.ser_collo AND\n" +
" mtb_colr.num_collo = mtb_colt.num_collo\n" +
"\n" +
" LEFT OUTER JOIN dbo.mtb_colt mtb_colt_rif\n" +
" ON mtb_colr.gestione_rif = mtb_colt_rif.gestione AND\n" +
" mtb_colr.data_collo_rif = mtb_colt_rif.data_collo AND\n" +
" mtb_colr.ser_collo_rif = mtb_colt_rif.ser_collo AND\n" +
" mtb_colr.num_collo_rif = mtb_colt_rif.num_collo) new_data\n" +
" ON mtb_colr.gestione = new_data.gestione AND\n" +
" mtb_colr.num_collo = new_data.num_collo AND\n" +
" mtb_colr.ser_collo = new_data.ser_collo AND\n" +
" mtb_colr.data_collo = new_data.data_collo AND\n" +
" mtb_colr.riga = new_data.riga");
}
public static void alignGiacenza(Connection connection) throws Exception {
//Creo un collo di scarico vuoto
MtbColt mtbColt = new MtbColt()
.setGestione("L")
.setSerCollo("RT")
.setSegno(-1)
.setDataCollo(LocalDate.now())
.setAnnotazioni("PASSAGGIO NUOVA MVW_SITART_UDC_DET_INVENTARIO")
.setCodMdep(getInternalCodMdep(connection));
mtbColt.setOperation(OperationType.INSERT);
mtbColt.dataCompleting(connection);
mtbColt.manageWithParentConnection(connection);
executeStatement(connection, Query.format(
"INSERT INTO mtb_colr (gestione, ser_collo, num_collo, data_collo, riga, cod_mart, cod_col, cod_tagl, partita_mag, gestione_rif, data_collo_rif, ser_collo_rif, num_collo_rif, datetime_row,\n" +
" cod_jcom, qta_col, num_cnf, qta_cnf, barcode_ul_out, cod_mdep_out, posizione_out)" +
" SELECT {} AS gestione,\n" +
" {} AS ser_collo,\n" +
" {} AS num_collo,\n" +
" CAST({} AS DATE) AS data_collo,\n" +
" ROW_NUMBER() OVER (PARTITION BY (SELECT NULL) ORDER BY v.data_collo) AS riga,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.gestione AS gestion_rif,\n" +
" v.data_collo AS data_collo_rif,\n" +
" v.ser_collo AS ser_collo_rif,\n" +
" v.num_collo AS num_collo_rif,\n" +
" GETDATE() AS datetime_row,\n" +
" v.cod_jcom,\n" +
" v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.barcode_ul AS barcode_ul_out,\n" +
" v.cod_mdep AS cod_mdep_out,\n" +
" v.posizione AS posizione_out\n" +
"FROM mvw_sitart_udc_det_inventario v\n" +
" INNER JOIN (SELECT ser_collo,\n" +
" gestione,\n" +
" data_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" cod_mart,\n" +
" partita_mag,\n" +
" cod_jcom-- Elenca tutte le colonne coinvolte\n" +
" FROM mvw_sitart_udc_det_inventario\n" +
"\n" +
" EXCEPT\n" +
"\n" +
" SELECT ser_collo,\n" +
" gestione,\n" +
" data_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" cod_mart,\n" +
" partita_mag,\n" +
" cod_jcom -- Elenca le stesse colonne dalla vista vecchia\n" +
" FROM mvw_sitart_udc_det_inventario_old) t\n" +
" ON v.num_collo = t.num_collo AND v.data_collo = t.data_collo AND\n" +
" v.ser_collo = t.ser_collo AND v.gestione = t.gestione AND\n" +
" v.cod_mart = t.cod_mart AND v.cod_mdep = t.cod_mdep AND\n" +
" ISNULL(v.partita_mag, '') = ISNULL(t.partita_mag, '') AND\n" +
" ISNULL(v.posizione, '') = ISNULL(t.posizione, '') AND\n" +
" ISNULL(v.cod_jcom, '') = ISNULL(t.cod_jcom, '')" +
" WHERE qta_col > 0",
mtbColt.getGestione(), mtbColt.getSerCollo(), mtbColt.getNumCollo(), mtbColt.getDataCollo()));
}
private static String getInternalCodMdep(Connection connection) throws Exception {
String codMdepAz = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, "SELECT TOP 1 cod_mdep" +
" FROM mtb_depo" +
" INNER JOIN dbo.gtb_anag ga ON mtb_depo.cod_anag = ga.cod_anag" +
" inner join azienda on ga.part_iva = azienda.part_iva");
if(UtilityString.isNullOrEmpty(codMdepAz)) {
codMdepAz = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, "SELECT TOP 1 cod_mdep FROM mtb_depo");
}
return codMdepAz;
}
private static void createBackupOfOldView(Connection connection) throws Exception {
if (existsView(connection, "mvw_sitart_udc_det_inventario_old"))
return;
createOrUpdateView(connection, "mvw_sitart_udc_det_inventario_old", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario_old] AS\n" +
"SELECT UL.gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" UL.cod_mdep,\n" +
" UL.posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" mtb_aart.cod_mgrp AS codGruppo,\n" +
" mtb_grup.descrizione AS Gruppo,\n" +
" mtb_aart.cod_msgr AS CodSgruppo,\n" +
" mtb_sgrp.descrizione AS Sottogruppo,\n" +
" UL.cod_mart,\n" +
" diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" partita_mag,\n" +
" UL.cod_jcom,\n" +
" jtb_comt.descrizione AS commessa,\n" +
" mtb_aart.unt_mis,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" UL.qta_cnf,\n" +
" UL.peso_netto_kg,\n" +
" UL.peso_lordo_kg,\n" +
" UL.cod_jfas\n" +
"FROM [mvw_sitart_udc_det] UL\n" +
" LEFT OUTER JOIN jtb_comt ON UL.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON UL.cod_mdep = mtb_depo_posizioni.cod_mdep AND UL.posizione = mtb_depo_posizioni.posizione,\n" +
" mtb_aart,\n" +
" mtb_grup,\n" +
" mtb_sgrp\n" +
"WHERE UL.cod_mart = mtb_aart.cod_mart\n" +
" AND mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" AND mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" AND qta_col <> 0");
}
private static void createNewView(Connection connection) throws Exception {
if (!existsTable(connection, "stb_multiplier")) {
executeStatement(connection, "CREATE TABLE stb_multiplier\n" +
"(\n" +
" moltiplicatore INT NOT NULL\n" +
")",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (1)",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (-1)");
}
createOrUpdateView(connection, "mvw_mtb_colr_with_giacenza", "CREATE VIEW dbo.mvw_mtb_colr_with_giacenza\n" +
" WITH SCHEMABINDING\n" +
" AS\n" +
"SELECT COUNT_BIG(*) AS c,\n" +
" IIF(moltiplicatore = -1, mtb_colr.barcode_ul_out,\n" +
" mtb_colr.barcode_ul_in) AS barcode_ul,\n" +
" IIF(moltiplicatore = -1, mtb_colr.cod_mdep_out,\n" +
" mtb_colr.cod_mdep_in) AS cod_mdep,\n" +
" IIF(moltiplicatore = -1, mtb_colr.posizione_out,\n" +
" mtb_colr.posizione_in) AS posizione,\n" +
" SUM(mtb_colr.qta_col * moltiplicatore) AS qta_col,\n" +
" SUM(IIF(mtb_aart.flag_qta_cnf_fissa = 'S', mtb_colr.qta_col / mtb_aart.qta_cnf, mtb_colr.num_cnf) *\n" +
" moltiplicatore) AS num_cnf,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" SUM(mtb_colr.peso_netto_kg * moltiplicatore) AS peso_netto_kg,\n" +
" SUM(mtb_colr.peso_lordo_kg * moltiplicatore) AS peso_lordo_kg,\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom) AS cod_jcom,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf AS qta_cnf_anag\n" +
"FROM dbo.mtb_colr\n" +
" INNER JOIN dbo.stb_multiplier ON (moltiplicatore = 1 AND mtb_colr.barcode_ul_in IS NOT NULL) OR\n" +
" (moltiplicatore = -1 AND mtb_colr.barcode_ul_out IS NOT NULL)\n" +
" INNER JOIN dbo.mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
"GROUP BY mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" IIF(moltiplicatore = -1, mtb_colr.barcode_ul_out,\n" +
" mtb_colr.barcode_ul_in),\n" +
" IIF(moltiplicatore = -1, mtb_colr.cod_mdep_out,\n" +
" mtb_colr.cod_mdep_in),\n" +
" IIF(moltiplicatore = -1, mtb_colr.posizione_out,\n" +
" mtb_colr.posizione_in),\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom),\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf");
dropIndex(connection, "mvw_mtb_colr_with_giacenza", "IDX_CLUSTERED_mvw_mtb_colr_with_giacenza");
createIndex(connection, new IndexTableDTO()
.setIndexName("IDX_CLUSTERED_mvw_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setUnique(true)
.setClustered(true)
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("barcode_ul"));
add(new IndexTableDTO.ColumnIndex("posizione"));
add(new IndexTableDTO.ColumnIndex("cod_mdep"));
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
add(new IndexTableDTO.ColumnIndex("cod_jcom"));
}}));
dropIndex(connection, "mvw_mtb_colr_with_giacenza", "IDX_mvw_qta_mtb_colr_with_giacenza");
createIndex(connection, new IndexTableDTO()
.setIndexName("IDX_mvw_qta_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("qta_col"));
add(new IndexTableDTO.ColumnIndex("num_cnf"));
}}));
dropIndex(connection, "mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_mtb_colr_with_giacenza");
createIndex(connection, new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}}));
dropIndex(connection, "mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_giac_mtb_colr_with_giacenza");
createIndex(connection, new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_giac_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}})
.setColumnsInclude("qta_col", "num_cnf"));
executeStatement(connection, "UPDATE STATISTICS dbo.mvw_mtb_colr_with_giacenza");
createOrUpdateView(connection, "mvw_sitart_udc_det_inventario", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario] AS\n" +
" WITH baseMtbColr AS (SELECT c,\n" +
"\n" +
" ROUND(v.qta_col, cifre_dec) AS qta_col,\n" +
" ROUND(v.num_cnf, cifre_dec) AS num_cnf,\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)) AS qta_cnf,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione AS descrizione_gruppo,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione AS descrizione_sottogruppo,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" v.cod_mdep,\n" +
" v.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" v.barcode_ul,\n" +
" v.qta_cnf_anag\n" +
" FROM mvw_mtb_colr_with_giacenza v WITH (NOEXPAND)\n" +
" INNER JOIN mtb_colt\n" +
" ON v.barcode_ul = mtb_colt.barcode_ul\n" +
" INNER JOIN dbo.mtb_unt_mis ON v.unt_mis = mtb_unt_mis.unt_mis\n" +
"\n" +
" INNER JOIN dbo.mtb_grup ON v.cod_mgrp = mtb_grup.cod_mgrp\n" +
" INNER JOIN dbo.mtb_sgrp ON v.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND v.cod_msgr = mtb_sgrp.cod_msgr\n" +
" WHERE qta_col > 0\n" +
" AND (segno = 1 OR (segno = -1 AND cod_dtip IS NULL AND mtb_colt.gestione = 'V'))\n" +
" ),\n" +
" final_stock AS (SELECT v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_mdep AS cod_mdep,\n" +
" v.posizione AS posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" v.cod_mgrp AS codGruppo,\n" +
" v.descrizione_gruppo AS Gruppo,\n" +
" v.cod_msgr AS CodSgruppo,\n" +
" v.descrizione_sottogruppo AS Sottogruppo,\n" +
" v.cod_mart,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.partita_mag,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.cod_jcom,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.cod_jfas,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.segno,\n" +
" v.barcode_ul\n" +
" FROM baseMtbColr v\n" +
"\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON v.cod_mdep = mtb_depo_posizioni.cod_mdep\n" +
" AND v.posizione = mtb_depo_posizioni.posizione)\n" +
"\n" +
" SELECT qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" priorita,\n" +
" codGruppo,\n" +
" Gruppo,\n" +
" CodSgruppo,\n" +
" Sottogruppo,\n" +
" cod_mart,\n" +
" diacod,\n" +
" descrizione_estesa,\n" +
" partita_mag,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" cod_jcom,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" unt_mis,\n" +
" segno,\n" +
" barcode_ul\n" +
" FROM final_stock");
}
private static boolean existsView(Connection connection, String objectName) throws SQLException {
return UtilityDB.<Integer>executeSimpleQueryOnlyFirstRowFirstColumn(connection, "SELECT COUNT(*) FROM SYSOBJECTS WHERE id = object_id('" + objectName + "')") > 0;
}
private static void dropView(Connection connection, String objectName) throws SQLException, IOException {
UtilityDB.executeStatement(connection, "IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + SqlObjectTypeEnum.VIEW.toString() + " " + objectName);
}
private static boolean existsTable(Connection connection, String tableName) throws SQLException, IOException {
String schema = null;
if (tableName.contains(".")) {
schema = tableName.substring(0, tableName.indexOf("."));
tableName = tableName.replace(schema + ".", "");
}
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) AS exist FROM INFORMATION_SCHEMA.TABLES " +
"WHERE TABLE_NAME = N%s ", tableName);
if (schema != null)
sql += Query.format("AND TABLE_SCHEMA = N%s", schema);
return UtilityDB.<Boolean>executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
private static void createIndex(Connection connection, IndexTableDTO indexTableDTO) throws Exception {
UtilityDB.createIndex(connection, indexTableDTO);
}
private static void dropIndex(Connection connection, String tableName, String indexName) throws Exception {
UtilityDB.dropIndex(connection, tableName, indexName);
}
private static void executeStatement(Connection connection, String... sqls) throws SQLException {
try (Statement statement = connection.createStatement()) {
for (String sql : sqls) {
statement.execute(sql);
}
}
}
private static void createOrUpdateView(Connection connection, String objectName, String createViewSql) throws SQLException, IOException {
alterObject(connection, SqlObjectTypeEnum.VIEW, objectName, createViewSql);
}
private static void alterObject(Connection connection, SqlObjectTypeEnum sqlObject, String objectName, String sql) throws SQLException, IOException {
executeStatement(connection, "IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + sqlObject.toString() + " " + objectName,
sql);
}
}

View File

@@ -2,7 +2,7 @@ package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.utility.UtilityDB;
@@ -14,7 +14,7 @@ public class Migration_20210721093948 extends BaseMigration implements Migration
@Override
public void up() throws Exception {
AvailableConnectionsModel historyDBModel = settingsController.getHistoryDbConnectionModel();
AvailableConnectionModel historyDBModel = settingsController.getHistoryDbConnectionModel();
if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName()))
return;

View File

@@ -2,7 +2,7 @@ package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.utility.UtilityDB;
@@ -14,7 +14,7 @@ public class Migration_20210924152555 extends BaseMigration implements Migration
@Override
public void up() throws Exception {
AvailableConnectionsModel historyDBModel = settingsController.getHistoryDbConnectionModel();
AvailableConnectionModel historyDBModel = settingsController.getHistoryDbConnectionModel();
if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName()))
return;

View File

@@ -6,6 +6,7 @@ import it.integry.ems_model.entity.StbUser;
import it.integry.ems_model.entity.WtbUsers;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
import it.integry.security.utility.CryptoUtils;
@@ -57,7 +58,7 @@ public class Migration_20220413102657 extends BaseMigration implements Migration
.setUserCode(wtbUser.getUserCode())
.setDetails(wtbUser.getDetails())
.setLastAccessDatetime(wtbUser.getLastAccessDatetime())
.setPasswordEndtime(wtbUser.getPasswordEndtime())
.setPasswordEndtime(UtilityLocalDate.localDateTimeFromDate(wtbUser.getPasswordEndtime()))
.setUrlCss(wtbUser.getUrlCss())
.setCodLang(wtbUser.getCodLang())
.setCreationDatetime(wtbUser.getCreationDatetime())

View File

@@ -3,7 +3,14 @@ package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.migration.dto.common.MigrationMvwSitArtUdcDetInventarioDTO;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import java.time.LocalDate;
import java.util.ArrayList;
public class Migration_20241213163759 extends BaseMigration implements MigrationModelInterface {
@@ -15,8 +22,381 @@ public class Migration_20241213163759 extends BaseMigration implements Migration
if (!isCustomer(IntegryCustomer.RossoGargano))
return;
MigrationMvwSitArtUdcDetInventarioDTO.apply(connection);
MigrationMvwSitArtUdcDetInventarioDTO.alignGiacenza(connection);
//Migration di conversione aziende a nuova mvw_sitart_udc_det_inventario
createBackupOfOldView();
dropView("mvw_sitart_udc_det_inventario");
createNewView();
alignGiacenza();
}
private void createBackupOfOldView() throws Exception {
if (existsView("mvw_sitart_udc_det_inventario_old"))
return;
createOrUpdateView("mvw_sitart_udc_det_inventario_old", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario_old] AS\n" +
"SELECT UL.gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" UL.cod_mdep,\n" +
" UL.posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" mtb_aart.cod_mgrp AS codGruppo,\n" +
" mtb_grup.descrizione AS Gruppo,\n" +
" mtb_aart.cod_msgr AS CodSgruppo,\n" +
" mtb_sgrp.descrizione AS Sottogruppo,\n" +
" UL.cod_mart,\n" +
" diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" partita_mag,\n" +
" UL.cod_jcom,\n" +
" jtb_comt.descrizione AS commessa,\n" +
" mtb_aart.unt_mis,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" UL.qta_cnf,\n" +
" UL.peso_netto_kg,\n" +
" UL.peso_lordo_kg,\n" +
" UL.cod_jfas\n" +
"FROM [mvw_sitart_udc_det] UL\n" +
" LEFT OUTER JOIN jtb_comt ON UL.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON UL.cod_mdep = mtb_depo_posizioni.cod_mdep AND UL.posizione = mtb_depo_posizioni.posizione,\n" +
" mtb_aart,\n" +
" mtb_grup,\n" +
" mtb_sgrp\n" +
"WHERE UL.cod_mart = mtb_aart.cod_mart\n" +
" AND mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" AND mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" AND qta_col <> 0");
}
private void createNewView() throws Exception {
if (!existsTable("stb_multiplier")) {
executeStatement("CREATE TABLE stb_multiplier\n" +
"(\n" +
" moltiplicatore INT NOT NULL\n" +
")",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (1)",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (-1)");
}
createOrUpdateView("mvw_mtb_colr_with_giacenza", "CREATE VIEW dbo.mvw_mtb_colr_with_giacenza\n" +
" WITH SCHEMABINDING\n" +
"AS\n" +
"SELECT COUNT_BIG(*) AS c,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.gestione_rif,\n" +
" mtb_colr.gestione) AS gestione,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.data_collo_rif,\n" +
" mtb_colr.data_collo) AS data_collo,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.ser_collo_rif,\n" +
" mtb_colr.ser_collo) AS ser_collo,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.num_collo_rif,\n" +
" mtb_colr.num_collo) AS num_collo,\n" +
" SUM(mtb_colr.qta_col * moltiplicatore) AS qta_col,\n" +
"\n" +
" SUM(IIF(mtb_aart.flag_qta_cnf_fissa = 'S', mtb_colr.qta_col / mtb_aart.qta_cnf, mtb_colr.num_cnf) *\n" +
" moltiplicatore) AS num_cnf,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" SUM(mtb_colr.peso_netto_kg * moltiplicatore) AS peso_netto_kg,\n" +
" SUM(mtb_colr.peso_lordo_kg * moltiplicatore) AS peso_lordo_kg,\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom) AS cod_jcom,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf AS qta_cnf_anag\n" +
"FROM dbo.mtb_colr\n" +
" INNER JOIN dbo.stb_multiplier ON moltiplicatore = 1 OR mtb_colr.num_collo_rif IS NOT NULL\n" +
" INNER JOIN dbo.mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
"GROUP BY mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.gestione_rif, mtb_colr.gestione),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.data_collo_rif,\n" +
" mtb_colr.data_collo),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.ser_collo_rif,\n" +
" mtb_colr.ser_collo),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.num_collo_rif,\n" +
" mtb_colr.num_collo),\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom),\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf");
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_CLUSTERED_mvw_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_CLUSTERED_mvw_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setUnique(true)
.setClustered(true)
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("gestione"));
add(new IndexTableDTO.ColumnIndex("data_collo"));
add(new IndexTableDTO.ColumnIndex("num_collo"));
add(new IndexTableDTO.ColumnIndex("ser_collo"));
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
add(new IndexTableDTO.ColumnIndex("cod_jcom"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_qta_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_qta_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("qta_col"));
add(new IndexTableDTO.ColumnIndex("num_cnf"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_giac_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_giac_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}})
.setColumnsInclude("qta_col", "num_cnf"));
executeStatement("UPDATE STATISTICS dbo.mvw_mtb_colr_with_giacenza");
createOrUpdateView("mvw_sitart_udc_det_inventario", "CREATE VIEW mvw_sitart_udc_det_inventario AS\n" +
" WITH baseMtbColr AS (SELECT c,\n" +
"\n" +
" ROUND(v.qta_col, cifre_dec) AS qta_col,\n" +
" ROUND(v.num_cnf, cifre_dec) AS num_cnf,\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)) AS qta_cnf,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione AS descrizione_gruppo,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione AS descrizione_sottogruppo,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colt.barcode_ul,\n" +
" v.qta_cnf_anag\n" +
" FROM mvw_mtb_colr_with_giacenza v WITH (NOEXPAND)\n" +
" INNER JOIN mtb_colt\n" +
" ON v.num_collo = mtb_colt.num_collo AND v.gestione = mtb_colt.gestione AND\n" +
" v.ser_collo = mtb_colt.ser_collo AND v.data_collo = mtb_colt.data_collo\n" +
" INNER JOIN dbo.mtb_unt_mis ON v.unt_mis = mtb_unt_mis.unt_mis\n" +
"\n" +
" INNER JOIN dbo.mtb_grup ON v.cod_mgrp = mtb_grup.cod_mgrp\n" +
" INNER JOIN dbo.mtb_sgrp ON v.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND v.cod_msgr = mtb_sgrp.cod_msgr\n" +
" WHERE qta_col > 0\n" +
" AND (segno = 1 OR (segno = -1 AND cod_dtip IS NULL AND v.gestione = 'V'))),\n" +
" final_stock AS (SELECT v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_mdep AS cod_mdep,\n" +
" v.posizione AS posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" v.cod_mgrp AS codGruppo,\n" +
" v.descrizione_gruppo AS Gruppo,\n" +
" v.cod_msgr AS CodSgruppo,\n" +
" v.descrizione_sottogruppo AS Sottogruppo,\n" +
" v.cod_mart,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.partita_mag,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.cod_jcom,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.cod_jfas,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.segno,\n" +
" v.barcode_ul\n" +
" FROM baseMtbColr v\n" +
"\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON v.cod_mdep = mtb_depo_posizioni.cod_mdep\n" +
" AND v.posizione = mtb_depo_posizioni.posizione)\n" +
"\n" +
" SELECT qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" priorita,\n" +
" codGruppo,\n" +
" Gruppo,\n" +
" CodSgruppo,\n" +
" Sottogruppo,\n" +
" cod_mart,\n" +
" diacod,\n" +
" descrizione_estesa,\n" +
" partita_mag,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" cod_jcom,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" unt_mis,\n" +
" segno,\n" +
" barcode_ul\n" +
" FROM final_stock");
}
private void alignGiacenza() throws Exception {
//Creo un collo di scarico vuoto
MtbColt mtbColt = new MtbColt()
.setGestione("L")
.setSerCollo("RT")
.setSegno(-1)
.setDataCollo(LocalDate.now())
.setAnnotazioni("PASSAGGIO NUOVA MVW_SITART_UDC_DET_INVENTARIO")
.setCodMdep(getInternalCodMdep());
mtbColt.setOperation(OperationType.INSERT);
mtbColt.dataCompleting(connection);
mtbColt.manageWithParentConnection(connection);
executeStatement(Query.format(
"INSERT INTO mtb_colr (gestione, ser_collo, num_collo, data_collo, riga, cod_mart, cod_col, cod_tagl, partita_mag, gestione_rif, data_collo_rif, ser_collo_rif, num_collo_rif, datetime_row,\n" +
" cod_jcom, qta_col, num_cnf, qta_cnf)" +
" SELECT {} AS gestione,\n" +
" {} AS ser_collo,\n" +
" {} AS num_collo,\n" +
" CAST({} AS DATE) AS data_collo,\n" +
" ROW_NUMBER() OVER (PARTITION BY (SELECT NULL) ORDER BY v.data_collo) AS riga,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.gestione AS gestion_rif,\n" +
" v.data_collo AS data_collo_rif,\n" +
" v.ser_collo AS ser_collo_rif,\n" +
" v.num_collo AS num_collo_rif,\n" +
" GETDATE() AS datetime_row,\n" +
" v.cod_jcom,\n" +
" v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf\n" +
"FROM mvw_sitart_udc_det_inventario v\n" +
" INNER JOIN (SELECT ser_collo,\n" +
" gestione,\n" +
" data_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" cod_mart,\n" +
" partita_mag,\n" +
" cod_jcom-- Elenca tutte le colonne coinvolte\n" +
" FROM mvw_sitart_udc_det_inventario\n" +
"\n" +
" EXCEPT\n" +
"\n" +
" SELECT ser_collo,\n" +
" gestione,\n" +
" data_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" cod_mart,\n" +
" partita_mag,\n" +
" cod_jcom -- Elenca le stesse colonne dalla vista vecchia\n" +
" FROM mvw_sitart_udc_det_inventario_old) t\n" +
" ON v.num_collo = t.num_collo AND v.data_collo = t.data_collo AND\n" +
" v.ser_collo = t.ser_collo AND v.gestione = t.gestione AND\n" +
" v.cod_mart = t.cod_mart AND v.cod_mdep = t.cod_mdep AND\n" +
" ISNULL(v.partita_mag, '') = ISNULL(t.partita_mag, '') AND\n" +
" ISNULL(v.posizione, '') = ISNULL(t.posizione, '') AND\n" +
" ISNULL(v.cod_jcom, '') = ISNULL(t.cod_jcom, '')" +
" WHERE qta_col > 0",
mtbColt.getGestione(), mtbColt.getSerCollo(), mtbColt.getNumCollo(), mtbColt.getDataCollo()));
}
private String getInternalCodMdep() throws Exception {
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, "SELECT TOP 1 cod_mdep" +
" FROM mtb_depo" +
" INNER JOIN dbo.gtb_anag ga ON mtb_depo.cod_anag = ga.cod_anag" +
" inner join azienda on ga.part_iva = azienda.part_iva");
}
@Override

View File

@@ -0,0 +1,323 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import java.time.LocalDate;
import java.util.ArrayList;
public class Migration_20250320121611 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Tosca))
return;
//Migration di conversione aziende a nuova mvw_sitart_udc_det_inventario
createBackupOfOldView();
dropView("mvw_sitart_udc_det_inventario");
createNewView();
}
private void createBackupOfOldView() throws Exception {
if (existsView("mvw_sitart_udc_det_inventario_old"))
return;
createOrUpdateView("mvw_sitart_udc_det_inventario_old", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario_old] AS\n" +
"SELECT UL.gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" UL.cod_mdep,\n" +
" UL.posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" mtb_aart.cod_mgrp AS codGruppo,\n" +
" mtb_grup.descrizione AS Gruppo,\n" +
" mtb_aart.cod_msgr AS CodSgruppo,\n" +
" mtb_sgrp.descrizione AS Sottogruppo,\n" +
" UL.cod_mart,\n" +
" diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" partita_mag,\n" +
" UL.cod_jcom,\n" +
" jtb_comt.descrizione AS commessa,\n" +
" mtb_aart.unt_mis,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" UL.qta_cnf,\n" +
" UL.peso_netto_kg,\n" +
" UL.peso_lordo_kg,\n" +
" UL.cod_jfas\n" +
"FROM [mvw_sitart_udc_det] UL\n" +
" LEFT OUTER JOIN jtb_comt ON UL.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON UL.cod_mdep = mtb_depo_posizioni.cod_mdep AND UL.posizione = mtb_depo_posizioni.posizione,\n" +
" mtb_aart,\n" +
" mtb_grup,\n" +
" mtb_sgrp\n" +
"WHERE UL.cod_mart = mtb_aart.cod_mart\n" +
" AND mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" AND mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" AND qta_col <> 0");
}
private void createNewView() throws Exception {
if (!existsTable("stb_multiplier")) {
executeStatement("CREATE TABLE stb_multiplier\n" +
"(\n" +
" moltiplicatore INT NOT NULL\n" +
")",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (1)",
"INSERT INTO stb_multiplier (moltiplicatore) VALUES (-1)");
}
createOrUpdateView("mvw_mtb_colr_with_giacenza", "CREATE VIEW dbo.mvw_mtb_colr_with_giacenza\n" +
" WITH SCHEMABINDING\n" +
"AS\n" +
"SELECT COUNT_BIG(*) AS c,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.gestione_rif,\n" +
" mtb_colr.gestione) AS gestione,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.data_collo_rif,\n" +
" mtb_colr.data_collo) AS data_collo,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.ser_collo_rif,\n" +
" mtb_colr.ser_collo) AS ser_collo,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.num_collo_rif,\n" +
" mtb_colr.num_collo) AS num_collo,\n" +
" SUM(mtb_colr.qta_col * moltiplicatore) AS qta_col,\n" +
"\n" +
" SUM(IIF(mtb_aart.flag_qta_cnf_fissa = 'S', mtb_colr.qta_col / mtb_aart.qta_cnf, mtb_colr.num_cnf) *\n" +
" moltiplicatore) AS num_cnf,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" SUM(mtb_colr.peso_netto_kg * moltiplicatore) AS peso_netto_kg,\n" +
" SUM(mtb_colr.peso_lordo_kg * moltiplicatore) AS peso_lordo_kg,\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom) AS cod_jcom,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf AS qta_cnf_anag\n" +
"FROM dbo.mtb_colr\n" +
" INNER JOIN dbo.stb_multiplier ON moltiplicatore = 1 OR mtb_colr.num_collo_rif IS NOT NULL\n" +
" INNER JOIN dbo.mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
"GROUP BY mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.gestione_rif, mtb_colr.gestione),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.data_collo_rif,\n" +
" mtb_colr.data_collo),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.ser_collo_rif,\n" +
" mtb_colr.ser_collo),\n" +
" IIF(moltiplicatore = -1 AND num_collo_rif IS NOT NULL, mtb_colr.num_collo_rif,\n" +
" mtb_colr.num_collo),\n" +
" IIF(mtb_colr.cod_jcom = 'MAG', NULL, mtb_colr.cod_jcom),\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" mtb_aart.cod_msfa,\n" +
" mtb_aart.qta_cnf");
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_CLUSTERED_mvw_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_CLUSTERED_mvw_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setUnique(true)
.setClustered(true)
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("gestione"));
add(new IndexTableDTO.ColumnIndex("data_collo"));
add(new IndexTableDTO.ColumnIndex("num_collo"));
add(new IndexTableDTO.ColumnIndex("ser_collo"));
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
add(new IndexTableDTO.ColumnIndex("cod_jcom"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_qta_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_qta_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("qta_col"));
add(new IndexTableDTO.ColumnIndex("num_cnf"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}}));
dropIndex("mvw_mtb_colr_with_giacenza", "IDX_mvw_articolo_giac_mtb_colr_with_giacenza");
createIndex(new IndexTableDTO()
.setIndexName("IDX_mvw_articolo_giac_mtb_colr_with_giacenza")
.setTableName("mvw_mtb_colr_with_giacenza")
.setMaxDop(1)
.setSortInTempDb(true)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("cod_mart"));
add(new IndexTableDTO.ColumnIndex("partita_mag"));
add(new IndexTableDTO.ColumnIndex("cod_tagl"));
add(new IndexTableDTO.ColumnIndex("cod_col"));
}})
.setColumnsInclude("qta_col", "num_cnf"));
executeStatement("UPDATE STATISTICS dbo.mvw_mtb_colr_with_giacenza");
createOrUpdateView("mvw_sitart_udc_det_inventario", "CREATE VIEW mvw_sitart_udc_det_inventario AS\n" +
" WITH baseMtbColr AS (SELECT c,\n" +
"\n" +
" ROUND(v.qta_col, cifre_dec) AS qta_col,\n" +
" ROUND(v.num_cnf, cifre_dec) AS num_cnf,\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)) AS qta_cnf,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione AS descrizione_gruppo,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione AS descrizione_sottogruppo,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colt.barcode_ul,\n" +
" v.qta_cnf_anag\n" +
" FROM mvw_mtb_colr_with_giacenza v WITH (NOEXPAND)\n" +
" INNER JOIN mtb_colt\n" +
" ON v.num_collo = mtb_colt.num_collo AND v.gestione = mtb_colt.gestione AND\n" +
" v.ser_collo = mtb_colt.ser_collo AND v.data_collo = mtb_colt.data_collo\n" +
" INNER JOIN dbo.mtb_unt_mis ON v.unt_mis = mtb_unt_mis.unt_mis\n" +
"\n" +
" INNER JOIN dbo.mtb_grup ON v.cod_mgrp = mtb_grup.cod_mgrp\n" +
" INNER JOIN dbo.mtb_sgrp ON v.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND v.cod_msgr = mtb_sgrp.cod_msgr\n" +
" WHERE qta_col > 0\n" +
" AND (segno = 1 OR (segno = -1 AND cod_dtip IS NULL AND v.gestione = 'V'))),\n" +
" final_stock AS (SELECT v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_mdep AS cod_mdep,\n" +
" v.posizione AS posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" v.cod_mgrp AS codGruppo,\n" +
" v.descrizione_gruppo AS Gruppo,\n" +
" v.cod_msgr AS CodSgruppo,\n" +
" v.descrizione_sottogruppo AS Sottogruppo,\n" +
" v.cod_mart,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.partita_mag,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.cod_jcom,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.cod_jfas,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.segno,\n" +
" v.barcode_ul\n" +
" FROM baseMtbColr v\n" +
"\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON v.cod_mdep = mtb_depo_posizioni.cod_mdep\n" +
" AND v.posizione = mtb_depo_posizioni.posizione)\n" +
"\n" +
" SELECT qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" priorita,\n" +
" codGruppo,\n" +
" Gruppo,\n" +
" CodSgruppo,\n" +
" Sottogruppo,\n" +
" cod_mart,\n" +
" diacod,\n" +
" descrizione_estesa,\n" +
" partita_mag,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" cod_jcom,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" unt_mis,\n" +
" segno,\n" +
" barcode_ul\n" +
" FROM final_stock");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,30 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250402112610 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
// //Gia aggiornato
// if (isCustomer(IntegryCustomer.RossoGargano) ||
// isCustomer(IntegryCustomer.Tosca))
// return;
//
// //Azienda da aggiornare
// if (!isCustomer(IntegryCustomer.Gramm))
// return;
//
// MigrationMvwSitArtUdcDetInventarioDTO.apply(connection);
// MigrationMvwSitArtUdcDetInventarioDTO.alignGiacenza(connection);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,75 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.migration.dto.common.MigrationMvwSitArtUdcDetInventarioDTO;
import it.integry.ems.rules.completing.PackagesRules;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import java.util.List;
public class Migration_20250403174531 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Gramm) &&
!isCustomer(IntegryCustomer.RossoGargano))
return;
if (isCustomer(IntegryCustomer.RossoGargano)) {
//Rigenero barcodeUl testate con barcode duplicato
regenerateDuplicatedBarcodeUlTestate();
}
//Aggiorno la view mvw_mtb_colr_with_giacenza
MigrationMvwSitArtUdcDetInventarioDTO.apply(connection);
MigrationMvwSitArtUdcDetInventarioDTO.alignGiacenza(connection);
}
@Override
public void down() throws Exception {
}
private void regenerateDuplicatedBarcodeUlTestate() throws Exception {
String retrieveDuplicatedSql = "SELECT barcode_ul\n" +
"FROM mtb_colt\n" +
"GROUP BY barcode_ul, ser_collo\n" +
"HAVING COUNT(barcode_ul) > 1";
final List<String> duplicatedBarcodes = UtilityDB.executeSimpleQueryOnlyFirstColumn(connection, retrieveDuplicatedSql);
for (String barcode : duplicatedBarcodes) {
String sql = Query.format("SELECT * FROM mtb_colt WHERE barcode_ul = {}", barcode);
List<MtbColt> loadedMtbColts = executeQueryDTO(sql, MtbColt.class);
for (MtbColt colt : loadedMtbColts) {
if (colt.getSerCollo().equalsIgnoreCase("T")) {
String newBarcodeUl = PackagesRules.completeBarcodeUl(connection,
colt.getGestione(),
colt.getDataCollo(),
colt.getSerCollo(),
colt.getNumCollo(),
null);
colt.setBarcodeUl(newBarcodeUl);
colt.setOperation(OperationType.UPDATE);
colt.manageWithParentConnection(connection);
}
}
}
}
}

View File

@@ -1,181 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250403174532 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Gramm) ||
isCustomer(IntegryCustomer.RossoGargano) ||
isCustomer(IntegryCustomer.Carelli) ||
isDMS())
return;
//Cancello tutti i barcode UL dalle testate degli scarichi a lavorazione
executeStatement("UPDATE mtb_colt SET barcode_ul = NULL\n" +
"WHERE gestione = 'L' AND segno = -1\n" +
"AND barcode_ul IS NOT NULL");
executeStatement("UPDATE mtb_colt\n" +
"SET barcode_ul = EAN128.AI_00\n" +
"FROM mtb_colt\n" +
" CROSS APPLY (SELECT TOP 1 * FROM (SELECT DISTINCT AI_00\n" +
" FROM f_getEAN128UL(mtb_colt.gestione, mtb_colt.data_collo, mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" NULL)" +
" WHERE mtb_colt.ser_collo <> 'UL'\n" +
" UNION\n" +
" SELECT CONCAT('U', RIGHT(YEAR(mtb_colt.data_collo), 2), FORMAT(mtb_colt.num_collo, '0000000')) AS AI_00\n" +
" WHERE mtb_colt.ser_collo = 'UL') tmp) EAN128");
createOrUpdateFunction("f_getEAN128UL", "CREATE FUNCTION [dbo].[f_getEAN128UL](@gestione VARCHAR(1), @dataCollo DATETIME, @serCollo VARCHAR(2), @numCollo INT,\n" +
" @customPrefissoEan VARCHAR(7))\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" -- DECLARE @gestione AS VARCHAR(1) = 'L'\n" +
"-- DECLARE @serCollo AS VARCHAR(10) = 'GG'\n" +
"-- DECLARE @numCollo AS INT = 7837\n" +
"-- DECLARE @dataCollo AS DATETIME = '2025-03-10';\n" +
"-- DECLARE @customPrefissoEan AS VARCHAR(7);-- = '8017596';\n" +
"\n" +
" WITH barcodes AS (SELECT mtb_colt.barcode_ul AS AI_00,\n" +
" CASE\n" +
" WHEN mtb_aart.cod_barre_imb IS NOT NULL AND LEN(mtb_aart.cod_barre_imb) < 14 THEN\n" +
" FORMAT(CONVERT(NUMERIC, ISNULL(NULLIF(mtb_aart.cod_barre_imb, ''), '0')),\n" +
" REPLICATE('0', 14))\n" +
" ELSE mtb_aart.cod_barre_imb\n" +
" END AS AI_01,\n" +
" CASE\n" +
" WHEN mtb_aart.bar_code IS NOT NULL AND LEN(mtb_aart.bar_code) < 14\n" +
" THEN\n" +
" FORMAT(CONVERT(BIGINT, mtb_aart.bar_code), REPLICATE('0', 14))\n" +
" ELSE mtb_aart.bar_code\n" +
" END AS AI_02,\n" +
" CASE\n" +
" WHEN mtb_colr.partita_mag IS NOT NULL THEN\n" +
" mtb_colr.partita_mag + CHAR(29)\n" +
" END AS AI_10,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.data_scad IS NOT NULL THEN\n" +
" REPLACE(CONVERT(VARCHAR(10), mtb_partita_mag.data_scad, 2), '.', '')\n" +
" END AS AI_15,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 6 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '000000'), '.', '')\n" +
" END AS AI_3100,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 5 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '00000.0'), '.', '')\n" +
" END AS AI_3101,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 4 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '0000.00'), '.', '')\n" +
" END AS AI_3102,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 3 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '000.000'), '.', '')\n" +
" END AS AI_3103,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 2 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '00.0000'), '.', '')\n" +
" END AS AI_3104,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_aart.peso_kg * mtb_colr.qta_cnf AS INTEGER)) <= 1 THEN\n" +
" REPLACE(FORMAT(mtb_aart.peso_kg * mtb_colr.qta_cnf, '0.00000'), '.', '')\n" +
" END AS AI_3105,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 6 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '000000'), '.', '')\n" +
" END AS AI_3300,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 5 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '00000.0'), '.', '')\n" +
" END AS AI_3301,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 4 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '0000.00'), '.', '')\n" +
" END AS AI_3302,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 3 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '000.000'), '.', '')\n" +
" END AS AI_3303,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 2 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '00.0000'), '.', '')\n" +
" END AS AI_3304,\n" +
" CASE\n" +
" WHEN LEN(CAST(mtb_colt.peso_kg AS INTEGER)) <= 1 THEN\n" +
" REPLACE(FORMAT(mtb_colt.peso_kg, '0.00000'), '.', '')\n" +
" END AS AI_3305,\n" +
" CONVERT(VARCHAR, CONVERT(INTEGER, SUM(mtb_colr.qta_col / mtb_colr.qta_cnf))) AS AI_37\n" +
" FROM mtb_colt\n" +
" INNER JOIN mtb_colr\n" +
" ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
" INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_partita_mag ON mtb_colr.cod_mart = mtb_partita_mag.cod_mart AND\n" +
" mtb_colr.partita_mag =\n" +
" mtb_partita_mag.partita_mag,\n" +
" azienda\n" +
" WHERE mtb_colt.gestione = @gestione\n" +
" AND mtb_colt.data_collo = @dataCollo\n" +
" AND mtb_colt.ser_collo = @serCollo\n" +
" AND mtb_colt.num_collo = @numCollo\n" +
" GROUP BY mtb_colr.qta_cnf,\n" +
" mtb_colt.data_vers,\n" +
" nome_ditta,\n" +
" azienda.indirizzo,\n" +
" azienda.cap,\n" +
" azienda.citta,\n" +
" azienda.prov,\n" +
" prefisso_ean,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_aart.cod_barre_imb,\n" +
" mtb_aart.bar_code,\n" +
" mtb_aart.descrizione_estesa,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_partita_mag.data_scad,\n" +
" mtb_colt.peso_netto_kg,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.peso_kg,\n" +
" mtb_aart.peso_kg, \n" +
" mtb_colt.barcode_ul)\n" +
" SELECT AI_00,\n" +
" IIF(AI_01 IS NOT NULL AND LEN(AI_01) = 13,\n" +
" CONCAT(AI_01, dbo.getCheckDigitITF14(AI_01)), AI_01) AS AI_01,\n" +
" AI_02,\n" +
" AI_10,\n" +
" AI_15,\n" +
" AI_3100,\n" +
" AI_3101,\n" +
" AI_3102,\n" +
" AI_3103,\n" +
" AI_3104,\n" +
" AI_3105,\n" +
" AI_3300,\n" +
" AI_3301,\n" +
" AI_3302,\n" +
" AI_3303,\n" +
" AI_3304,\n" +
" AI_3305,\n" +
" AI_37\n" +
" FROM barcodes\n" +
"GO");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,32 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.migration.dto.common.MigrationMvwSitArtUdcDetInventarioDTO;
public class Migration_20250417110238 extends BaseMigration implements MigrationModelInterface {
//Migration per aggiornare la view mvw_sitart_udc_det_inventario
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Maggio) &&
!isCustomerDb(IntegryCustomerDB.Biolevante_Biolevante) &&
!isCustomerDb(IntegryCustomerDB.Ime_ImeTe))
return;
//Aggiorno la view mvw_mtb_colr_with_giacenza
MigrationMvwSitArtUdcDetInventarioDTO.apply(connection);
MigrationMvwSitArtUdcDetInventarioDTO.alignGiacenza(connection);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,207 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250604172635 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("WMS_OrdPrelievo", "CREATE VIEW [dbo].[WMS_OrdPrelievo] AS\n" +
"WITH elencoFornitoriInterni AS (SELECT value_string AS fornitore\n" +
" FROM dbo.ParseStringIntoArray((SELECT value\n" +
" FROM stb_gest_setup\n" +
" WHERE gest_name = 'PICKING'\n" +
" AND section = 'SPEDIZIONE'\n" +
" AND key_section = 'ELENCO_FORNITORI_INTERNI'),\n" +
" '|')),\n" +
" riservatoPerOrd AS (\n" +
"\n" +
"\n" +
"SELECT mtb_colt.gestione,\n" +
" mtb_colr.data_ord,\n" +
" mtb_colr.num_ord,\n" +
" mtb_colr.riga_ord,\n" +
" SUM(mtb_colr.qta_col) AS qtaCollo,\n" +
" SUM(mtb_colr.num_cnf) AS numCnfCollo,\n" +
" COUNT(DISTINCT mtb_colr.num_ord) AS ColliRiservati\n" +
" FROM mtb_colr\n" +
" INNER JOIN mtb_colt ON mtb_colr.gestione = mtb_colt.gestione AND\n" +
" mtb_colr.data_collo = mtb_colt.data_collo AND\n" +
" mtb_colr.ser_collo = mtb_colt.ser_collo AND\n" +
" mtb_colr.num_collo = mtb_colt.num_collo\n" +
" WHERE segno = - 1\n" +
" AND mtb_colr.gestione IN ('L', 'V')\n" +
" AND mtb_colr.data_ord IS NOT NULL\n" +
" GROUP BY mtb_colt.gestione, mtb_colr.data_ord, mtb_colr.num_ord, mtb_colr.riga_ord\n" +
"\n" +
" ), OrdVr AS (\n" +
" SELECT dtb_ordr.gestione,\n" +
" dtb_ordr.data_ord,\n" +
" dtb_ordr.num_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" IIF(dtb_ordr.gestione = 'V', LEFT(ISNULL(vtb_dest.citta + ' - ', '') + vtb_dest.indirizzo, 40),\n" +
" dtb_ordt.rif_ord) AS rif_ord,\n" +
" dtb_ordt.cod_anag,\n" +
" dtb_ordt.cod_prod,\n" +
" CASE dtb_ordr.gestione WHEN 'L' THEN '2' WHEN 'V' THEN '3' END +\n" +
" REPLACE(CONVERT(VARCHAR(10), dtb_ordr.data_ord, 105), '-', '') +\n" +
" REPLICATE('0', 5 - LEN(dtb_ordr.num_ord)) +\n" +
" CONVERT(VARCHAR(6), dtb_ordr.num_ord) AS chiave_ordine,\n" +
" dtb_ordr.cod_jcom,\n" +
" dtb_ordr.cod_mart,\n" +
" SUM(ROUND(dtb_ordr.qta_ord - dtb_ordr.qta_evasa, mtb_unt_mis.cifre_dec)) *\n" +
" dtb_ordr.rap_conv AS qta_inevasa,\n" +
" dtb_ordt.listino,\n" +
" dtb_ordt.term_cons,\n" +
" dtb_ordt.cod_auto,\n" +
" dtb_ordt.cod_vvet,\n" +
" dtb_ordt.data_iniz_trasp,\n" +
" dtb_ordt.cod_mdep,\n" +
" dtb_ordr.data_cons AS data_cons,\n" +
" dtb_ordr.id_viaggio,\n" +
" dtb_ordt.cod_vage,\n" +
" SUM(colli.qtaCollo) AS qtaCollo,\n" +
" SUM(ROUND((dtb_ordr.qta_ord - dtb_ordr.qta_evasa) * dtb_ordr.rap_conv -\n" +
" ISNULL(colli.qtaCollo, 0),\n" +
" mtb_unt_mis.cifre_dec)) AS qtaInevasaColli,\n" +
" SUM(colli.numCnfCollo) AS numCnfCollo,\n" +
" SUM(dtb_ordr.num_cnf - dtb_ordr.num_cnf_evasa -\n" +
" ISNULL(colli.numCnfCollo, 0)) AS numCnfInevasaColli,\n" +
" IIF((dtb_ordr.gestione = 'L' AND dtb_ordt.gestione_rif = 'T') OR\n" +
" elencoFornitoriInterni.fornitore IS NOT NULL, 'S', 'N') AS ord_trasf\n" +
" FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" +
" dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" +
" dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" INNER JOIN mtb_unt_mis ON mtb_unt_mis.unt_mis = dtb_ordr.unt_ord\n" +
" INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN vtb_dest ON dtb_ordt.cod_anag = vtb_dest.cod_anag AND\n" +
" dtb_ordt.cod_vdes = vtb_dest.cod_vdes\n" +
" LEFT OUTER JOIN riservatoPerOrd colli\n" +
" ON dtb_ordt.gestione = colli.gestione AND\n" +
" dtb_ordt.data_ord = colli.data_ord AND\n" +
" dtb_ordt.num_ord = colli.num_ord\n" +
" LEFT OUTER JOIN elencoFornitoriInterni ON fornitore = dtb_ordt.cod_anag\n" +
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
" AND dtb_ordt.flag_sospeso = 'N'\n" +
" AND dtb_ordr.flag_evaso = 'I'\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" AND dtb_ordt.gestione IN ('L', 'V')\n" +
" AND ((mtb_aart.flag_qta_cnf_fissa = 'S' AND qta_ord > qta_evasa) OR\n" +
" (mtb_aart.flag_qta_cnf_fissa <> 'S' AND num_cnf > num_cnf_evasa))\n" +
" GROUP BY dtb_ordr.gestione, dtb_ordr.data_ord, dtb_ordr.num_ord, dtb_ordt.cod_vdes,\n" +
" vtb_dest.indirizzo,\n" +
" vtb_dest.citta, dtb_ordt.rif_ord, dtb_ordt.cod_anag, dtb_ordr.cod_jcom, dtb_ordr.cod_mart,\n" +
" dtb_ordt.cod_prod, dtb_ordt.listino, dtb_ordt.term_cons, dtb_ordt.cod_auto,\n" +
" dtb_ordt.cod_vvet, fornitore,\n" +
" dtb_ordt.data_iniz_trasp, dtb_ordt.cod_mdep, dtb_ordt.cod_vage, dtb_ordr.id_viaggio,\n" +
" colli.num_ord, dtb_ordr.data_cons, dtb_ordt.gestione_rif, dtb_ordr.rap_conv\n" +
"\n" +
"\n" +
" ), OrdV AS (\n" +
" SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" rif_ord,\n" +
" cod_anag,\n" +
" chiave_ordine,\n" +
" cod_jcom,\n" +
" cod_prod,\n" +
" listino,\n" +
" term_cons,\n" +
" cod_auto,\n" +
" cod_vvet,\n" +
" data_iniz_trasp,\n" +
" data_cons,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" COUNT(DISTINCT cod_mart) AS arts_da_evadere,\n" +
" SUM(qtaInevasaColli) AS qtaInevasa,\n" +
" SUM(numCnfInevasaColli) AS numCnfInevasa,\n" +
" id_viaggio,\n" +
" cod_vage,\n" +
" COUNT(DISTINCT qtaCollo) AS colliRiservati,\n" +
" ord_trasf\n" +
" FROM OrdVr\n" +
" GROUP BY gestione, data_ord, num_ord, rif_ord, cod_anag, chiave_ordine, cod_jcom, cod_prod, listino,\n" +
" term_cons, cod_auto, cod_vvet, data_iniz_trasp, data_cons, cod_vdes, cod_mdep, cod_vage,\n" +
" id_viaggio, ord_trasf\n" +
"\n" +
" ),\n" +
" OrdV2 AS (SELECT OrdV.gestione,\n" +
" OrdV.data_ord,\n" +
" OrdV.num_ord,\n" +
" rif_ord,\n" +
" OrdV.cod_anag,\n" +
" chiave_ordine,\n" +
" cod_jcom,\n" +
" cod_prod,\n" +
" listino,\n" +
" term_cons,\n" +
" OrdV.cod_auto,\n" +
" ISNULL(vtb_viaggi.cod_vvet, OrdV.cod_vvet) AS cod_vvet,\n" +
" data_iniz_trasp,\n" +
" ISNULL(CONVERT(DATETIME, CONVERT(VARCHAR(10), vtb_viaggi.data_ora_iniz_trasp, 121)),\n" +
" data_cons) AS data_cons,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" arts_da_evadere AS ArtDaEvadere,\n" +
" OrdV.id_viaggio,\n" +
" cod_vage,\n" +
" ISNULL(ordV.ColliRiservati, 0) AS colli_riservati,\n" +
" qtaInevasa,\n" +
" numCnfInevasa,\n" +
" CAST(IIF(ISNULL(ordV.ColliRiservati, 0) > 0, 1, 0) AS BIT) exist_collo,\n" +
" CAST(IIF(ISNULL(qtaInevasa, 0) > 0,\n" +
" IIF(ISNULL(numCnfInevasa, 0) > 0, 0, IIF(ordV.colliRiservati > 0, 1, 0)), 1) AS BIT) AS flag_evaso,\n" +
" ord_trasf,\n" +
" IIF((SELECT azienda.part_iva\n" +
" FROM azienda\n" +
" WHERE azienda.part_iva = gtb_anag.part_iva) IS NULL, 'N', 'S') AS ord_aziendale\n" +
" FROM Ordv\n" +
" INNER JOIN gtb_anag ON OrdV.cod_anag = gtb_anag.cod_anag\n" +
" LEFT OUTER JOIN vtb_viaggi ON OrdV.id_viaggio = vtb_viaggi.id_viaggio\n" +
" WHERE (arts_da_evadere > 0 OR ISNULL(ColliRiservati, 0) > 0))\n" +
"SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" rif_ord,\n" +
" cod_anag,\n" +
" chiave_ordine,\n" +
" cod_jcom,\n" +
" cod_prod,\n" +
" listino,\n" +
" term_cons,\n" +
" cod_auto,\n" +
" cod_vvet,\n" +
" data_iniz_trasp,\n" +
" data_cons,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" SUM(ArtDaEvadere) AS ArtDaEvadere,\n" +
" id_viaggio,\n" +
" cod_vage,\n" +
" SUM(colli_riservati) AS colli_riservati,\n" +
" SUM(qtaInevasa) AS qtaInevasa,\n" +
" SUM(numCnfInevasa) AS numCnfInevasa,\n" +
" exist_collo,\n" +
" flag_evaso,\n" +
" ord_trasf,\n" +
" ord_aziendale\n" +
"FROM OrdV2\n" +
"GROUP BY gestione, data_ord, num_ord, rif_ord, cod_anag, chiave_ordine, cod_jcom, cod_prod, listino, term_cons,\n" +
" cod_auto, cod_vvet, data_iniz_trasp, data_cons, cod_vdes, cod_mdep, id_viaggio, cod_vage, exist_collo,\n" +
" flag_evaso, ord_trasf, ord_aziendale");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,130 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250618195259 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("dvw_situazione_qta_docs", "CREATE VIEW dvw_situazione_qta_docs AS\n" +
"SELECT dtb_docr.[cod_anag],\n" +
" dtb_docr.[cod_dtip],\n" +
" dtb_docr.[data_doc],\n" +
" dtb_docr.[ser_doc],\n" +
" dtb_docr.[num_doc],\n" +
" dtb_docr.[id_riga],\n" +
" dtb_docr.[cod_mart],\n" +
" dtb_docr.[descrizione],\n" +
" dtb_docr.[unt_doc],\n" +
" (dtb_docr.[rap_conv] / dtb_docr.[rap_conv]) AS rap_conv,\n" +
" (dtb_docr.[qta_doc] * dtb_docr.[rap_conv]) - ISNULL(mtb_colr.qta_col, 0) AS qta_doc,\n" +
" dtb_docr.[val_unt],\n" +
" dtb_docr.[sconto5],\n" +
" dtb_docr.[sconto6],\n" +
" dtb_docr.[sconto7],\n" +
" dtb_docr.[sconto8],\n" +
" dtb_docr.[cod_aliq],\n" +
" dtb_docr.[perc_prov],\n" +
" dtb_docr.[val_prov],\n" +
" dtb_docr.[data_ord],\n" +
" dtb_docr.[num_ord],\n" +
" dtb_docr.[riga_ord],\n" +
" dtb_docr.[importo_riga],\n" +
" dtb_docr.[cod_col],\n" +
" dtb_docr.[cod_tagl],\n" +
" dtb_docr.[cod_jcom],\n" +
" dtb_docr.[cod_mdep],\n" +
" dtb_docr.[perc_gest],\n" +
" dtb_docr.[val_gest],\n" +
" dtb_docr.[partita_mag],\n" +
" dtb_docr.[val_unt_iva],\n" +
" (dtb_docr.[qta_cnf] * dtb_docr.[rap_conv]) AS qta_cnf,\n" +
" dtb_docr.[descrizione_estesa],\n" +
" dtb_docr.[costo_unt],\n" +
" dtb_docr.[perc_ispe],\n" +
" dtb_docr.[val_ispe],\n" +
" dtb_docr.[perc_promo],\n" +
" dtb_docr.[val_promo],\n" +
" dtb_docr.[perc_oneri],\n" +
" dtb_docr.[val_oneri],\n" +
" dtb_docr.[flag_evaso_forzato],\n" +
" dtb_docr.[cod_dtip_comp],\n" +
" dtb_docr.[data_doc_comp],\n" +
" dtb_docr.[ser_doc_comp],\n" +
" dtb_docr.[num_doc_comp],\n" +
" dtb_docr.[cod_promo],\n" +
" dtb_docr.[perc_prov2],\n" +
" dtb_docr.[val_prov2],\n" +
" dtb_docr.[cod_art_for],\n" +
" dtb_docr.[unt_doc2],\n" +
" dtb_docr.[qta_doc2],\n" +
" dtb_docr.[unt_doc3],\n" +
" dtb_docr.[qta_doc3],\n" +
" dtb_docr.[num_cnf] - ISNULL(mtb_colr.num_cnf, 0) AS num_cnf,\n" +
" dtb_docr.[peso_lordo],\n" +
" dtb_docr.[posizione],\n" +
" dtb_docr.[cod_anag_comp],\n" +
" dtb_docr.[cod_mtip],\n" +
" dtb_docr.[matricola],\n" +
" dtb_docr.[data_iniz_comp],\n" +
" dtb_docr.[data_fine_comp],\n" +
" dtb_docr.[cod_kit],\n" +
" dtb_docr.[cod_alis],\n" +
" dtb_docr.[data_ins_row],\n" +
" dtb_docr.[note],\n" +
" dtb_doct.[gestione],\n" +
" mtb_partita_mag.[data_scad] AS data_scad_partita_mag\n" +
"FROM dtb_docr\n" +
" INNER JOIN dtb_doct ON dtb_docr.num_doc = dtb_doct.num_doc AND dtb_docr.data_doc = dtb_doct.data_doc AND\n" +
" dtb_docr.cod_anag = dtb_doct.cod_anag AND dtb_docr.cod_dtip = dtb_doct.cod_dtip AND\n" +
" dtb_docr.ser_doc = dtb_doct.ser_doc\n" +
" INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_partita_mag ON dtb_docr.cod_mart = mtb_partita_mag.cod_mart AND\n" +
" dtb_docr.partita_mag = mtb_partita_mag.partita_mag\n" +
" LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon\n" +
" LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp\n" +
" LEFT OUTER JOIN (SELECT gestione,\n" +
" cod_mart,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" SUM(qta_col) AS qta_col,\n" +
" data_ord,\n" +
" num_ord,\n" +
" riga_ord,\n" +
" partita_mag,\n" +
" qta_cnf,\n" +
" gestione_rif,\n" +
" data_collo_rif,\n" +
" ser_collo_rif,\n" +
" num_collo_rif,\n" +
" cod_jcom,\n" +
" SUM(num_cnf) AS num_cnf,\n" +
" cod_anag_doc,\n" +
" cod_dtip_doc,\n" +
" data_doc,\n" +
" ser_doc,\n" +
" num_doc,\n" +
" id_riga_doc\n" +
" FROM mtb_colr\n" +
" GROUP BY gestione, cod_barre, cod_mart, cod_col, cod_tagl, data_ord, num_ord, riga_ord,\n" +
" partita_mag, qta_cnf, gestione_rif, data_collo_rif, ser_collo_rif, num_collo_rif,\n" +
" cod_jcom, cod_anag_doc, cod_dtip_doc, data_doc, ser_doc, num_doc,\n" +
" id_riga_doc) mtb_colr\n" +
" ON dtb_docr.cod_anag = mtb_colr.cod_anag_doc AND dtb_docr.cod_dtip = mtb_colr.cod_dtip_doc AND\n" +
" dtb_docr.ser_doc = mtb_colr.ser_doc AND dtb_docr.data_doc = mtb_colr.data_doc AND\n" +
" dtb_docr.num_doc = mtb_colr.num_doc AND dtb_docr.id_riga = mtb_colr.id_riga_doc\n" +
"WHERE (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL)\n" +
" AND (dtb_docr.[qta_doc] * dtb_docr.[rap_conv]) - ISNULL(mtb_colr.qta_col, 0) > 0");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,142 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250625155432 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("mvw_sitart_udc_det_inventario", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario] AS\n" +
"WITH baseMtbColr AS (SELECT c,\n" +
"\n" +
" ROUND(v.qta_col, cifre_dec) AS qta_col,\n" +
" ROUND(v.num_cnf, cifre_dec) AS num_cnf,\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)) AS qta_cnf,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione AS descrizione_gruppo,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione AS descrizione_sottogruppo,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" v.cod_mdep,\n" +
" v.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" v.barcode_ul,\n" +
" v.qta_cnf_anag,\n" +
" mtb_colr.datetime_row AS datetime_posizionamento\n" +
" FROM mvw_mtb_colr_with_giacenza v WITH (NOEXPAND)\n" +
" INNER JOIN mtb_colt\n" +
" ON v.barcode_ul = mtb_colt.barcode_ul\n" +
" LEFT OUTER JOIN mtb_colr ON\n" +
" v.barcode_ul = mtb_colr.barcode_ul_in AND\n" +
" v.cod_mart = mtb_colr.cod_mart AND\n" +
" ISNULL(v.partita_mag, '') = ISNULL(mtb_colr.partita_mag, '') AND\n" +
" ISNULL(v.cod_col, '') = ISNULL(mtb_colr.cod_col, '') AND\n" +
" ISNULL(v.cod_tagl, '') = ISNULL(mtb_colr.cod_tagl, '') AND\n" +
" ISNULL(v.cod_jcom, '') = ISNULL(mtb_colr.cod_jcom, '') AND\n" +
" ISNULL(v.posizione, '') = ISNULL(mtb_colr.posizione_in, '') AND\n" +
" ISNULL(v.cod_mdep, '') = ISNULL(mtb_colr.cod_mdep_in, '') AND\n" +
" ISNULL(mtb_colr.posizione_in, '') <> ISNULL(mtb_colr.posizione_out, '')\n" +
" INNER JOIN dbo.mtb_unt_mis ON v.unt_mis = mtb_unt_mis.unt_mis\n" +
"\n" +
" INNER JOIN dbo.mtb_grup ON v.cod_mgrp = mtb_grup.cod_mgrp\n" +
" INNER JOIN dbo.mtb_sgrp ON v.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND v.cod_msgr = mtb_sgrp.cod_msgr\n" +
" WHERE v.qta_col > 0\n" +
" AND (segno = 1 OR (segno = -1 AND cod_dtip IS NULL AND mtb_colt.gestione = 'V'))),\n" +
" final_stock AS (SELECT v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_mdep AS cod_mdep,\n" +
" v.posizione AS posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" v.cod_mgrp AS codGruppo,\n" +
" v.descrizione_gruppo AS Gruppo,\n" +
" v.cod_msgr AS CodSgruppo,\n" +
" v.descrizione_sottogruppo AS Sottogruppo,\n" +
" v.cod_mart,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.partita_mag,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.cod_jcom,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.cod_jfas,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.segno,\n" +
" v.barcode_ul,\n" +
" v.datetime_posizionamento\n" +
" FROM baseMtbColr v\n" +
"\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON v.cod_mdep = mtb_depo_posizioni.cod_mdep\n" +
" AND v.posizione = mtb_depo_posizioni.posizione)\n" +
"\n" +
"SELECT qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" priorita,\n" +
" codGruppo,\n" +
" Gruppo,\n" +
" CodSgruppo,\n" +
" Sottogruppo,\n" +
" cod_mart,\n" +
" diacod,\n" +
" descrizione_estesa,\n" +
" partita_mag,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" cod_jcom,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" unt_mis,\n" +
" segno,\n" +
" barcode_ul,\n" +
" datetime_posizionamento\n" +
"FROM final_stock");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,174 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250630164505 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("mvw_sitart_udc_det_inventario", "CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario] AS\n" +
"WITH baseMtbColr AS (SELECT c,\n" +
"\n" +
" ROUND(v.qta_col, cifre_dec) AS qta_col,\n" +
" ROUND(v.num_cnf, cifre_dec) AS num_cnf,\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)) AS qta_cnf,\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione AS descrizione_gruppo,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione AS descrizione_sottogruppo,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" v.cod_mdep,\n" +
" v.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" v.barcode_ul,\n" +
" v.qta_cnf_anag,\n" +
" MAX(mtb_colr.datetime_row) AS datetime_posizionamento\n" +
" FROM mvw_mtb_colr_with_giacenza v WITH (NOEXPAND)\n" +
" INNER JOIN mtb_colt\n" +
" ON v.barcode_ul = mtb_colt.barcode_ul\n" +
" LEFT OUTER JOIN mtb_colr ON\n" +
" v.barcode_ul = mtb_colr.barcode_ul_in AND\n" +
" v.cod_mart = mtb_colr.cod_mart AND\n" +
" ((v.partita_mag IS NULL AND mtb_colr.partita_mag IS NULL) OR\n" +
" (v.partita_mag = mtb_colr.partita_mag)) AND\n" +
" ((v.cod_col IS NULL AND mtb_colr.cod_col IS NULL) OR (v.cod_col = mtb_colr.cod_col)) AND\n" +
" ((v.cod_tagl IS NULL AND mtb_colr.cod_tagl IS NULL) OR (v.cod_tagl = mtb_colr.cod_tagl)) AND\n" +
" ((v.cod_jcom IS NULL AND mtb_colr.cod_jcom IS NULL) OR (v.cod_jcom = mtb_colr.cod_jcom)) AND\n" +
" ((v.posizione IS NULL AND mtb_colr.posizione_in IS NULL) OR (v.posizione = mtb_colr.posizione_in)) AND\n" +
" ((v.cod_mdep IS NULL AND mtb_colr.cod_mdep_in IS NULL) OR (v.cod_mdep = mtb_colr.cod_mdep_in)) AND\n" +
" ISNULL(mtb_colr.posizione_in, '') <> ISNULL(mtb_colr.posizione_out, '')\n" +
" INNER JOIN dbo.mtb_unt_mis ON v.unt_mis = mtb_unt_mis.unt_mis\n" +
"\n" +
" INNER JOIN dbo.mtb_grup ON v.cod_mgrp = mtb_grup.cod_mgrp\n" +
" INNER JOIN dbo.mtb_sgrp ON v.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND v.cod_msgr = mtb_sgrp.cod_msgr\n" +
" WHERE v.qta_col > 0\n" +
" AND (segno = 1 OR (segno = -1 AND cod_dtip IS NULL AND mtb_colt.gestione = 'V'))\n" +
" GROUP BY c,\n" +
" ROUND(v.qta_col, cifre_dec),\n" +
" ROUND(v.num_cnf, cifre_dec),\n" +
" IIF(flag_qta_cnf_fissa = 'S',\n" +
" v.qta_cnf_anag, v.qta_col / IIF(v.num_cnf = 0, 1, v.num_cnf)),\n" +
" v.cod_mart,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.partita_mag,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" v.cod_jcom,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.cod_mgrp,\n" +
" mtb_grup.descrizione,\n" +
" v.cod_msgr,\n" +
" mtb_sgrp.descrizione,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" mtb_colt.segno,\n" +
" v.cod_mdep,\n" +
" v.posizione,\n" +
" mtb_colt.cod_dtip,\n" +
" mtb_colt.cod_jfas,\n" +
" v.barcode_ul,\n" +
" v.qta_cnf_anag),\n" +
" final_stock AS (SELECT v.qta_col,\n" +
" v.num_cnf,\n" +
" v.qta_cnf,\n" +
" v.gestione,\n" +
" v.data_collo,\n" +
" v.ser_collo,\n" +
" v.num_collo,\n" +
" v.cod_mdep AS cod_mdep,\n" +
" v.posizione AS posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" v.cod_mgrp AS codGruppo,\n" +
" v.descrizione_gruppo AS Gruppo,\n" +
" v.cod_msgr AS CodSgruppo,\n" +
" v.descrizione_sottogruppo AS Sottogruppo,\n" +
" v.cod_mart,\n" +
" v.diacod,\n" +
" v.descrizione_estesa,\n" +
" v.partita_mag,\n" +
" v.cod_col,\n" +
" v.cod_tagl,\n" +
" v.cod_jcom,\n" +
" v.peso_netto_kg,\n" +
" v.peso_lordo_kg,\n" +
" v.cod_jfas,\n" +
" v.flag_qta_cnf_fissa,\n" +
" v.unt_mis,\n" +
" v.segno,\n" +
" v.barcode_ul,\n" +
" v.datetime_posizionamento\n" +
" FROM baseMtbColr v\n" +
"\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" ON v.cod_mdep = mtb_depo_posizioni.cod_mdep\n" +
" AND v.posizione = mtb_depo_posizioni.posizione)\n" +
"\n" +
"SELECT qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" priorita,\n" +
" codGruppo,\n" +
" Gruppo,\n" +
" CodSgruppo,\n" +
" Sottogruppo,\n" +
" cod_mart,\n" +
" diacod,\n" +
" descrizione_estesa,\n" +
" partita_mag,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" cod_jcom,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" unt_mis,\n" +
" segno,\n" +
" barcode_ul,\n" +
" datetime_posizionamento\n" +
"FROM final_stock");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,64 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250714164813 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("WMS_GetUltimeConsegneClienti", "CREATE FUNCTION [dbo].[WMS_GetUltimeConsegneClienti](@numConsegnePerClie INT, @codAnag VARCHAR(5), @codMart VARCHAR(15),\n" +
" @codMdep VARCHAR(5), @daysDiff INT)\n" +
"/*Funzione che restituisce le ultime consegne effettuate per conto di un cliente con possibilitÃÆÃ  di filtrare per articolo/deposito.\n" +
"Se il cliente non viene passato allora la funzione restituirÃÆÃ  le ultime consegne di tutti i clienti. */\n" +
" RETURNS TABLE AS RETURN\n" +
" SELECT DISTINCT *\n" +
" FROM (SELECT dtb_doct.cod_anag,\n" +
" DENSE_RANK() OVER (PARTITION BY dtb_doct.cod_anag ORDER BY dtb_doct.cod_anag ASC, dtb_doct.data_doc DESC, dtb_doct.num_doc) AS counter_consegna,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.compilato_da,\n" +
" dtb_doct.rif_ord,\n" +
" dtb_doct.data_ord,\n" +
" vtb_dest.destinatario,\n" +
" vtb_dest.indirizzo,\n" +
" dtb_doct.data_iniz_trasp\n" +
" FROM dtb_doct\n" +
" INNER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" LEFT OUTER JOIN vtb_dest\n" +
" ON dtb_doct.cod_anag = vtb_dest.cod_anag\n" +
" AND dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
"\n" +
" WHERE dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar = 1\n" +
" AND DATEDIFF(DAY, dtb_doct.data_doc, GETDATE()) <= @daysDiff\n" +
"\n" +
"\n" +
" AND (@codMdep IS NULL\n" +
" OR dtb_doct.cod_mdep = @codMdep)\n" +
" AND (@codMart IS NULL\n" +
" OR dtb_docr.cod_mart = @codMart)\n" +
" AND (@codAnag IS NULL\n" +
" OR dtb_doct.cod_anag = @codAnag)) grouped_consegne\n" +
" WHERE @numConsegnePerClie IS NULL\n" +
" OR grouped_consegne.counter_consegna <= @numConsegnePerClie");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,66 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250715110408 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("WMS_GetUltimeConsegneClienti", "CREATE FUNCTION [dbo].[WMS_GetUltimeConsegneClienti](@numConsegnePerClie INT, @codAnag VARCHAR(5), @codVdes VARCHAR(5), @codMart VARCHAR(15),\n" +
" @codMdep VARCHAR(5), @daysDiff INT)\n" +
"/*Funzione che restituisce le ultime consegne effettuate per conto di un cliente con possibilitÃÆÃ  di filtrare per articolo/deposito.\n" +
"Se il cliente non viene passato allora la funzione restituirÃÆÃ  le ultime consegne di tutti i clienti. */\n" +
" RETURNS TABLE AS RETURN\n" +
" SELECT DISTINCT *\n" +
" FROM (SELECT dtb_doct.cod_anag,\n" +
" DENSE_RANK() OVER (PARTITION BY dtb_doct.cod_anag ORDER BY dtb_doct.cod_anag ASC, dtb_doct.data_doc DESC, dtb_doct.num_doc) AS counter_consegna,\n" +
" dtb_doct.cod_dtip,\n" +
" dtb_doct.data_doc,\n" +
" dtb_doct.ser_doc,\n" +
" dtb_doct.num_doc,\n" +
" dtb_doct.compilato_da,\n" +
" dtb_doct.rif_ord,\n" +
" dtb_doct.data_ord,\n" +
" vtb_dest.destinatario,\n" +
" vtb_dest.indirizzo,\n" +
" dtb_doct.data_iniz_trasp\n" +
" FROM dtb_doct\n" +
" INNER JOIN dtb_docr ON dtb_doct.cod_anag = dtb_docr.cod_anag AND\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip AND\n" +
" dtb_doct.num_doc = dtb_docr.num_doc AND\n" +
" dtb_doct.data_doc = dtb_docr.data_doc AND\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" LEFT OUTER JOIN vtb_dest\n" +
" ON dtb_doct.cod_anag = vtb_dest.cod_anag\n" +
" AND dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
"\n" +
" WHERE dtb_doct.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
" AND dtb_tipi.segno_qta_scar = 1\n" +
" AND DATEDIFF(DAY, dtb_doct.data_doc, GETDATE()) <= @daysDiff\n" +
"\n" +
"\n" +
" AND (@codMdep IS NULL\n" +
" OR dtb_doct.cod_mdep = @codMdep)\n" +
" AND (@codMart IS NULL\n" +
" OR dtb_docr.cod_mart = @codMart)\n" +
" AND (@codAnag IS NULL\n" +
" OR dtb_doct.cod_anag = @codAnag)\n" +
" AND (@codVdes IS NULL\n" +
" OR dtb_doct.cod_vdes = @codVdes)) grouped_consegne\n" +
" WHERE @numConsegnePerClie IS NULL\n" +
" OR grouped_consegne.counter_consegna <= @numConsegnePerClie");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,28 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250728125101 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String reportNameScar = null;
String reportNameLav = null;
if (isCustomer(IntegryCustomer.RossoGargano)) {
reportNameScar = "ReportScaricoProdotto";
reportNameLav = "RiepilogoLavorazioniMateriaPrimaGrezza";
}
createSetup("PVM","PIAN_ACC_ROSSG","REPORT_NAME_RIEP_SCARICO_PRODOTTO",reportNameScar,"Nome report stampa riepilogo scarico prodotti (da tab omonima in pagina accettazione da campo)","REPORT_NAME");
createSetup("PVM","PIAN_ACC_ROSSG","REPORT_NAME_RIEP_LAV_MATERIALE",reportNameLav,"Nome report stampa riepilogo lavorazioni del giorno (da tab Laborazioni in pagina accettazione da campo)","REPORT_NAME");
}
@Override
public void down() throws Exception {
}
}

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