Compare commits

...

1321 Commits

Author SHA1 Message Date
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
edff5ae3ec Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-08 18:44:58 +02:00
d8ede199ed Creata procedura di importazione tassi di cambio da Banca d'Italia 2025-08-08 18:42:42 +02:00
5fdd9d447a Create nuove setup per chiusura tagli prezzo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-08 16:20:20 +02:00
a21c13f798 Gestito plu mancante come anomalie in importagione digi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-08 15:39:22 +02:00
94f21f78a8 controllo su proprietà confezionato null
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-08 12:58:06 +02:00
77549064f1 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-08 09:42:14 +02:00
05a092a664 Merge remote-tracking branch 'origin/master'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 17:19:42 +02:00
934463a2a4 aggiunto cod_paga nella dtb_tipi 2025-08-07 17:19:28 +02:00
c62112e9d6 Modifca Migrations per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 16:03:25 +02:00
36b2d99f5a Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 15:46:45 +02:00
b828a31544 inserirta la descrozione dei depoisto sui trapv 2025-08-07 15:46:41 +02:00
4656fbb61b Gestito controllo data scadenza multipla in openStep MES
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 15:17:12 +02:00
7e9e207b66 Creata procedura di importazione pesate da bilancia
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 12:51:35 +02:00
47755e2c56 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit is unstable
2025-08-07 12:25:44 +02:00
33582c62d4 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 12:25:44 +02:00
46ef9bd59e modifiche su utenti 2025-08-07 12:25:27 +02:00
25d549f681 modifiche su utenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-07 11:54:53 +02:00
5cbede1c68 Personalizzazione report presenze per vinella
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-06 18:01:15 +02:00
5feea9ced0 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-06 17:36:31 +02:00
c77f212ca1 nuova opzione in aggiornamento listini divendita 2025-08-06 17:36:27 +02:00
7dcdb85ee0 creata setup che permetta di visualizzare tutte le versioni delle stampe o solo l'ultima
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-06 13:12:27 +02:00
402ddc0009 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-06 09:55:36 +02:00
aff3eaa959 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-06 09:55:35 +02:00
61de052e30 risolta regola 2025-08-06 09:55:29 +02:00
e838df2876 Creata setup per disattivare la proposta dell'ultimo valore inserito in creazione udc mes
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 18:02:57 +02:00
4f65d93a65 fare in modo che le procedura di esportaizone in excel posssano avere una query di base
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 16:21:06 +02:00
1f3517a10b aggiungi codice tipo bene
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 15:49:00 +02:00
3df0a0058d Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 11:14:51 +02:00
096c25955c Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 11:14:51 +02:00
6f3d8a7ef5 Fix su sql server connection in menu configurator 2025-08-05 11:14:45 +02:00
8448a8798d nella registrazione degli inventari considerare anche i casi che hanno qta = 0 e num_cnf <> 0 e qta_cnf fissa per allinearli.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 10:51:59 +02:00
36acbe175a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 09:55:07 +02:00
f08b5fe07e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 09:55:05 +02:00
54804ec4d6 Fix connection su DB Distributore 2025-08-05 09:54:59 +02:00
269d0d4aff Aggiunto servizio che aggiorna endpoint portale Web
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-05 09:25:02 +02:00
f24ebd5cbc Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 19:11:05 +02:00
48070baf25 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-08-04 19:11:05 +02:00
d266c8c9e1 Fix su connessioni del SyncManager 2025-08-04 19:11:00 +02:00
6c15210a22 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 17:27:44 +02:00
8eddffdc7c Finish FixTag
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 17:27:44 +02:00
0187c33730 Modificato formato tag versione 2025-08-04 17:26:57 +02:00
acb33cad0f Aggiunto servizio che aggiorna endpoint portale Web
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-08-04 17:26:27 +02:00
17fca32238 Rimosso dai log le export di FATTURE_FPR
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 17:25:10 +02:00
8997e8187e Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-08-04 13:01:13 +02:00
0729d1c0b6 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 13:01:12 +02:00
a15bf9957a sistemato calcolo num colli 2025-08-04 13:01:07 +02:00
9c48a57743 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 12:41:04 +02:00
7a97a55df1 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 12:41:04 +02:00
ab7aa9e0bf correzione su importazione docfinance 2025-08-04 12:40:55 +02:00
a6a9a3cbd8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 12:30:20 +02:00
5e145dd854 Aumentati timeout di connessione all'email legata alla fatturazione
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-08-04 10:27:51 +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
1251 changed files with 69443 additions and 68269 deletions

2
.gitignore vendored
View File

@@ -122,3 +122,5 @@ fabric.properties
/temp /temp
/docker/tomcat/conf/integry/logs.db /docker/tomcat/conf/integry/logs.db
/docker/tomcat/conf/integry/logs.db-journal /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"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true"> <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> <driver-ref>sqlserver.ms</driver-ref>
<synchronize>true</synchronize> <synchronize>true</synchronize>
<jdbc-driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbc-driver> <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> <working-dir>$ProjectFileDir$</working-dir>
</data-source> </data-source>
</component> </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"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="RemoteRepositoriesConfiguration"> <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> <remote-repository>
<option name="id" value="central" /> <option name="id" value="central" />
<option name="name" value="Central Repository" /> <option name="name" value="Central Repository" />

View File

@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager"> <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" /> <module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" /> <option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" /> <option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" /> <option name="SHMEM_ADDRESS" />
<option name="HOST" value="127.0.0.1" /> <option name="HOST" value="localhost" />
<option name="PORT" value="8001" /> <option name="PORT" value="8001" />
<option name="AUTO_RESTART" value="false" /> <option name="AUTO_RESTART" value="false" />
<RunnerSettings RunnerId="Debug"> <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>

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

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/.idea/queries/Query.sql" dialect="TSQL" />
<file url="file://$PROJECT_DIR$/.idea/queries/Query_1.sql" dialect="TSQL" />
<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 FROM tomcat:9-jre8
RUN apk add --no-cache fontconfig ttf-dejavu
ENV TZ="Europe/Rome" 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" 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.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_automated_operations.json /usr/local/tomcat/conf/integry/
COPY docker/tomcat/conf/integry/ems_settings.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) bat(script: 'mvn clean install -t toolchains-jenkins.xml', returnStdout: true)
archiveArtifacts(artifacts: 'ems-engine/target/ems-api.war', onlyIfSuccessful: 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 { steps {
node('server-build') { node('server-build') {
echo "Building Docker image" echo "Building Docker image"
unstash 'docker-files' unstash 'container-files'
script { script {
def branchVersion = "" def branchVersion = ""
@@ -127,7 +127,9 @@ sleep 10''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaul
branchVersion = "-${env.GIT_BRANCH.toLowerCase().replace('/', '-')}" 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}" //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 { success {
script { script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "develop") { 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 { unstable {
script { script {
if (env.GIT_BRANCH == "master" || env.GIT_BRANCH == "develop") { 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> <artifactId>arial-rounded</artifactId>
<version>1.0</version> <version>1.0</version>
</dependency> </dependency>
<dependency>
<groupId>it.integry.font</groupId>
<artifactId>NotoSerif</artifactId>
<version>1.1</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.groovy</groupId> <groupId>org.apache.groovy</groupId>
@@ -363,6 +368,11 @@
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId> <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> <version>${jackson.version}</version>
</dependency> </dependency>
@@ -394,6 +404,17 @@
<artifactId>spring-orm</artifactId> <artifactId>spring-orm</artifactId>
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </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> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId> <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) { private void sendErrorMail(String errorMsg, String service, byte[] content, String filename, List<AnomalieDTO> anomalie) {
try { try {
mailService.sendErrorMailByGestNameSection(multiDBTransactionManager, service, "WOOCOMMERCE", "Errore WooCommerce", mailService.sendErrorMailByGestNameSection(multiDBTransactionManager.getPrimaryConnection(), service, "WOOCOMMERCE", "Errore WooCommerce",
null, content, filename, anomalie); null, content, filename, anomalie);
} catch (Exception exception) { } catch (Exception exception) {
logger.error(service, 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 INTEGRY = "integry";
public static final String PROFILE_DB = "profileDb"; 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 WHERE_COND = "whereCond";
public static final String EMPTY_STRING = ""; public static final String EMPTY_STRING = "";
@@ -20,6 +21,7 @@ public class CommonConstants {
public static final String TIMESTAMP = "timestamp"; 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_YMD = "yyyy-MM-dd";
public static final String DATE_FORMAT_DMY = "dd/MM/yyyy"; public static final String DATE_FORMAT_DMY = "dd/MM/yyyy";
public static final String DATE_FORMAT_DMY_DASHED = "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 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 = 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_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); 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()); .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) public static final DateTimeFormatter DATE_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD)
.withZone(ZoneId.systemDefault()); .withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_YMD) 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) public static final DateTimeFormatter DATE_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY)
.withZone(ZoneId.systemDefault()); .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) public static final DateTimeFormatter DATETIME_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_DMY_SLASHED)
.withZone(ZoneId.systemDefault()); .withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_DMY_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_DMY_DASHED) 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 com.fasterxml.jackson.databind.module.SimpleModule;
import it.integry.ems.Import.dto.AnomalieDTO; import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO; import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.json.JsonObjectMapperConfig; import it.integry.ems.json.JsonObjectMapperConfig;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
@@ -24,6 +25,7 @@ public abstract class BaseEntityImporter<T> implements IEntityImporter<T> {
protected String format; protected String format;
protected boolean headless; protected boolean headless;
protected ImportRequestDTO requestDto; protected ImportRequestDTO requestDto;
protected RequestDataDTO requestDataDTO;
protected MultiDBTransactionManager multiDBTransactionManager; protected MultiDBTransactionManager multiDBTransactionManager;
protected List<AnomalieDTO> anomalie = new ArrayList<AnomalieDTO>(); protected List<AnomalieDTO> anomalie = new ArrayList<AnomalieDTO>();
@@ -77,6 +79,12 @@ public abstract class BaseEntityImporter<T> implements IEntityImporter<T> {
return this; return this;
} }
@Override
public IEntityImporter<T> setRequestDataDTO(RequestDataDTO requestDataDTO) {
this.requestDataDTO = requestDataDTO;
return this;
}
public List<AnomalieDTO> getAnomalie() { public List<AnomalieDTO> getAnomalie() {
return anomalie; 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.AnomalieDTO;
import it.integry.ems.Import.dto.ImportRequestDTO; import it.integry.ems.Import.dto.ImportRequestDTO;
import it.integry.ems.javabeans.RequestDataDTO;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase; import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.service.SetupGest;
@@ -26,10 +27,14 @@ public interface IEntityImporter<T> {
IEntityImporter<T> setRequestDTO(ImportRequestDTO requestDto); IEntityImporter<T> setRequestDTO(ImportRequestDTO requestDto);
IEntityImporter<T> setRequestDataDTO(RequestDataDTO requestDataDTO);
List<AnomalieDTO> getAnomalie(); List<AnomalieDTO> getAnomalie();
T doImport() throws Exception; T doImport() throws Exception;
String renameFile(String orginalFileName, List<EntityBase> entities) throws Exception; String renameFile(String orginalFileName, List<EntityBase> entities) throws Exception;
} }

View File

@@ -24,7 +24,9 @@ public enum EntityImportType {
MOVIMENTI_CONTABILI("MOVIMENTI CONTABILI"), MOVIMENTI_CONTABILI("MOVIMENTI CONTABILI"),
GRIGLIA_VENDITA("GRIGLIA VENDITA"), GRIGLIA_VENDITA("GRIGLIA VENDITA"),
GRIGLIA_ACQUISTO("GRIGLIA ACQUISTO"), GRIGLIA_ACQUISTO("GRIGLIA ACQUISTO"),
SCADENZE("SCADENZE"); SCADENZE("SCADENZE"),
BILANCE("BILANCE"),
BANCA("BANCA");
private String text; private String text;

View File

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

@@ -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 corePoolSize = Runtime.getRuntime().availableProcessors();
private final int maxPoolSize = (int) (corePoolSize * 1.5f); private final int maxPoolSize = (int) (corePoolSize * 1.5f);
private final int queueSize = 500; private final int queueSize = 1_000_000;
@Bean @Bean
public ExecutorService taskExecutor() { 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, @RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) JsonNode body) throws Exception { @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<>(); List<AnomalieDTO> anomalie = new ArrayList<>();
if (entityExportResponse != null && entityExportResponse.getAnomalie() != null && !entityExportResponse.getAnomalie().isEmpty()) if (entityExportResponse != null && entityExportResponse.getAnomalie() != null && !entityExportResponse.getAnomalie().isEmpty())
@@ -608,7 +608,7 @@ public class EmsController {
@RequestParam(required = false, defaultValue = "true") boolean headless, @RequestParam(required = false, defaultValue = "true") boolean headless,
@RequestBody(required = false) ImportRequestDTO requestBody) throws Exception { @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(); List<EntityBase> entities = importResponse.getResponse();
@@ -700,16 +700,6 @@ public class EmsController {
logger.error(request.getRequestURI(), e); logger.error(request.getRequestURI(), e);
ServiceRestResponse response = new ServiceRestResponse(EsitoType.KO, configuration, e); ServiceRestResponse response = new ServiceRestResponse(EsitoType.KO, configuration, e);
responseList.add(response); responseList.add(response);
} finally {
if (multiDBTransactionManager != null) {
try {
multiDBTransactionManager.close();
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
ServiceRestResponse response = new ServiceRestResponse(EsitoType.KO, configuration, e);
responseList.add(response);
}
}
} }
return responseList; return responseList;
@@ -743,7 +733,7 @@ public class EmsController {
@PathVariable String filename, @PathVariable String filename,
@RequestParam(name = "contentDisposition", defaultValue = "attachment") String contentDispositionType, @RequestParam(name = "contentDisposition", defaultValue = "attachment") String contentDispositionType,
@RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception { @RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception {
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(idAttach, requestThumbnail); AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(multiDBTransactionManager, idAttach, requestThumbnail);
if (attachmentDTO != null) { if (attachmentDTO != null) {
return ResponseEntity.ok() return ResponseEntity.ok()
@@ -760,13 +750,31 @@ public class EmsController {
return ResponseEntity.notFound().build(); 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) @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.GET)
public ResponseEntity<byte[]> downloadStbFileAttachmentPath( public ResponseEntity<byte[]> downloadStbFileAttachmentPath(
@RequestParam(CommonConstants.PROFILE_DB) String config, @RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String idAttach, @RequestParam String idAttach,
@RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception { @RequestParam(defaultValue = "false") boolean requestThumbnail) throws Exception {
AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(idAttach, requestThumbnail); AttachmentDTO attachmentDTO = emsServices.downloadStbFileAttachment(multiDBTransactionManager, idAttach, requestThumbnail);
if (attachmentDTO != null) { if (attachmentDTO != null) {
return ResponseEntity.ok() return ResponseEntity.ok()
@@ -785,9 +793,8 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_EMAIL_CONTENT, method = RequestMethod.GET) @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_EMAIL_CONTENT, method = RequestMethod.GET)
public byte[] downloadStbEmailContent(HttpServletRequest request, HttpServletResponse response, public ResponseEntity<byte[]> downloadStbEmailContent(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam(CommonConstants.PROFILE_DB) String config, @RequestParam Integer idEmail) throws Exception {
@RequestParam Integer idEmail) throws Exception {
StbEmailContent stbEmailContent = new StbEmailContent(); StbEmailContent stbEmailContent = new StbEmailContent();
stbEmailContent.setIdEmail(idEmail); stbEmailContent.setIdEmail(idEmail);
stbEmailContent.setOperation(OperationType.SELECT_OBJECT); stbEmailContent.setOperation(OperationType.SELECT_OBJECT);
@@ -795,11 +802,7 @@ public class EmsController {
stbEmailContent = entityProcessor.processEntity(stbEmailContent, multiDBTransactionManager); stbEmailContent = entityProcessor.processEntity(stbEmailContent, multiDBTransactionManager);
if (stbEmailContent != null) { if (stbEmailContent != null) {
response.setContentType("application/octet-stream"); byte[] byteArr;
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename("email.eml").build().toString());
byte[] byteArr = null;
String pattern = "[^\\x00-\\x7F]"; String pattern = "[^\\x00-\\x7F]";
Pattern pat = Pattern.compile(pattern); Pattern pat = Pattern.compile(pattern);
@@ -811,13 +814,18 @@ public class EmsController {
byteArr = Base64.decodeBase64(stbEmailContent.getEmailContent()); byteArr = Base64.decodeBase64(stbEmailContent.getEmailContent());
} }
response.setContentLength(byteArr != null ? byteArr.length : 0); return ResponseEntity.ok()
return byteArr; .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 ResponseEntity.notFound().build();
return null;
} }
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET) @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET)
@@ -876,12 +884,13 @@ public class EmsController {
} }
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_ORD_PDF, method = RequestMethod.GET) @RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_ORD_PDF, method = RequestMethod.GET)
public byte[] downloadDtbOrdPdf(HttpServletRequest request, HttpServletResponse response, public ResponseEntity<byte[]> downloadDtbOrdPdf(
@RequestParam(CommonConstants.PROFILE_DB) String config, @RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione, @RequestParam String gestione,
@RequestParam String dataOrd, @RequestParam String dataOrd,
@RequestParam Integer numOrd, @RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception { @RequestParam Integer versione) throws Exception {
DtbOrdPdf dtbOrdPdf = new DtbOrdPdf(); DtbOrdPdf dtbOrdPdf = new DtbOrdPdf();
dtbOrdPdf.setGestione(gestione); dtbOrdPdf.setGestione(gestione);
dtbOrdPdf.setDataOrd(UtilityDate.RecognizeDate(dataOrd)); dtbOrdPdf.setDataOrd(UtilityDate.RecognizeDate(dataOrd));
@@ -892,17 +901,20 @@ public class EmsController {
dtbOrdPdf = entityProcessor.processEntity(dtbOrdPdf, multiDBTransactionManager); dtbOrdPdf = entityProcessor.processEntity(dtbOrdPdf, multiDBTransactionManager);
if (dtbOrdPdf != null) { 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); 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 ResponseEntity.notFound().build();
return null;
} }
@RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.POST) @RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.POST)
@@ -919,7 +931,7 @@ public class EmsController {
throw new Exception("Sono stati inviati più file del previsto"); 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].getOriginalFilename(),
files[0].getBytes(), files[0].getBytes(),
descrizione, descrizione,
@@ -1098,7 +1110,7 @@ public class EmsController {
.setCodDtip(codDtip); .setCodDtip(codDtip);
drlDocAttached.setOperation(OperationType.INSERT); drlDocAttached.setOperation(OperationType.INSERT);
StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(idAttach, StbFilesAttached stbFilesAttached = emsServices.uploadStbFilesAttached(multiDBTransactionManager, idAttach,
files[0].getOriginalFilename(), files[0].getOriginalFilename(),
files[0].getBytes(), files[0].getBytes(),
descrizione, descrizione,
@@ -1117,7 +1129,7 @@ public class EmsController {
@RequestMapping(value = "createZipFromFiles", method = RequestMethod.POST) @RequestMapping(value = "createZipFromFiles", method = RequestMethod.POST)
public @ResponseBody public @ResponseBody
ServiceRestResponse createZipFromFiles(@RequestBody CreateZipDTO createZipDTO) throws Exception { 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) // @RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_EMAIL_CONTENT, method = RequestMethod.POST)
@@ -1163,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) @RequestMapping(value = EmsRestConstants.PATH_EXPORT_SERVER_INFO_ISCC, method = RequestMethod.POST)
public @ResponseBody public @ResponseBody
ServiceRestResponse exportServerInfoISCC(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception { ServiceRestResponse exportServerInfoISCC(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
emsServices.checkServerVariables(); emsServices.checkServerVariables(multiDBTransactionManager);
return ServiceRestResponse.createPositiveResponse(); return ServiceRestResponse.createPositiveResponse();
} }

View File

@@ -1,112 +1,172 @@
package it.integry.ems.datasource; package it.integry.ems.datasource;
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.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection; 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.config.EmsRestConstants; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityHashMap; import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.UtilityString; import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.SQLException;
import java.sql.SQLException; import java.util.HashMap;
import java.util.HashMap;
import java.util.List; public class DataSource extends BasicDataSource {
public class DataSource extends BasicDataSource { private final int POOL_SIZE;
private AvailableConnectionsModel connectionModel; private AvailableConnectionModel connectionModel;
/** /**
* Instanzia un nuovo datasource. * 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 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() { @Deprecated
super(); public DataSource() {
} super();
POOL_SIZE = 5;
public EmsRestConstants.DB_TYPE getTypeDB() { }
return connectionModel.getConnectionType();
} @Deprecated
public DataSource(int poolSize) {
/** super();
* Ottiene una connessione dal pool. La connessione è wrappata in it.integry.ems.sync.MultiDBTransaction.Connection. POOL_SIZE = poolSize;
* È responsabilità del chiamante chiudere la connessione per restituirla al pool. }
*
* @return una connessione dal pool public EmsRestConstants.DB_TYPE getTypeDB() {
* @throws SQLException se si verifica un errore di accesso al database return connectionModel.getConnectionType();
*/ }
public Connection getConnection() throws SQLException { /**
// Restituisce una nuova connessione dal pool di BasicDataSource, wrappata nel nostro tipo Connection * Ottiene una connessione dal pool. La connessione è wrappata in it.integry.ems.sync.MultiDBTransaction.Connection.
final Connection connection = Connection.fromConnection(super.getConnection()); * È responsabilità del chiamante chiudere la connessione per restituirla al pool.
// Prova a ottenere una connessione per verificare la configurazione e ottenere il sessionID *
* @return una connessione dal pool
if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) { * @throws SQLException se si verifica un errore di accesso al database
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]," + public Connection getConnection() throws SQLException {
" current_user AS [current_user]," + // Restituisce una nuova connessione dal pool di BasicDataSource, wrappata nel nostro tipo Connection
" system_user AS [system_user]," + final Connection connection = Connection.fromConnection(super.getConnection());
" session_user AS [session_user]," + // Prova a ottenere una connessione per verificare la configurazione e ottenere il sessionID
" user AS [user]");
if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) {
connection.setSessionId(UtilityHashMap.getValueIfExists(resultSessionData, "session_id")); 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]," +
connection.setProfileName(connectionModel.getProfileName()) " current_user AS [current_user]," +
.setInternalDb(connectionModel.getInternalDb()); " system_user AS [system_user]," +
" session_user AS [session_user]," +
return connection; " user AS [user]");
}
connection.setSessionId(UtilityHashMap.getValueIfExists(resultSessionData, "session_id"));
public synchronized void initialize(AvailableConnectionsModel connectionModel) throws Exception { }
this.connectionModel = connectionModel;
connection.setProfileName(connectionModel.getProfileName())
this.setUrl(connectionModel.getDbConnectionString("EMS Connection")); .setInternalDb(connectionModel.getInternalDb());
this.setUsername(connectionModel.getUsername());
this.setPassword(connectionModel.getPasswordDecrypted()); return connection;
}
if (!connectionModel.getInternalDb() ||
UtilityDebug.isDebugExecution() || public synchronized void initialize(String profileDB) throws Exception {
UtilityDebug.isIntegryServerDev() || initialize(profileDB, null);
!SettingsModel.getInstance().isPrimaryInstance()) }
this.setMaxIdle(0);
public synchronized void initialize(String profileDB, String customAppName) throws Exception {
this.setDefaultTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED); AvailableConnectionModel connectionsModel = SettingsModel.getInstance().findConnectionModel(profileDB);
this.setDefaultAutoCommit(false);
initialize(connectionsModel, customAppName);
// if (connectionModel.getConnectionType() == EmsRestConstants.DB_TYPE.MSSQL) { }
// this.setConnectionInitSqls(Collections.singletonList("SET NOCOUNT ON"));
// } public synchronized void initialize(AvailableConnectionModel connectionModel) throws Exception {
} initialize(connectionModel, null);
}
public synchronized void initialize(String profileDB, String connectionName) throws Exception {
if (UtilityString.isNullOrEmpty(profileDB)) { public synchronized void initialize(AvailableConnectionModel connectionModel, String customAppName) throws Exception {
throw new Exception("Profile DB non valorizzato - controllare la chiamata del servizio"); if (connectionModel == null) {
} throw new Exception("Configurazione DB non trovata");
}
AvailableConnectionsModel connectionModel = null;
List<AvailableConnectionsModel> availableConnectionsModels = SettingsModel.getInstance().getAvailableConnectionsWithoutDuplicatedProfiles(false); this.connectionModel = connectionModel;
for (AvailableConnectionsModel connectionsModel : availableConnectionsModels) { this.setDriverClassName(connectionModel.getDriverClassName());
if (connectionsModel.getProfileName().equalsIgnoreCase(profileDB)) {
connectionModel = connectionsModel; this.setUrl(connectionModel.getDbConnectionString(UtilityString.isNull(customAppName, "EMS Connection")));
} this.setUsername(connectionModel.getUsername());
} this.setPassword(connectionModel.getPasswordDecrypted());
this.setDefaultCatalog(connectionModel.getDbName());
if (connectionModel == null) {
throw new Exception(String.format("Configurazione DB non trovata o dati mancanti (%s)", profileDB)); this.setDefaultTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
} this.setDefaultAutoCommit(false);
initialize(connectionModel); // ===== OTTIMIZZAZIONI CRITICHE =====
}
// Pool sizing ottimizzato per READ_UNCOMMITTED (meno locking = più connessioni possibili)
public synchronized void initialize(String profileDB) throws Exception { this.setInitialSize(POOL_SIZE); // Inizia con più connessioni
initialize(profileDB, "EMS Connection"); 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); RequestDataDTO requestDataDTO = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
if (requestDataDTO.isValidProfileDB() && requestDataDTO.isValidDeviceId()) { if (requestDataDTO.isValidProfileDB() && requestDataDTO.isValidDeviceId()) {
deviceService.updateUsage(requestDataDTO.getApplication(), requestDataDTO.getDeviceId()); deviceService.updateUsage(requestDataDTO.getDeviceId());
} }
return true; return true;

View File

@@ -2,15 +2,16 @@ package it.integry.ems.directory;
import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ArrayNode;
import it.integry.common.var.CommonConstants; import it.integry.common.var.CommonConstants;
import it.integry.ems.datasource.DataSource;
import it.integry.ems.json.ResponseJSONObjectMapper; import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.properties.EmsProperties; import it.integry.ems.properties.EmsProperties;
import it.integry.ems.response.EsitoType; import it.integry.ems.response.EsitoType;
import it.integry.ems.response.FileItem; import it.integry.ems.response.FileItem;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.config.EmsRestConstants; import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import it.integry.security.utility.RestUtil; import it.integry.security.utility.RestUtil;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
@@ -30,6 +31,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Properties; import java.util.Properties;
import java.util.TimerTask; import java.util.TimerTask;
@@ -53,42 +55,44 @@ public class EmailWatcherListener extends TimerTask {
@Override @Override
public synchronized void run() { public synchronized void run() {
try { try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(emailListenerInfo.getDatabase())) {
Connection conn = multiDBTransactionManager.getPrimaryConnection();
String flagAttivo = null, username = null, password = null, String flagAttivo = null, username = null, password = null,
imap = null, pop3 = null, pop3Port = null, imapPort = null; imap = null, pop3 = null, pop3Port = null, imapPort = null;
DataSource ds = new DataSource();
ds.initialize(emailListenerInfo.getDatabase());
String[] params = emailListenerInfo.getSetupGestBranch().split("\\|"); String[] params = emailListenerInfo.getSetupGestBranch().split("\\|");
if (params.length >= 2) { if (params.length >= 2) {
flagAttivo = setupGest.getSetup(ds.getConnection(), params[0], params[1], "ATTIVO"); final HashMap<String, String> setupData = setupGest.getSetupSection(conn, params[0], params[1]);
username = setupGest.getSetup(ds.getConnection(), params[0], params[1], "USERNAME");
flagAttivo = UtilityHashMap.getValueIfExists(setupData, "ATTIVO");
username = UtilityHashMap.getValueIfExists(setupData, "USERNAME");
if (UtilityString.isNullOrEmpty(username)) if (UtilityString.isNullOrEmpty(username))
throw new Exception(params[0] + "/" + params[1] + "/USERNAME non configurato correttamente"); 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)) if (UtilityString.isNullOrEmpty(password))
throw new Exception(params[0] + "/" + params[1] + "/PASSWORD non configurato correttamente"); 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)) if (UtilityString.isNullOrEmpty(pop3))
throw new Exception(params[0] + "/" + params[1] + "/POP3 non configurato correttamente"); 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)) if (UtilityString.isNullOrEmpty(pop3Port))
throw new Exception(params[0] + "/" + params[1] + "/POP3_PORT non configurato correttamente"); 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)) if (UtilityString.isNullOrEmpty(imap))
throw new Exception(params[0] + "/" + params[1] + "/IMAP non configurato correttamente"); 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)) if (UtilityString.isNullOrEmpty(imapPort))
throw new Exception(params[0] + "/" + params[1] + "/IMAP_PORT non configurato correttamente"); throw new Exception(params[0] + "/" + params[1] + "/IMAP_PORT non configurato correttamente");
} }
ds.close();
if (!UtilityString.isNullOrEmpty(flagAttivo) && "S".equals(flagAttivo)) { if (!UtilityString.isNullOrEmpty(flagAttivo) && "S".equals(flagAttivo)) {
Properties sysProperties = System.getProperties(); Properties sysProperties = System.getProperties();
Session session = Session.getDefaultInstance(sysProperties); Session session = Session.getDefaultInstance(sysProperties);
@@ -160,7 +164,7 @@ public class EmailWatcherListener extends TimerTask {
String value = response.readEntity(String.class); 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) == '{') { if (value.charAt(0) == '{') {
ServiceRestResponse respWra = jsonObjectMapper.readValue(value, ServiceRestResponse.class); ServiceRestResponse respWra = jsonObjectMapper.readValue(value, ServiceRestResponse.class);
if (respWra.getEsito() == EsitoType.KO) { 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.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; 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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
@@ -28,26 +32,26 @@ public class DownloadController {
private MimeTypesHandler mimetypesFileTypeMap; private MimeTypesHandler mimetypesFileTypeMap;
@RequestMapping(value = "download/{uuid}/{fileName}", method = RequestMethod.GET) @RequestMapping(value = "download/{uuid}/{fileName}", method = RequestMethod.GET)
public byte[] download(HttpServletResponse response, public ResponseEntity<byte[]> download(@PathVariable String uuid,
@PathVariable String uuid, @PathVariable String fileName) throws Exception {
@PathVariable String fileName) throws Exception {
byte[] fileContent = downloadFileHandlerService.getDownloadFileContent(uuid); byte[] fileContent = downloadFileHandlerService.getDownloadFileContent(uuid);
if (fileContent != null) { if (fileContent != null) {
String filename = downloadFileHandlerService.getDownloadFileName(uuid); String filename = downloadFileHandlerService.getDownloadFileName(uuid);
String mimeType = Files.probeContentType(Paths.get(fileName)); MediaType mediaType = mimetypesFileTypeMap.getContentType(fileName);
response.setContentType(mimeType); return ResponseEntity.ok()
response.setStatus(HttpServletResponse.SC_OK); .contentType(mediaType)
response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); .contentLength(fileContent.length)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
response.setContentLength(fileContent.length); .builder("attachment")
return fileContent; .filename(filename)
.build()
.toString())
.body(fileContent);
} }
response.sendError(404, "File non trovato"); return ResponseEntity.notFound().build();
return null;
} }
} }

View File

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

View File

@@ -1,5 +1,6 @@
package it.integry.ems.dto; package it.integry.ems.dto;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
public class ExtendedStbActivity { public class ExtendedStbActivity {
@@ -14,11 +15,9 @@ public class ExtendedStbActivity {
private String userCreator; private String userCreator;
private String note; private String note;
private String activityDescription; private String activityDescription;
private Date dataInsAct;
private int priorita; private int priorita;
private Date alarmDate; private LocalDateTime alarmTime;
private Date alarmTime; private LocalDateTime oraInsAct;
private Date oraInsAct;
private String activityTypeId; private String activityTypeId;
private String parentActivityId; private String parentActivityId;
private StbActivityEmailObject emailObject; private StbActivityEmailObject emailObject;
@@ -116,15 +115,6 @@ public class ExtendedStbActivity {
return this; return this;
} }
public Date getDataInsAct() {
return dataInsAct;
}
public ExtendedStbActivity setDataInsAct(Date dataInsAct) {
this.dataInsAct = dataInsAct;
return this;
}
public int getPriorita() { public int getPriorita() {
return priorita; return priorita;
} }
@@ -134,29 +124,20 @@ public class ExtendedStbActivity {
return this; return this;
} }
public Date getAlarmDate() { public LocalDateTime getAlarmTime() {
return alarmDate;
}
public ExtendedStbActivity setAlarmDate(Date alarmDate) {
this.alarmDate = alarmDate;
return this;
}
public Date getAlarmTime() {
return alarmTime; return alarmTime;
} }
public ExtendedStbActivity setAlarmTime(Date alarmTime) { public ExtendedStbActivity setAlarmTime(LocalDateTime alarmTime) {
this.alarmTime = alarmTime; this.alarmTime = alarmTime;
return this; return this;
} }
public Date getOraInsAct() { public LocalDateTime getOraInsAct() {
return oraInsAct; return oraInsAct;
} }
public ExtendedStbActivity setOraInsAct(Date oraInsAct) { public ExtendedStbActivity setOraInsAct(LocalDateTime oraInsAct) {
this.oraInsAct = oraInsAct; this.oraInsAct = oraInsAct;
return this; 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.RunnableArgsWithReturn;
import it.integry.ems.expansion.RunnableWithReturn; import it.integry.ems.expansion.RunnableWithReturn;
import it.integry.ems.looper.service.LooperService; 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.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -37,8 +37,7 @@ public class DynamicCacheService {
DATI_AZIENDA_KEY, DATI_AZIENDA_KEY,
ENTITY_LOGGER_SETUP, ENTITY_LOGGER_SETUP,
GRIGLIA_ACQUISTO_KEY, GRIGLIA_ACQUISTO_KEY,
ENTITY_SYNC_KEY, ENTITY_SYNC_KEY
STB_GEST_SETUP_KEY
} }
public void addItem(Keys key, int invalidateTimeInMins, RunnableWithReturn<Object> refreshAction) { 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()); List<String> finalDbNames = dbNames.stream().map(String::toLowerCase).collect(Collectors.toList());
RunnableWithReturn<Object> internalRefreshAction = () -> { RunnableWithReturn<Object> internalRefreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections() Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream() .stream()
.filter(AvailableConnectionsModel::getInternalDb) .filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase())) .filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName)); .collect(Collectors.groupingBy(AvailableConnectionModel::getDbName));
final HashMap<String, T> cachedDataByDB = new HashMap<>(); final HashMap<String, T> cachedDataByDB = new HashMap<>();
@@ -83,11 +82,11 @@ public class DynamicCacheService {
RunnableWithReturn<Object> refreshAction = () -> { RunnableWithReturn<Object> refreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections() Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream() .stream()
.filter(AvailableConnectionsModel::getInternalDb) .filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase())) .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<>(); final HashMap<String, List<? extends EntityBase>> cachedEntitiesByDB = new HashMap<>();
@@ -138,11 +137,11 @@ public class DynamicCacheService {
RunnableWithReturn<Object> refreshAction = () -> { RunnableWithReturn<Object> refreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections() Map<String, List<AvailableConnectionModel>> databases = settingsModel.getAvailableConnections()
.stream() .stream()
.filter(AvailableConnectionsModel::getInternalDb) .filter(AvailableConnectionModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase())) .filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName)); .collect(Collectors.groupingBy(AvailableConnectionModel::getDbName));
final HashMap<String, List<?>> cacheQueryByDB = new HashMap<>(); 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

@@ -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.component.SQLServerDBSchemaManager;
import it.integry.ems.entity_logger.db_schema_manager.dto.*; import it.integry.ems.entity_logger.db_schema_manager.dto.*;
import it.integry.ems.looper.service.LooperService; 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.Model.SettingsModel;
import it.integry.ems.settings.SettingsController; import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -57,7 +57,7 @@ public class EntityLoggerComponent {
private void syncDBScheme() throws Exception { private void syncDBScheme() throws Exception {
AvailableConnectionsModel connectionsModel = settingsModel.getDefaultConnectionModel(); AvailableConnectionModel connectionsModel = settingsModel.getDefaultConnectionModel();
if (connectionsModel == null) { if (connectionsModel == null) {
throw new Exception("Impossibile ricavare la default connection"); 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))) { if (settingsModel.getAvailableConnections().stream().noneMatch(x -> x.getDbName().equalsIgnoreCase(destDBName))) {
settingsModel.addAvailableConnection(new AvailableConnectionsModel() settingsModel.addAvailableConnection(new AvailableConnectionModel()
.setInternalDb(false) .setInternalDb(false)
.setHost(dbHost) .setHost(dbHost)
.setUsername(dbUsername) .setUsername(dbUsername)
@@ -210,12 +210,12 @@ public class EntityLoggerComponent {
return; return;
try { try {
List<AvailableConnectionsModel> connectionsModels = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true); List<AvailableConnectionModel> connectionsModels = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true);
String historyProfileDB = settingsController.getHistoryProfileDb(); String historyProfileDB = settingsController.getHistoryProfileDb();
try (MultiDBTransactionManager historyMultiDB = new MultiDBTransactionManager(historyProfileDB)) { try (MultiDBTransactionManager historyMultiDB = new MultiDBTransactionManager(historyProfileDB)) {
for (AvailableConnectionsModel sourceConnectionModel : connectionsModels) { for (AvailableConnectionModel sourceConnectionModel : connectionsModels) {
String sql = "SELECT * FROM stb_log_entity_setup" + String sql = "SELECT * FROM stb_log_entity_setup" +
" WHERE entity_name <> " + UtilityDB.valueToString(StbLogEntitySetup.ENTITY); " 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; package it.integry.ems.expansion;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.Observable;
import java.util.Observer;
public class ObservableArrayList<T> extends Observable { public class ObservableArrayList<T> extends Observable {
@@ -122,4 +119,16 @@ public class ObservableArrayList<T> extends Observable {
notifyObservers(); 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; package it.integry.ems.expansion;
import java.util.Objects;
import java.util.Observable; import java.util.Observable;
public class ObservableField<T> extends Observable { public class ObservableField<T> extends Observable {
@@ -34,4 +35,16 @@ public class ObservableField<T> extends Observable {
super.addObserver((o, arg) -> observerCallback.run()); 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

@@ -369,7 +369,7 @@ public abstract class BaseEntityExporter implements IEntityExporter {
entityExportResponse.setMessageContent("Messaggio creato automaticamente: " + "INVIO " + type + " formato " + format); entityExportResponse.setMessageContent("Messaggio creato automaticamente: " + "INVIO " + type + " formato " + format);
} }
fileSharerSettings = MailService.readParameter(multiDBTransactionManager, null); fileSharerSettings = MailService.readParameter(multiDBTransactionManager.getPrimaryConnection(), null);
((EmailFileSharerSettings) fileSharerSettings) ((EmailFileSharerSettings) fileSharerSettings)
.withSubject(entityExportResponse.getMessageSubject()) .withSubject(entityExportResponse.getMessageSubject())
.withTextMessage(entityExportResponse.getMessageContent()) .withTextMessage(entityExportResponse.getMessageContent())
@@ -426,7 +426,7 @@ public abstract class BaseEntityExporter implements IEntityExporter {
try { try {
MailService mailService = ContextLoader.getCurrentWebApplicationContext().getBean(MailService.class); 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("Esportazione di %s - %s", getType(), getFormat()),
String.format("come da accordi, l'esportazione %s - %s &egrave; stata completata.", getType(), getFormat())); String.format("come da accordi, l'esportazione %s - %s &egrave; stata completata.", getType(), getFormat()));

View File

@@ -4,6 +4,7 @@ import it.integry.ems.response.FileItem;
import it.integry.ems.service.EntityProcessor; import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.WtbUsersInfo; import it.integry.ems_model.entity.WtbUsersInfo;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityResultSet; import it.integry.ems_model.utility.UtilityResultSet;
@@ -27,8 +28,13 @@ public class ExportFromQuery {
@Autowired @Autowired
private EntityProcessor entityProcessor; private EntityProcessor entityProcessor;
@Autowired
private SetupGest setupGest;
public EntityExportResponse export (String userName, String type, String format, String whereCond) throws Exception { public EntityExportResponse export (String userName, String type, String format, String whereCond) throws Exception {
String query = setupGest.getExportSetup(multiDBTransactionManager.getPrimaryConnection(), type, format, "QUERY");
WtbUsersInfo wtbUsersInfo = WtbUsersInfo wtbUsersInfo =
new WtbUsersInfo() new WtbUsersInfo()
.setUserName(userName) .setUserName(userName)
@@ -38,18 +44,20 @@ public class ExportFromQuery {
entityProcessor.processEntity(wtbUsersInfo, multiDBTransactionManager); entityProcessor.processEntity(wtbUsersInfo, multiDBTransactionManager);
String queryCustom = wtbUsersInfo.getQueryCustom(); if (UtilityString.isNullOrEmpty(wtbUsersInfo.getQueryCustom()) && UtilityString.isNullOrEmpty(query))
if (UtilityString.isNullOrEmpty(queryCustom))
throw new Exception( throw new Exception(
String.format( String.format(
"Query non configurata per l'utente %s tipo %s formato %s", "Query non configurata per l'utente %s tipo %s formato %s o per il formato.",
userName, type, format)); userName, type, format));
queryCustom = UtilityDB.addwhereCond(queryCustom, whereCond, true);
if (!UtilityString.isNullOrEmpty(wtbUsersInfo.getQueryCustom())) {
query = wtbUsersInfo.getQueryCustom();
}
query = UtilityDB.addwhereCond(query, whereCond, true);
PreparedStatement stm = multiDBTransactionManager PreparedStatement stm = multiDBTransactionManager
.getPrimaryConnection() .getPrimaryConnection()
.prepareStatement(queryCustom, .prepareStatement(query,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY); ResultSet.CONCUR_READ_ONLY);

View File

@@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.dataformat.csv.CsvSchema; import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import com.fasterxml.jackson.dataformat.csv.CsvSchema.Column; 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.IExportFormat;
import it.integry.ems_model.ImportExport.Interfaces.IImportFormat; import it.integry.ems_model.ImportExport.Interfaces.IImportFormat;
import it.integry.ems_model.annotation.DtoField; import it.integry.ems_model.annotation.DtoField;
@@ -64,7 +63,7 @@ public class CsvMapper<T> {
builder.addColumn(new Column(i, columns[i])); builder.addColumn(new Column(i, columns[i]));
} }
builder.setLineSeparator(System.getProperty("line.separator")); builder.setLineSeparator(System.lineSeparator());
CsvSchema schema = builder.build().withoutQuoteChar(); CsvSchema schema = builder.build().withoutQuoteChar();
mapper.configure(JsonGenerator.Feature.IGNORE_UNKNOWN, true); 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 com.annimon.stream.Stream;
import it.integry.ems_model.annotation.DtoField; import it.integry.ems_model.annotation.DtoField;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@@ -10,6 +11,7 @@ import java.lang.reflect.Field;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -76,8 +78,16 @@ public class TxtMapper<T> {
if (ignorePosition) if (ignorePosition)
stringBuilder.append(value).append(fieldsSplitChar); 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); stringBuilder.insert(dtoField.startPosition(), value).append(fieldsSplitChar);
}
} catch (Exception e) { } catch (Exception e) {
logger.error(e); logger.error(e);
@@ -208,6 +218,8 @@ public class TxtMapper<T> {
if (value != null) { if (value != null) {
if (!UtilityString.isNullOrEmpty(dtoField.format()) && value instanceof Date) { if (!UtilityString.isNullOrEmpty(dtoField.format()) && value instanceof Date) {
value = new SimpleDateFormat(dtoField.format()).format(value); 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) { } else if (!UtilityString.isNullOrEmpty(dtoField.formula()) && value instanceof BigDecimal) {
value = ((BigDecimal) value).setScale(dtoField.scale(), RoundingMode.HALF_DOWN); value = ((BigDecimal) value).setScale(dtoField.scale(), RoundingMode.HALF_DOWN);
String formula = dtoField.formula().replaceAll("this", value.toString()); 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 com.fasterxml.jackson.annotation.JsonInclude;
import it.integry.common.var.CommonConstants; 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.json.ResponseJSONObjectMapper;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.model.IntegryApplicationEnum; import it.integry.ems.model.IntegryApplicationEnum;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.user.dto.UserDTO; import it.integry.ems.user.dto.UserDTO;
import it.integry.ems_model.config.EmsRestConstants; import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityString; 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.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
@Component @Component
@Scope("request") @Scope(WebApplicationContext.SCOPE_REQUEST)
public class RequestDataDTO { public class RequestDataDTO {
private final Logger logger = LogManager.getLogger(); private final Logger logger = LogManager.getLogger();
@@ -37,24 +43,32 @@ public class RequestDataDTO {
private String requestClientIP; private String requestClientIP;
private String profileDB; 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 Long deviceId;
private String username; private String username;
private String password; private String password;
private boolean includeNulls = false; private boolean includeNulls = false;
private IntegryApplicationEnum integryApplication = IntegryApplicationEnum.PVM; private IntegryApplicationEnum integryApplication;
private UserDTO userDTO; private UserDTO userDTO;
@PostConstruct @PostConstruct
public void init() throws IOException, InterruptedException { 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); profileDB = request.getParameter(CommonConstants.PROFILE_DB);
} else if (request != null && request.getHeader(CommonConstants.PROFILE_DB) != null) { } else if (request != null && request.getHeader(CommonConstants.PROFILE_DB) != null) {
profileDB = request.getHeader(CommonConstants.PROFILE_DB); 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(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) { if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) {
readAuthenticationClaims(authentication); readAuthenticationClaims(authentication);
@@ -89,6 +103,24 @@ public class RequestDataDTO {
} else { } else {
jsonObjectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); jsonObjectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
} }
// Logica di fallback o recupero tenant da sessione/utente
if (profileDB == null || profileDB.isEmpty()) {
// Esempio: recupero da sessione se presente
// tenantId = (String) request.getSession().getAttribute("TENANT_ID");
// Fallback temporaneo per test
// tenantId = DEFAULT_TENANT;
}
if (profileDB != null) {
TenantContext.setCurrentTenant(profileDB);
}
}
@PreDestroy
public void destroy() throws Exception {
TenantContext.clear();
} }
@@ -98,10 +130,20 @@ public class RequestDataDTO {
.setPassword("sql"); .setPassword("sql");
} }
public static RequestDataDTO scheduledOperationsMockupData() {
return new RequestDataDTO()
.setUsername("INTEGRY")
.setPassword("INTEGRY");
}
public boolean isValidProfileDB() { public boolean isValidProfileDB() {
return !UtilityString.isNullOrEmpty(profileDB); return !UtilityString.isNullOrEmpty(profileDB);
} }
public boolean isValidCodMdep() {
return !UtilityString.isNullOrEmpty(codMdep);
}
public boolean isValidDeviceId() { public boolean isValidDeviceId() {
return deviceId != null; return deviceId != null;
} }
@@ -132,6 +174,20 @@ public class RequestDataDTO {
return profileDB; 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() { public Long getDeviceId() {
return deviceId; 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(), 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,18 @@
package it.integry.ems.jpa;
public class TenantContext {
private static final ThreadLocal<String> currentTenant = new ThreadLocal<>();
public static void setCurrentTenant(String tenant) {
currentTenant.set(tenant);
}
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

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

View File

@@ -1,7 +1,8 @@
package it.integry.ems.license; 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.beans.factory.annotation.Autowired;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -11,7 +12,6 @@ import java.util.Random;
public class LicenseCheckInterceptor extends HandlerInterceptorAdapter { public class LicenseCheckInterceptor extends HandlerInterceptorAdapter {
@Autowired @Autowired
private LicenseComponent licenseComponent; private LicenseComponent licenseComponent;
@@ -19,13 +19,9 @@ public class LicenseCheckInterceptor extends HandlerInterceptorAdapter {
HttpServletRequest request, HttpServletRequest request,
HttpServletResponse response, Object handler) { HttpServletResponse response, Object handler) {
RequestDataDTO requestData = ContextLoader.getCurrentWebApplicationContext().getBean(RequestDataDTO.class);
String profileDB = null; String profileDB = requestData.getProfileDB();
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);
}
LicenseStatusDTO licenseStatusDTO = null; LicenseStatusDTO licenseStatusDTO = null;
if (profileDB != null) licenseStatusDTO = licenseComponent.getLicenseStatus(profileDB); 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.EsitoType;
import it.integry.ems.response.ServiceRestResponse; import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.HttpRestWrapper; 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.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -25,6 +25,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Component @Component
@@ -59,11 +60,11 @@ public class LicenseComponent {
if (!canStart) if (!canStart)
return; return;
List<AvailableConnectionsModel> availableConnectionsModels = settingsModel.getAvailableConnections(true); List<AvailableConnectionModel> availableConnectionModels = settingsModel.getAvailableConnections(true);
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager()) { try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager()) {
for (AvailableConnectionsModel model : availableConnectionsModels) { for (AvailableConnectionModel model : availableConnectionModels) {
multiDBTransactionManager.addConnection(model); multiDBTransactionManager.addConnection(model);
} }
@@ -105,14 +106,19 @@ public class LicenseComponent {
} else { } else {
List<LicenseStatusDTO> licenses = response.getDTO(new TypeReference<List<LicenseStatusDTO>>() { List<LicenseStatusDTO> licenses = response.getDTO(new TypeReference<List<LicenseStatusDTO>>() {
}); });
if (licenses == null) return; if (licenses == null || licenses.isEmpty()) return;
listAziende.forEach((key, value) -> { listAziende.forEach((key, value) -> {
cachedLicenseStatus.remove(key); cachedLicenseStatus.remove(key);
licenses.stream().filter(x -> x.getPartIva().equalsIgnoreCase(value)) final Optional<LicenseStatusDTO> licenseSearch = licenses.stream().filter(x -> x.getPartIva().equalsIgnoreCase(value))
.findFirst() .findFirst();
.ifPresent(license -> cachedLicenseStatus.put(key, license));
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 { public class LicenseStatusDTO {
@SqlField("part_iva") @SqlField("part_iva")
private String partIva; private String partIva;
@SqlField("classe_merito") @SqlField("classe_merito")
private Quality quality; private Quality quality;
@SqlField @SqlField
private Status status; private Status status;
@SqlField("data_scad_license") @SqlField("data_scad_license")
private Date expiringDate; private Date expiringDate;

View File

@@ -1,6 +1,7 @@
package it.integry.ems.menu.service; package it.integry.ems.menu.service;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.microsoft.sqlserver.jdbc.SQLServerConnection;
import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement; import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement;
import it.integry.annotations.PostContextAutowired; import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct; import it.integry.annotations.PostContextConstruct;
@@ -100,6 +101,7 @@ public class MenuConfigurationService {
} }
private void internalRefresh(Connection connection, MenuConfigDTO menuConfig, boolean forceRefresh) throws Exception { private void internalRefresh(Connection connection, MenuConfigDTO menuConfig, boolean forceRefresh) throws Exception {
SQLServerConnection sqlServerConnection = connection.unwrap(SQLServerConnection.class);
final Azienda azienda = Azienda.getDefaultAzienda(connection); final Azienda azienda = Azienda.getDefaultAzienda(connection);
if (azienda.getTipoAzienda() == null) if (azienda.getTipoAzienda() == null)
@@ -120,7 +122,7 @@ public class MenuConfigurationService {
"descrizione, gest_name, entity_name, picture_menu, picture_select, object_type, flag_printer_setup, parameter, note, open_type, is_deprecated)" + "descrizione, gest_name, entity_name, picture_menu, picture_select, object_type, flag_printer_setup, parameter, note, open_type, is_deprecated)" +
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) connection.prepareStatement(insertStbMenuOpzSQL)) { try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) sqlServerConnection.prepareStatement(insertStbMenuOpzSQL)) {
for (StbMenuOpzDTO stbMenuOpzDto : menuConfig.getStbMenuOpz()) { for (StbMenuOpzDTO stbMenuOpzDto : menuConfig.getStbMenuOpz()) {
insertBulkPs.setString(1, stbMenuOpzDto.getCodOpz()); insertBulkPs.setString(1, stbMenuOpzDto.getCodOpz());
@@ -168,7 +170,7 @@ public class MenuConfigurationService {
"pos_tipo_azienda, pos_cliente, descrizione_estesa) " + "pos_tipo_azienda, pos_cliente, descrizione_estesa) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) connection.prepareStatement(insertStbMenuSql)) { try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) sqlServerConnection.prepareStatement(insertStbMenuSql)) {
for (StbMenuDTO stbMenuDto : stbMenus) { for (StbMenuDTO stbMenuDto : stbMenus) {
insertBulkPs.setString(1, stbMenuDto.getCodOpz()); insertBulkPs.setString(1, stbMenuDto.getCodOpz());

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.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.ApplicationName; import it.integry.ems_model.types.ApplicationName;
import it.integry.ems_model.types.OperationType; 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.Query;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.dto.IndexTableDTO; 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.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.web.context.ContextLoader; import org.springframework.web.context.ContextLoader;
@@ -74,6 +76,18 @@ public abstract class BaseMigration implements MigrationModelInterface {
return UtilityDB.executeSimpleQueryDTO(connection, sql, clazz); 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 { protected void executeStatement(String... sqls) throws SQLException {
executeStatement(connection, sqls); 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 { 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" + executeStatement("IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + sqlObject.toString() + " " + objectName, "\tDROP " + sqlObject.toString() + " " + objectName,
sql); sql);
@@ -154,7 +172,20 @@ public abstract class BaseMigration implements MigrationModelInterface {
UtilityDB.createIndex(connection, indexTableDTO); 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); 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 { protected void deleteSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup() StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName) .setGestName(gestName)
@@ -474,6 +524,16 @@ public abstract class BaseMigration implements MigrationModelInterface {
stbGestSetup.manageWithParentConnection(connection); 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) { protected void addAutomatedOperation(BaseScheduledOperationDTO operation) {
new Thread(() -> { new Thread(() -> {
try { try {
@@ -594,4 +654,38 @@ public abstract class BaseMigration implements MigrationModelInterface {
protected boolean isSqlServer2022() throws Exception { protected boolean isSqlServer2022() throws Exception {
return getSqlCompatibilityLevel() == DatabaseVersionEnum.SQLServer2022; 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_IlVisone,
IntegryCustomerDB.Agricoper_Luva), IntegryCustomerDB.Agricoper_Luva),
ATI(IntegryCustomerDB.ATI_Finpart), ATI(IntegryCustomerDB.ATI, IntegryCustomerDB.ATI_Finpart),
Auricchio(IntegryCustomerDB.Auricchio_Auricchio, Auricchio(IntegryCustomerDB.Auricchio_Auricchio,
IntegryCustomerDB.Auricchio_AuricchioMiki, IntegryCustomerDB.Auricchio_AuricchioMiki,
IntegryCustomerDB.Auricchio_AuricchioSrl, IntegryCustomerDB.Auricchio_AuricchioSrl,
@@ -20,6 +20,7 @@ public enum IntegryCustomer {
Biolevante(IntegryCustomerDB.Biolevante_Biolevante, Biolevante(IntegryCustomerDB.Biolevante_Biolevante,
IntegryCustomerDB.Biolevante_BiolevanteStorico, IntegryCustomerDB.Biolevante_BiolevanteStorico,
IntegryCustomerDB.Biolevante_TenutaSanMartino), IntegryCustomerDB.Biolevante_TenutaSanMartino),
CapelliMonelli(IntegryCustomerDB.CapelliMonelli_CapelliMonelli),
Carelli(IntegryCustomerDB.Carelli_Carelli, Carelli(IntegryCustomerDB.Carelli_Carelli,
IntegryCustomerDB.Carelli_GestFood, IntegryCustomerDB.Carelli_GestFood,
IntegryCustomerDB.Carelli_Chiuso, IntegryCustomerDB.Carelli_Chiuso,
@@ -70,7 +71,8 @@ public enum IntegryCustomer {
Gramm(IntegryCustomerDB.Gramm_Gramm, Gramm(IntegryCustomerDB.Gramm_Gramm,
IntegryCustomerDB.Gramm_PrimeOlive, IntegryCustomerDB.Gramm_PrimeOlive,
IntegryCustomerDB.Gramm_ProveStage, IntegryCustomerDB.Gramm_ProveStage,
IntegryCustomerDB.Gramm_2MHolding), IntegryCustomerDB.Gramm_2MHolding,
IntegryCustomerDB.Gramm_GrammUsa),
Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica), Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica),
Igood(IntegryCustomerDB.Igood_Aida, Igood(IntegryCustomerDB.Igood_Aida,
IntegryCustomerDB.Igood_Igood, IntegryCustomerDB.Igood_Igood,
@@ -117,7 +119,10 @@ public enum IntegryCustomer {
IntegryCustomerDB.Suit_TenutaArianna, IntegryCustomerDB.Suit_TenutaArianna,
IntegryCustomerDB.Suit_Valpietro), IntegryCustomerDB.Suit_Valpietro),
Tempesta(IntegryCustomerDB.Tempesta_Tempesta, Tempesta(IntegryCustomerDB.Tempesta_Tempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta), IntegryCustomerDB.Tempesta_DI,
IntegryCustomerDB.Tempesta_VivaiTempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta_DI
),
Tosca(IntegryCustomerDB.Tosca_Ba, Tosca(IntegryCustomerDB.Tosca_Ba,
IntegryCustomerDB.Tosca_Ce, IntegryCustomerDB.Tosca_Ce,
IntegryCustomerDB.Tosca_Cz, IntegryCustomerDB.Tosca_Cz,

View File

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

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.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface; 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.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
@@ -14,7 +14,7 @@ public class Migration_20210721093948 extends BaseMigration implements Migration
@Override @Override
public void up() throws Exception { public void up() throws Exception {
AvailableConnectionsModel historyDBModel = settingsController.getHistoryDbConnectionModel(); AvailableConnectionModel historyDBModel = settingsController.getHistoryDbConnectionModel();
if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName())) if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName()))
return; 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.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface; 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.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
@@ -14,7 +14,7 @@ public class Migration_20210924152555 extends BaseMigration implements Migration
@Override @Override
public void up() throws Exception { public void up() throws Exception {
AvailableConnectionsModel historyDBModel = settingsController.getHistoryDbConnectionModel(); AvailableConnectionModel historyDBModel = settingsController.getHistoryDbConnectionModel();
if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName())) if (!settingsModel.getDefaultProfile().equalsIgnoreCase(connection.getProfileName()))
return; 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.entity.WtbUsers;
import it.integry.ems_model.types.OperationType; import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB; import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString; import it.integry.ems_model.utility.UtilityString;
import it.integry.security.utility.CryptoUtils; import it.integry.security.utility.CryptoUtils;
@@ -57,14 +58,13 @@ public class Migration_20220413102657 extends BaseMigration implements Migration
.setUserCode(wtbUser.getUserCode()) .setUserCode(wtbUser.getUserCode())
.setDetails(wtbUser.getDetails()) .setDetails(wtbUser.getDetails())
.setLastAccessDatetime(wtbUser.getLastAccessDatetime()) .setLastAccessDatetime(wtbUser.getLastAccessDatetime())
.setPasswordEndtime(wtbUser.getPasswordEndtime()) .setPasswordEndtime(UtilityLocalDate.localDateTimeFromDate(wtbUser.getPasswordEndtime()))
.setUrlCss(wtbUser.getUrlCss()) .setUrlCss(wtbUser.getUrlCss())
.setCodLang(wtbUser.getCodLang()) .setCodLang(wtbUser.getCodLang())
.setCreationDatetime(wtbUser.getCreationDatetime()) .setCreationDatetime(wtbUser.getCreationDatetime())
.setPasswordExpiresDays(wtbUser.getPasswordExpiresDays()) .setPasswordExpiresDays(wtbUser.getPasswordExpiresDays())
.setLastPasswords(wtbUser.getLastPasswords()) .setLastPasswords(wtbUser.getLastPasswords())
.setFlagPasswordExpiring(wtbUser.getFlagPasswordExpiring()) .setFlagPasswordExpiring(wtbUser.getFlagPasswordExpiring());
.setDestructionDatetime(wtbUser.getDestructionDatetime());;
stbUser.setOperation(OperationType.INSERT); stbUser.setOperation(OperationType.INSERT);
stbUser.manageWithParentConnection(connection, droolsDataCompleting); stbUser.manageWithParentConnection(connection, droolsDataCompleting);

View File

@@ -0,0 +1,71 @@
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_20250805155057 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("EXPORT_ORDINI VENDITA", "EXCEL_IMMAGINI", "QUERY", null,
"inserire la query base per tutte le esportazioni", false, null, false, false,
false, false, false, null, false, null);
if (isCustomer(IntegryCustomer.FolliesGroup)) {
updateSetupValue("EXPORT_ORDINI VENDITA", "EXCEL_IMMAGINI",
"QUERY", "\n" +
"SELECT mtb_aart.cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" dtb_ordr.cod_col,\n" +
" dtb_ordr.cod_tagl,\n" +
" ttb_bar_code.cod_barre,\n" +
" dtb_ordr.qta_ord,\n" +
" dtb_ordr.val_unt,\n" +
" CEILING((dtb_ordr.val_unt + (ttb_style.val_scatto * ttb_style_taglie.num_scatto)) *\n" +
" (ttb_style.prz_retail_vend_iva / ttb_style.prezzo_base) / 0.10) * 0.10 AS przvendretail,\n" +
" ttb_style.des_comp,\n" +
" ttb_style_dazi_usa.cod_dazio,\n" +
" ttb_style.cod_nazi\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr\n" +
" ON dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" INNER JOIN mtb_aart\n" +
" ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN ttb_style\n" +
" ON dtb_ordr.cod_mart = ttb_style.cod_style\n" +
" LEFT OUTER JOIN ttb_comp ON ttb_style.cod_comp = ttb_comp.cod_comp\n" +
" LEFT OUTER JOIN ttb_style_taglie\n" +
" ON dtb_ordr.cod_mart = ttb_style_taglie.cod_style\n" +
" AND dtb_ordr.cod_tagl = ttb_style_taglie.cod_tagl\n" +
" LEFT OUTER JOIN ttb_style_dazi_usa ON ttb_style_taglie.cod_style = ttb_style_dazi_usa.cod_style AND\n" +
" ttb_style_taglie.babynobaby = ttb_style_dazi_usa.babynobaby\n" +
" LEFT OUTER JOIN ttb_bar_code\n" +
" ON dtb_ordr.cod_mart = ttb_bar_code.cod_style\n" +
" AND dtb_ordr.cod_col = ttb_bar_code.cod_col\n" +
" AND dtb_ordr.cod_tagl = ttb_bar_code.cod_tagl\n" +
"WHERE dtb_ordr.gestione = 'V'\n" +
" AND dtb_ordr.flag_evaso <> 'A'\n" +
"ORDER BY mtb_aart.cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" dtb_ordr.cod_col,\n" +
" ttb_style_taglie.pos");
executeStatement("update wtb_users_info SET query_custom = null\n" +
"where export_type = 'ORDINI VENDITA' AND \n" +
"format_file = 'EXCEL_IMMAGINI'");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250805173242 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "PROPONI_ULTIMO_VALORE_UDC", "S",
"Proponi l'ultimo valore inserito in creazione udc.", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,29 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250806103557 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("w_ddocu_ord_rc", "SETUP", "VISUALIZZA_TUTTI_ALLEGATI", "S",
"se impostata ad S permette di visualizzare tutte le versioni delle stampe, ad N solo l'ultima", false, null, false, false,
false, false, false, null, false, null);
if (isCustomerDb(IntegryCustomerDB.Cosmapack_Cosmint)){
updateSetupValue("w_ddocu_ord_rc","SETUP","VISUALIZZA_TUTTI_ALLEGATI","N");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,41 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250806105411 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Vinella_Vinella))
return;
updateSetupValue("w_jriep_presenze_dip_disp", "DATAWINDOW", "D_JRIEP_PRESENZE_DIP_COMM_REP", "D_JRIEP_PRESENZE_DIP_ORE_VINELLA_REP",
null, false, null, false, false, false,
false, false, null, false, null);
executeStatement("DELETE\n" +
"FROM stb_gest_setup_depo\n" +
"WHERE gest_name = 'w_jriep_presenze_dip_disp'\n" +
" AND section = 'DATAWINDOW'\n" +
" AND key_section = 'D_JRIEP_PRESENZE_DIP_COMM_REP'"
);
executeStatement("DELETE\n" +
"FROM wtb_gest_setup_user\n" +
"WHERE gest_name = 'w_jriep_presenze_dip_disp'\n" +
" AND section = 'DATAWINDOW'\n" +
" AND key_section = 'D_JRIEP_PRESENZE_DIP_COMM_REP'"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,139 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250806163114 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS()) return;
createOrUpdateProcedure("UpdProgOrdini", "CREATE PROCEDURE [dbo].[UpdProgOrdini](\n" +
" @codAnag varchar(5),\n" +
" @codDtip varchar(5),\n" +
" @dataDoc dateTime,\n" +
" @serDoc varchar(2),\n" +
" @numDoc integer,\n" +
" @segno integer,\n" +
" @Operation varchar(1))\n" +
" /***DESCRIZIONE: Questa storedProcedure aggiorna la quantitÃÆÃ†â€™Ãƒâ€šÃ  evasa degli ordini e anche il \n" +
" numero di pezzi, non contiene una serie di logiche particolarti tipo la \n" +
" sostuzione dell'articolo nell'ordine\n" +
" \n" +
" */\n" +
"AS\n" +
"BEGIN\n" +
" SET NOCOUNT ON;\n" +
" \n" +
"\n" +
" UPDATE dtb_ordr\n" +
" SET dtb_ordr.qta_evasa = CASE WHEN (SELECT application_name from azienda ) = 'WINGEST' THEN dtb_ordr.qta_evasa + CASE dtb_ordr.unt_ord\n" +
" when doc.unt_doc then doc.qta_doc\n" +
" when doc.unt_doc2 then doc.qta_doc2\n" +
" when doc.unt_doc3 then doc.qta_doc3\n" +
" else \n" +
"Round((@segno * (doc.qta_doc_no_um / dtb_ordr.rap_conv)),mtb_unt_mis.cifre_dec) end \n" +
" ELSE dtb_ordr.qta_evasa END, \n" +
" dtb_ordr.num_cnf_evasa = dtb_ordr.num_cnf_evasa + (@segno * doc.num_cnf),\n" +
" dtb_ordr.flag_evaso_forzato = CASE WHEN @Operation = 'D' THEN 'N' ELSE doc.flag_evaso_forzato END,\n" +
" dtb_ordr.flag_evaso = CASE WHEN @Operation = 'D' THEN 'I'\n" +
" WHEN doc.flag_evaso_forzato = 'S' THEN 'E' ELSE dtb_ordr.flag_evaso END \n" +
" FROM dtb_ordr INNER JOIN mtb_unt_mis ON dtb_ordr.unt_ord = mtb_unt_mis.unt_mis\n" +
" INNER JOIN \n" +
" (SELECT dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord,\n" +
" dtb_docr.riga_ord,\n" +
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
" \n" +
" dtb_docr.unt_doc,\n" +
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
" \n" +
" dtb_docr.unt_doc2,\n" +
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
" \n" +
" dtb_docr.unt_doc3,\n" +
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" ( dtb_doct.gestione <> 'L' AND (dtb_tipi.segno_qta_car = 1 OR dtb_tipi.segno_qta_scar = 1 ) OR \n" +
" ( dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_scar = 1 ))\n" +
" GROUP BY dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord,\n" +
" dtb_docr.riga_ord, \n" +
" dtb_docr.unt_doc, \n" +
" dtb_docr.unt_doc2, \n" +
" dtb_docr.unt_doc3 \n" +
" UNION ALL\n" +
" SELECT dtb_ordt.gestione_rif,\n" +
" dtb_ordt.data_ord_rif, \n" +
" dtb_ordt.num_ord_rif, \n" +
" dtb_ordt.riga_ord_rif,\n" +
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
" \n" +
" dtb_docr.unt_doc,\n" +
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
" \n" +
" dtb_docr.unt_doc2,\n" +
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
" \n" +
" dtb_docr.unt_doc3,\n" +
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" left outer join dtb_ordt ON dtb_tipi.gestione = dtb_ordt.gestione and\n" +
" dtb_docr.data_ord = dtb_ordt.data_ord and\n" +
" dtb_docr.num_ord = dtb_ordt.num_ord\n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_car = 1 AND\n" +
" (SELECT application_name from azienda ) = 'WINGEST'\n" +
" GROUP BY dtb_ordt.gestione_rif,\n" +
" dtb_ordt.data_ord_rif,\n" +
" dtb_ordt.num_ord_rif,\n" +
" dtb_ordt.riga_ord_rif, \n" +
" dtb_docr.unt_doc, \n" +
" dtb_docr.unt_doc2, \n" +
" dtb_docr.unt_doc3 ) doc ON\n" +
" dtb_ordr.gestione = doc.gestione AND\n" +
" dtb_ordr.data_ord = doc.data_ord AND\n" +
" dtb_ordr.num_ord = doc.num_ord AND\n" +
" dtb_ordr.riga_ord = doc.riga_ord;\n" +
" \n" +
" \n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,45 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250807105039 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS()) return;
createOrUpdateView(
"wtb_users",
"CREATE VIEW [dbo].[Wtb_users] AS\n" +
" SELECT [User_name],\n" +
" [Full_name],\n" +
" CASE\n" +
" WHEN stb_user.key_group = 1 OR stb_user.flag_dba = 'S' THEN NULL\n" +
" ELSE dbo.sys_dcd_pss([Password]) END AS [Password],\n" +
" [key_group],\n" +
" [User_code],\n" +
" [Details],\n" +
" [Last_access_datetime],\n" +
" [flag_attivo] AS ctrl_state,\n" +
" [password_endtime],\n" +
" [url_css],\n" +
" [cod_lang],\n" +
" [creation_datetime],\n" +
" [e_mail],\n" +
" [password_expires_days],\n" +
" [last_passwords],\n" +
" [flag_password_expiring],\n" +
" password_endtime AS [destruction_datetime]\n" +
" FROM [dbo].stb_user\n" +
" WHERE flag_extra_user = 'S'\n"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250807112659 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
dropColumn("stb_user", "destruction_datetime");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,44 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250807114849 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_BILANCE", "DIGI", "ATTIVO", "N",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "EMAIL_FOR_LOG", null,
"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "FILE_FILTER", null,
"Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "GG_CANC_FILE", null,
"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "IMPORT_REST", "S",
"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "LISTENING", "N",
"Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "PATH_FILE", null,
"Directory contente i file da importare.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BILANCE", "DIGI", "PATH_FILE_IMPORTED", null,
"Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250807114902 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS()) return;
executeStatement("CREATE TABLE ntb_pesate\n" +
"(\n" +
" id BIGINT IDENTITY PRIMARY KEY,\n" +
" cod_mdep VARCHAR(5) NOT NULL,\n" +
" data_pesate DATETIME NOT NULL,\n" +
" cod_mart VARCHAR(15) NOT NULL,\n" +
" qta_pesata NUMERIC(10, 5) NOT NULL DEFAULT 0,\n" +
" prz_vend NUMERIC(20, 5) NOT NULL DEFAULT 0,\n" +
"\n" +
" CONSTRAINT fk_ntb_pesate_mtb_depo\n" +
" FOREIGN KEY (cod_mdep) REFERENCES mtb_depo (cod_mdep),\n" +
" CONSTRAINT fk_ntb_pesate_mtb_aart\n" +
" FOREIGN KEY (cod_mart) REFERENCES mtb_aart (cod_mart)\n" +
");");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,47 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.StbGestSetupDet;
import it.integry.ems_model.types.OperationType;
public class Migration_20250807165031 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
deleteSetup("PVM", "CHIUSURA_TAGLI_PREZZO", "COD_MGRP");
createSetup("PVM", "CHIUSURA_TAGLI_PREZZO", "COD_MGRP", null,
"Setup per filtrare i gruppi disponibili per gruppo utente.", false, "COD_MGRP", false, false,
false, false, false, "Wtb_user_groups", true);
if (isCustomerDb(IntegryCustomerDB.Carelli_Carelli)) {
StbGestSetupDet stbGestSetupDet = new StbGestSetupDet()
.setGestName("PVM")
.setSection("CHIUSURA_TAGLI_PREZZO")
.setKeySection("COD_MGRP")
.setTipoSetup("Wtb_user_groups")
.setValColRif("10")
.setValue("02");
stbGestSetupDet.setOperation(OperationType.INSERT_OR_UPDATE);
stbGestSetupDet.manageWithParentConnection(connection);
}
createSetupQuery("COD_PROMO", "COD_PROMO", "SELECT cod_promo FROM vtb_promo");
createSetup("PVM", "CHIUSURA_TAGLI_PREZZO", "COD_PROMO", null,
"Setup per filtrare le promo disponibili per gruppo utente.", false, "COD_PROMO", false, false,
false, false, false, "Wtb_user_groups", true);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250807171229 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE dtb_tipi add cod_paga varchar(5), \n" +
"\tFOREIGN KEY (cod_paga) REFERENCES gtb_paga(cod_paga);");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,44 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250808161600 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "ATTIVO", "N",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "EMAIL_FOR_LOG", null,
"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "FILE_FILTER", null,
"Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "GG_CANC_FILE", null,
"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "IMPORT_REST", "S",
"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "LISTENING", "N",
"Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "PATH_FILE", null,
"Directory contente i file da importare.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_BANCA", "TASSI_DI_CAMBIO", "PATH_FILE_IMPORTED", null,
"Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250811101036 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("drop table drl_tipi_mod_stampa");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250811102732 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement(" CREATE TABLE drl_tipi_report (id bigint identity not null, cod_dtip varchar(5) not null, report_id bigint not null, \n" +
" \tsort_id TinyInt not null default 0, report_type tinyInt, is_required bit default 0,\n" +
" CONSTRAINT PK_drl_tipi_report PRIMARY KEY (id),\n" +
" CONSTRAINT FK_drl_tipi_report_cod_dtip FOREIGN KEY (cod_dtip) REFERENCES dtb_tipi(cod_dtip),\n" +
" CONSTRAINT FK_drl_tipi_report_report_id FOREIGN KEY (report_id) REFERENCES wtb_jrept(id))",
" CREATE UNIQUE INDEX idx_cod_dtip_sort_id ON drl_tipi_report (cod_dtip, sort_id)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,47 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250812171739 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("IMPORT_COLLI", "SONOCO", "ATTIVO", "N",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "COD_ANAG", null,
"Codice fornitore", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "EMAIL_FOR_LOG", null,
"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "FILE_FILTER", null,
"Inserire il criterio di filtro dei file o il nome del file specifio (seguire la sintassi di java)", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "GG_CANC_FILE", null,
"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "IMPORT_REST", "S",
"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "LISTENING", "N",
"Se LISTENIG = 'N' la procedura di importazione non si potrà mai mettere in ascolto sulla directory perchè nella procedura vengono prese in considerazione più file.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "PATH_FILE", null,
"Directory contente i file da importare.", false, null, false, false,
false, false, false, null, false, null);
createSetup("IMPORT_COLLI", "SONOCO", "PATH_FILE_IMPORTED", null,
"Directory dove vengono spostati i file dopo l'importazione.", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,57 @@
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.JtbFasi;
import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.entity.StbGestSetupDet;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import java.util.List;
public class Migration_20250818162653 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
StbGestSetup setup = new StbGestSetup()
.setGestName("PVM")
.setSection("MONITORAGGIO_LINEE_V2")
.setKeySection("REPORT_NAME_ORDINE")
.setTipoSetup(JtbFasi.ENTITY);
setup.setOperation(OperationType.UPDATE);
if (isCustomer(IntegryCustomer.RossoGargano)){
String sql = "SELECT cod_jfas,cod_jfas_parent from jtb_fasi where cod_jfas_parent in ('CONF','PROD') and um_prod is not null";
List<JtbFasi> listFasi = UtilityDB.executeSimpleQueryDTO(connection, sql, JtbFasi.class);
if (!UtilityList.isNullOrEmpty(listFasi)){
for (JtbFasi jtbFasi: listFasi){
StbGestSetupDet setupDet = new StbGestSetupDet()
.setValColRif(jtbFasi.getCodJfas())
.setGestName(setup.getGestName())
.setSection(setup.getSection())
.setKeySection(setup.getKeySection())
.setTipoSetup(setup.getTipoSetup())
.setValue("CONF".equalsIgnoreCase(jtbFasi.getCodJfasParent()) ? "StampaOrdineDiEtichettatura" : "StampaOrdineDiLavorazione");
setupDet.setOperation(OperationType.INSERT);
setup.getStbGestSetupDet().add(setupDet);
}
}
}
setup.manageWithParentConnection(connection);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,433 @@
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_20250825162112 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Smetar)) return;
createOrUpdateView("vsvw_vendite", "CREATE view [dbo].[vsvw_vendite] as \n" +
"SELECT DISTINCT dtb_doct_b.cod_dtip_val AS cod_dtip,\n" +
" dtb_doct_b.data_doc_val AS data_doc,\n" +
" dtb_doct_b.ser_doc_val AS ser_doc,\n" +
" dtb_doct_b.num_doc_val AS num_doc,\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_doct_a.cod_vage,\n" +
" ISNULL(vtb_clie.cod_anag_stat, dtb_doct_b.cod_anag) AS cod_anag,\n" +
" dtb_doct_b.cod_vdes,\n" +
" dtb_doct_b.cod_vzon,\n" +
" vtb_clie.cod_vtip,\n" +
" dtb_doct_b.cod_dtip AS cod_dtip_bolla,\n" +
" dtb_doct_b.data_doc AS data_doc_bolla,\n" +
" dtb_doct_b.ser_doc AS ser_doc_bolla,\n" +
" dtb_doct_b.num_doc AS num_doc_bolla,\n" +
" dtb_doct_b.cod_mdep,\n" +
" ISNULL(mtb_aart.cod_mart_stat, dtb_docr.cod_mart) AS cod_mart,\n" +
" mtb_aart.cod_mgrp,\n" +
" mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mtip,\n" +
" mtb_aart.cod_mstp,\n" +
" ISNULL(mtb_aart.descrizione_stat, dtb_docr.descrizione) AS descrizione,\n" +
" dtb_docr.unt_doc,\n" +
" (segno_val_scar - segno_val_car) * dtb_doct_a.tot_imponib /\n" +
" dtb_doct_a.cambio AS tot_imponib,\n" +
" (segno_val_scar - segno_val_car) * dtb_doct_a.tot_iva /\n" +
" dtb_doct_a.cambio AS tot_iva,\n" +
" dtb_doct_b.tot_imponib / dtb_doct_b.cambio AS tot_imponib_bolla,\n" +
" dtb_doct_b.tot_iva / dtb_doct_b.cambio AS tot_iva_bolla,\n" +
" (segno_val_scar - segno_val_car) * dtb_docr.importo_riga /\n" +
" dtb_doct_b.cambio AS importo_riga,\n" +
" CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100\n" +
" THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_vend,\n" +
" CASE\n" +
" WHEN mtb_aart.peso_kg <> 0 AND mtb_aart.peso_kg IS NOT NULL THEN (CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100\n" +
" THEN\n" +
" (segno_qta_scar - segno_qta_car) *\n" +
" qta_doc *\n" +
" dtb_docr.rap_conv *\n" +
" mtb_aart.peso_kg\n" +
" ELSE 0 END)\n" +
" ELSE 0 END AS qta_vend_kg,\n" +
" CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100 THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100)) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_vend,\n" +
" CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100 THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_omg,\n" +
" CASE\n" +
" WHEN mtb_aart.peso_kg <> 0 AND mtb_aart.peso_kg IS NOT NULL THEN (CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100\n" +
" THEN\n" +
" (segno_qta_scar - segno_qta_car) *\n" +
" qta_doc *\n" +
" dtb_docr.rap_conv *\n" +
" mtb_aart.peso_kg\n" +
" ELSE 0 END)\n" +
" ELSE 0 END AS qta_omg_kg,\n" +
" CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100 THEN\n" +
" ((segno_qta_scar - segno_qta_car) * qta_doc * val_unt) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_omg,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_prov / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_prov) /\n" +
" dtb_doct_b.cambio AS importo_prov,\n" +
" dtb_docr.id_riga,\n" +
" gtb_divi.cod_divi,\n" +
" dtb_doct_a.listino AS cod_vlis,\n" +
" CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100\n" +
" THEN (segno_qta_scar - segno_qta_car) * qta_doc * costo_unt / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_costo,\n" +
" CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100 THEN\n" +
" ((segno_qta_scar - segno_qta_car) * qta_doc * costo_unt) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_omg_costo,\n" +
" CASE\n" +
" WHEN sconto8 = 100 THEN ((segno_qta_scar - segno_qta_car) * qta_doc * costo_unt) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_scarti_prod,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'R' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100)) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_rivendibili,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'S' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100)) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_non_rivendibili,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'P' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100)) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_rettifica_prezzo,\n" +
" CASE\n" +
" WHEN flag_tipo_reso IS NOT NULL THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_resi_rivendibili,\n" +
" dtb_docr.rap_conv,\n" +
" qta_doc * dtb_docr.rap_conv * peso_kg * (segno_qta_scar - segno_qta_car) AS pesokg,\n" +
" CASE\n" +
" WHEN dtb_docr.qta_cnf * (segno_qta_scar - segno_qta_car) = 0 THEN 0\n" +
" ELSE qta_doc * dtb_docr.rap_conv / dtb_docr.qta_cnf *\n" +
" (segno_qta_scar - segno_qta_car) END AS confezioni,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (dtb_doct_b.sconto1 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto1,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (dtb_doct_b.sconto2 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto2,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (dtb_doct_b.sconto3 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto3,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_doct_b.sconto4 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto4,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (dtb_docr.sconto5 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto5,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (dtb_docr.sconto6 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto6,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (dtb_docr.sconto7 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto7,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (dtb_docr.sconto8 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto8,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt) /\n" +
" dtb_doct_b.cambio AS fatturato_lordo,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_doct_b.sconto4 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100) * (dtb_docr.perc_gest / 100) +\n" +
" (segno_val_scar - segno_val_car) * qta_doc * val_gest) /\n" +
" dtb_doct_b.cambio AS importo_gest,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_ispe / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_ispe) /\n" +
" dtb_doct_b.cambio AS importo_prov_ispe,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_promo / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_promo) /\n" +
" dtb_doct_b.cambio AS importo_promo,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_oneri / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_oneri) /\n" +
" dtb_doct_b.cambio) + ISNULL(\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100) * (venditeoneri.perc_oneri_art / 100) +\n" +
" (segno_val_scar - segno_val_car) * qta_doc * venditeoneri.val_oneri_art) / dtb_doct_b.cambio),\n" +
" 0) AS importo_oneri,\n" +
" dtb_docr.cod_promo,\n" +
" vtb_clie.cod_vass,\n" +
" vtb_clie.cod_vgrp_acq,\n" +
" mtb_aart.peso_kg,\n" +
" mtb_aart.qta_cnf,\n" +
" CONVERT(INT, CASE WHEN dtb_doct_b.cod_forn_td IS NULL THEN 0 ELSE 1 END) AS flag_doc_td,\n" +
" dtb_docr.cod_jcom\n" +
"FROM dtb_docr\n" +
" LEFT OUTER JOIN dbo.getviewvenditeoneri() venditeoneri ON dtb_docr.cod_anag = venditeoneri.cod_anag_comp AND\n" +
" dtb_docr.cod_dtip = venditeoneri.cod_dtip_comp AND\n" +
" dtb_docr.data_doc = venditeoneri.data_doc_comp AND\n" +
" dtb_docr.num_doc = venditeoneri.num_doc_comp AND\n" +
" dtb_docr.ser_doc = venditeoneri.ser_doc_comp AND\n" +
" dtb_docr.cod_mart = venditeoneri.cod_mart,\n" +
" dtb_doct AS dtb_doct_a,\n" +
" dtb_doct AS dtb_doct_b,\n" +
" dtb_tipi,\n" +
" gtb_divi,\n" +
" azienda,\n" +
" mtb_aart,\n" +
" mtb_sgrp,\n" +
" vtb_clie\n" +
"WHERE (dtb_doct_b.cod_anag = dtb_docr.cod_anag)\n" +
" AND (dtb_doct_b.cod_dtip = dtb_docr.cod_dtip)\n" +
" AND (dtb_doct_b.data_doc = dtb_docr.data_doc)\n" +
" AND (dtb_doct_b.ser_doc = dtb_docr.ser_doc)\n" +
" AND (dtb_doct_b.num_doc = dtb_docr.num_doc)\n" +
" AND (dtb_doct_b.cod_anag = dtb_doct_a.cod_anag)\n" +
" AND (dtb_doct_b.cod_dtip_val = dtb_doct_a.cod_dtip)\n" +
" AND (dtb_doct_b.data_doc_val = dtb_doct_a.data_doc)\n" +
" AND (dtb_doct_b.ser_doc_val = dtb_doct_a.ser_doc)\n" +
" AND (dtb_doct_b.num_doc_val = dtb_doct_a.num_doc)\n" +
" AND (dtb_doct_b.cod_anag = vtb_clie.cod_anag)\n" +
" AND (dtb_tipi.cod_dtip = dtb_doct_b.cod_dtip)\n" +
" AND (azienda.cod_divi_contab = gtb_divi.cod_divi)\n" +
" AND (dtb_docr.cod_mart = mtb_aart.cod_mart)\n" +
" AND (mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp)\n" +
" AND (mtb_aart.cod_msgr = mtb_sgrp.cod_msgr)\n" +
" AND (mtb_sgrp.incl_in_stat = 'S')\n" +
" AND ((dtb_doct_b.gestione = 'V') AND (dtb_tipi.tipo_emissione = 'DIRETTA') AND (dtb_docr.cod_mart IS NOT NULL))\n" +
" AND (dtb_tipi.flag_incl_stat = 'S')\n" +
" AND not Exists ( select * from mtb_aart inner join ctb_cont on mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon\n" +
" inner join ctb_grup on ctb_cont.cod_cgrp = ctb_grup.cod_cgrp\n" +
"where ctb_grup.sezione = 1 and mtb_aart.cod_mart = dtb_docr.cod_mart) \n" +
"UNION ALL\n" +
"SELECT dtb_doct_b.cod_dtip_val,\n" +
" dtb_doct_b.data_doc_val,\n" +
" dtb_doct_b.ser_doc_val,\n" +
" dtb_doct_b.num_doc_val,\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_doct_a.cod_vage,\n" +
" ISNULL(vtb_clie.cod_anag_stat, dtb_doct_b.cod_anag) AS cod_anag,\n" +
" dtb_doct_b.cod_vdes,\n" +
" dtb_doct_b.cod_vzon,\n" +
" vtb_clie.cod_vtip,\n" +
" dtb_doct_b.cod_dtip,\n" +
" dtb_doct_b.data_doc,\n" +
" dtb_doct_b.ser_doc,\n" +
" dtb_doct_b.num_doc,\n" +
" dtb_doct_b.cod_mdep,\n" +
" dtb_docr.cod_mart,\n" +
" NULL,\n" +
" NULL,\n" +
" NULL,\n" +
" NULL,\n" +
" dtb_docr.descrizione,\n" +
" dtb_docr.unt_doc,\n" +
" (segno_val_scar - segno_val_car) * dtb_doct_a.tot_imponib /\n" +
" dtb_doct_a.cambio AS tot_imponib,\n" +
" (segno_val_scar - segno_val_car) * dtb_doct_a.tot_iva /\n" +
" dtb_doct_a.cambio AS tot_iva,\n" +
" dtb_doct_b.tot_imponib / dtb_doct_b.cambio AS tot_imponib_bolla,\n" +
" dtb_doct_b.tot_iva / dtb_doct_b.cambio AS tot_iva_bolla,\n" +
" (segno_val_scar - segno_val_car) * dtb_docr.importo_riga /\n" +
" dtb_doct_b.cambio AS importo_riga,\n" +
" CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100\n" +
" THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_vend,\n" +
" CONVERT(NUMERIC(15, 5), 0) AS qta_vend_kg,\n" +
" CASE\n" +
" WHEN sconto5 <> 100 AND sconto6 <> 100 AND sconto7 <> 100 AND sconto8 <> 100 THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100)) /\n" +
" dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_vend,\n" +
" CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100 THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_omg,\n" +
" CONVERT(NUMERIC(15, 5), 0) AS qta_omg_kg,\n" +
" CASE\n" +
" WHEN sconto5 = 100 OR sconto6 = 100 OR sconto7 = 100 THEN\n" +
" ((segno_qta_scar - segno_qta_car) * qta_doc * val_unt) / dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_omg,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_prov / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_prov) /\n" +
" dtb_doct_b.cambio AS importo_prov,\n" +
" dtb_docr.id_riga,\n" +
" gtb_divi.cod_divi,\n" +
" dtb_doct_a.listino AS cod_vlis,\n" +
" CONVERT(NUMERIC(20, 5), 0) AS val_costo,\n" +
" CONVERT(NUMERIC(20, 5), 0) AS val_omg_costo,\n" +
" CONVERT(NUMERIC(20, 5), 0) AS val_scarti_prod,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'R' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100)) /\n" +
" dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_rivendibili,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'S' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100)) /\n" +
" dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_non_rivendibili,\n" +
" CASE\n" +
" WHEN flag_tipo_reso = 'P' THEN\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100)) /\n" +
" dtb_doct_b.cambio\n" +
" ELSE 0 END AS val_resi_rettifica_prezzo,\n" +
" CASE\n" +
" WHEN flag_tipo_reso IS NOT NULL THEN (segno_qta_scar - segno_qta_car) * qta_doc\n" +
" ELSE 0 END AS qta_resi_rivendibili,\n" +
" dtb_docr.rap_conv,\n" +
" 0 AS pesokg,\n" +
" CASE\n" +
" WHEN dtb_docr.qta_cnf * (segno_qta_scar - segno_qta_car) = 0 THEN 0\n" +
" ELSE qta_doc * dtb_docr.rap_conv / dtb_docr.qta_cnf *\n" +
" (segno_qta_scar - segno_qta_car) END AS confezioni,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (dtb_doct_b.sconto1 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto1,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (dtb_doct_b.sconto2 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto2,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (dtb_doct_b.sconto3 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto3,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_doct_b.sconto4 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto4,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (dtb_docr.sconto5 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto5,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (dtb_docr.sconto6 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto6,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (dtb_docr.sconto7 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto7,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (dtb_docr.sconto8 / 100))) /\n" +
" dtb_doct_b.cambio AS val_sconto8,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt) /\n" +
" dtb_doct_b.cambio AS fatturato_lordo,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_doct_b.sconto4 / 100) *\n" +
" (1 - dtb_docr.sconto5 / 100) * (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) *\n" +
" (1 - dtb_docr.sconto8 / 100) * (dtb_docr.perc_gest / 100) +\n" +
" (segno_val_scar - segno_val_car) * qta_doc * val_gest) /\n" +
" dtb_doct_b.cambio AS importo_gest,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_ispe / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_ispe) /\n" +
" dtb_doct_b.cambio AS importo_prov_ispe,\n" +
" ((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_promo / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_promo) /\n" +
" dtb_doct_b.cambio AS importo_promo,\n" +
" (((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (dtb_docr.perc_oneri / 100) + (segno_val_scar - segno_val_car) * qta_doc * val_oneri) / dtb_doct_b.cambio) +\n" +
" ISNULL((((segno_val_scar - segno_val_car) * qta_doc * val_unt * (1 - dtb_doct_b.sconto1 / 100) *\n" +
" (1 - dtb_doct_b.sconto2 / 100) * (1 - dtb_doct_b.sconto3 / 100) * (1 - dtb_docr.sconto5 / 100) *\n" +
" (1 - dtb_docr.sconto6 / 100) * (1 - dtb_docr.sconto7 / 100) * (1 - dtb_docr.sconto8 / 100) *\n" +
" (venditeoneri.perc_oneri_art / 100) +\n" +
" (segno_val_scar - segno_val_car) * qta_doc * venditeoneri.val_oneri_art) / dtb_doct_b.cambio),\n" +
" 0) AS importo_oneri,\n" +
" dtb_docr.cod_promo,\n" +
" vtb_clie.cod_vass,\n" +
" vtb_clie.cod_vgrp_acq,\n" +
" NULL,\n" +
" NULL,\n" +
" CONVERT(INT, CASE WHEN dtb_doct_b.cod_forn_td IS NULL THEN 0 ELSE 1 END) AS flag_doc_td,\n" +
" dtb_docr.cod_jcom\n" +
"FROM dtb_docr\n" +
" LEFT OUTER JOIN dbo.getviewvenditeoneri() venditeoneri ON dtb_docr.cod_anag = venditeoneri.cod_anag_comp AND\n" +
" dtb_docr.cod_dtip = venditeoneri.cod_dtip_comp AND\n" +
" dtb_docr.data_doc = venditeoneri.data_doc_comp AND\n" +
" dtb_docr.num_doc = venditeoneri.num_doc_comp AND\n" +
" dtb_docr.ser_doc = venditeoneri.ser_doc_comp AND\n" +
" dtb_docr.cod_mart = venditeoneri.cod_mart,\n" +
" dtb_doct AS dtb_doct_b,\n" +
" dtb_doct AS dtb_doct_a,\n" +
" dtb_tipi,\n" +
" gtb_divi,\n" +
" azienda,\n" +
" vtb_clie\n" +
"WHERE (dtb_doct_b.cod_anag = dtb_docr.cod_anag)\n" +
" AND (dtb_doct_b.cod_dtip = dtb_docr.cod_dtip)\n" +
" AND (dtb_doct_b.data_doc = dtb_docr.data_doc)\n" +
" AND (dtb_doct_b.ser_doc = dtb_docr.ser_doc)\n" +
" AND (dtb_doct_b.num_doc = dtb_docr.num_doc)\n" +
" AND (dtb_doct_b.cod_anag = dtb_doct_a.cod_anag)\n" +
" AND (dtb_doct_b.cod_dtip_val = dtb_doct_a.cod_dtip)\n" +
" AND (dtb_doct_b.data_doc_val = dtb_doct_a.data_doc)\n" +
" AND (dtb_doct_b.ser_doc_val = dtb_doct_a.ser_doc)\n" +
" AND (dtb_doct_b.num_doc_val = dtb_doct_a.num_doc)\n" +
" AND (dtb_doct_b.cod_anag = vtb_clie.cod_anag)\n" +
" AND (dtb_tipi.cod_dtip = dtb_doct_b.cod_dtip)\n" +
" AND (azienda.cod_divi_contab = gtb_divi.cod_divi)\n" +
" AND ((dtb_doct_b.gestione = 'V') AND (dtb_tipi.tipo_emissione = 'DIRETTA') AND (dtb_docr.cod_mart IS NULL) AND\n" +
" (dtb_docr.qta_doc <> 0))\n" +
" AND (dtb_tipi.flag_incl_stat = 'S')");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,29 @@
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_20250825165957 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("W_CSITUAZ_CNTECONCOMM_DISP", "SETUP", "REPARTI_DA_ESCLUDERE", null,
"inseire l'elenco dei reparti da escludere dai rapportini di lavoro ( separati con |)", false, null, false, false,
false, false, false, null, false, null);
if (isCustomer(IntegryCustomer.Smetar)) {
updateSetupValue("W_CSITUAZ_CNTECONCOMM_DISP", "SETUP", "REPARTI_DA_ESCLUDERE", "FALE|2-LAV");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,38 @@
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_20250825170241 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("W_CSITUAZ_CNTECONCOMM_DISP", "DATAWINDOW", "D_CSIT_CNTECONCOMM_DETTAGLIATO_REP", null,
null, false, null, false, false,
false, false, false, null, false, null);
String dwName = "";
if (isCustomer(IntegryCustomer.Smetar)) {
dwName = "D_CSIT_CNTECONCOMM_DETTAGLIATO_SMETAR_REP";
} else if (isCustomer(IntegryCustomer.Cosmapack)) {
dwName = "d_csit_cnteconcomm_dett_cosm_rep";
} else if (isCustomer(IntegryCustomer.Vinella)) {
dwName = "d_csit_cnteconcomm_dett_vin_rep";
} else if (isCustomer(IntegryCustomer.Agricoper)) {
dwName = "d_csit_cnteconcomm_dett_agric_rep";
}
if (!dwName.equalsIgnoreCase("")) {
updateSetupValue("W_CSITUAZ_CNTECONCOMM_DISP", "DATAWINDOW", "D_CSIT_CNTECONCOMM_DETTAGLIATO_REP", dwName);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,191 @@
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_20250826122255 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if ( isTextiles()) {
executeStatement("UPDATE stb_gest_setup SET flag_setup_depo = 'S'\n" +
"WHERE stb_gest_setup.gest_name = 'DATI_AZIENDA' AND stb_gest_setup.SECTION = 'CALCOLO_DISPONIBILITA' AND stb_gest_setup.key_section = 'INCLUDI_QTA_ORD_FOR'");
if ( isCustomer(IntegryCustomer.FolliesGroup)) {
updateSetupValue("DATI_AZIENDA","CALCOLO_DISPONIBILITA","INCLUDI_QTA_ORD_FOR", "S");
}
createOrUpdateFunction("ftx_getDisponibilitaArticoli", "CREATE FUNCTION [dbo].[ftx_getDisponibilitaArticoli](@datavalidita DATETIME,\n" +
" @codmdep VARCHAR(8000),\n" +
" @annostag VARCHAR(10),\n" +
" @codmart VARCHAR(15),\n" +
" @codtagl VARCHAR(15),\n" +
" @codcol VARCHAR(15),\n" +
" @barcode VARCHAR(15))\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" WITH setup AS (SELECT mtb_depo.cod_mdep,\n" +
" MAX(IIF(stb_gest_setup.key_section = 'INCLUDI_QTA_ORD_FOR',\n" +
" ISNULL(stb_gest_setup_depo.value, stb_gest_setup.value),\n" +
" NULL)) AS includi_qta_ord_for,\n" +
" MAX(IIF(stb_gest_setup.key_section = 'ESCLUDI_QTA_COLLI',\n" +
" ISNULL(stb_gest_setup_depo.value, 'N'), NULL)) AS escludi_qta_colli\n" +
" FROM mtb_depo\n" +
" CROSS APPLY stb_gest_setup\n" +
" LEFT OUTER JOIN stb_gest_setup_depo\n" +
" ON mtb_depo.cod_mdep = stb_gest_setup_depo.cod_mdep AND\n" +
" stb_gest_setup.gest_name = stb_gest_setup_depo.gest_name AND\n" +
" stb_gest_setup.section = stb_gest_setup_depo.section AND\n" +
" stb_gest_setup.key_section = stb_gest_setup_depo.key_section\n" +
" WHERE stb_gest_setup.gest_name = 'DATI_AZIENDA'\n" +
" AND stb_gest_setup.section = 'CALCOLO_DISPONIBILITA'\n" +
" AND stb_gest_setup.key_section IN ('INCLUDI_QTA_ORD_FOR', 'ESCLUDI_QTA_COLLI')\n" +
" GROUP BY mtb_depo.cod_mdep),\n" +
" articoli AS (SELECT ttb_style.anno_stag,\n" +
" ttb_style.cod_style,\n" +
" ttb_style_colori.cod_col,\n" +
" ttb_style_taglie.cod_tagl,\n" +
" mtb_part_dt.qta_ord_for,\n" +
" mtb_part_dt.cod_mdep\n" +
" FROM ttb_style,\n" +
" ttb_style_colori,\n" +
" ttb_style_taglie,\n" +
" mtb_part_dt\n" +
" WHERE (@codmdep IS NULL OR mtb_part_dt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
" FROM parsestringintoarray(@codmdep, ',')))\n" +
" AND (@codmart IS NULL OR ttb_style.cod_style = @codmart)\n" +
" AND (@codcol IS NULL OR ttb_style_colori.cod_col = @codcol)\n" +
" AND (@codtagl IS NULL OR ttb_style_taglie.cod_tagl = @codtagl)\n" +
" AND (@annostag IS NULL OR ttb_style.anno_stag = @annostag)\n" +
" AND ttb_style.cod_style = mtb_part_dt.cod_mart\n" +
" AND ttb_style_colori.cod_col = mtb_part_dt.cod_col\n" +
" AND ttb_style_taglie.cod_tagl = mtb_part_dt.cod_tagl\n" +
" AND ttb_style.cod_style = ttb_style_colori.cod_style\n" +
" AND ttb_style.cod_style = ttb_style_taglie.cod_style),\n" +
" colli AS (SELECT mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" SUM(mtb_colr.qta_col) AS qta,\n" +
" mtb_colt.cod_mdep\n" +
" FROM mtb_colt\n" +
" LEFT OUTER JOIN dtb_tipi ON mtb_colt.cod_dtip = dtb_tipi.cod_dtip,\n" +
" mtb_colr\n" +
" WHERE mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" AND mtb_colt.gestione = 'V'\n" +
" AND (@codmdep IS NULL OR mtb_colt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
" FROM parsestringintoarray(@codmdep, ',')))\n" +
" AND (mtb_colt.cod_dtip IS NULL OR (dtb_tipi.segno_qta_car = 0 AND dtb_tipi.segno_qta_scar = 0))\n" +
" AND (@codmart IS NULL OR mtb_colr.cod_mart = @codmart)\n" +
" AND (@codcol IS NULL OR mtb_colr.cod_col = @codcol)\n" +
" AND (@codtagl IS NULL OR mtb_colr.cod_tagl = @codtagl)\n" +
" GROUP BY mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colt.cod_mdep),\n" +
" prenotazione AS (SELECT wdtb_ordr.cod_mart,\n" +
" wdtb_ordr.cod_col,\n" +
" wdtb_ordr.cod_tagl,\n" +
" SUM(wdtb_ordr.qta_ord) AS qta,\n" +
" wdtb_ordt.cod_mdep\n" +
" FROM wdtb_ordt,\n" +
" wdtb_ordr\n" +
" WHERE wdtb_ordt.gestione = wdtb_ordr.gestione\n" +
" AND wdtb_ordt.data_ord = wdtb_ordr.data_ord\n" +
" AND wdtb_ordt.num_ord = wdtb_ordr.num_ord\n" +
" AND wdtb_ordt.gestione = 'V'\n" +
" AND (@codmdep IS NULL OR wdtb_ordt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
" FROM parsestringintoarray(@codmdep, ',')))\n" +
" AND wdtb_ordt.flag_elaborato = 'N'\n" +
" AND (@codmart IS NULL OR wdtb_ordr.cod_mart = @codmart)\n" +
" AND (@codcol IS NULL OR wdtb_ordr.cod_col = @codcol)\n" +
" AND (@codtagl IS NULL OR wdtb_ordr.cod_tagl = @codtagl)\n" +
" GROUP BY wdtb_ordr.cod_mart,\n" +
" wdtb_ordr.cod_col,\n" +
" wdtb_ordr.cod_tagl,\n" +
" wdtb_ordt.cod_mdep),\n" +
" ordine AS (SELECT dtb_ordr.cod_mart,\n" +
" dtb_ordr.cod_col,\n" +
" dtb_ordr.cod_tagl,\n" +
" CASE\n" +
" WHEN SUM(CASE\n" +
" WHEN dtb_ordr.flag_evaso = 'I' OR\n" +
" (dtb_ordr.flag_evaso = 'A' AND dtb_ordr.qta_acc > 0)\n" +
" THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col\n" +
" ELSE 0 END) > 0 THEN\n" +
" SUM(CASE\n" +
" WHEN dtb_ordr.flag_evaso = 'I' OR\n" +
" (dtb_ordr.flag_evaso = 'A' AND dtb_ordr.qta_acc > 0)\n" +
" THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col\n" +
" ELSE 0 END)\n" +
" ELSE 0 END AS qta,\n" +
" SUM(dtb_ordr.qta_acc) AS qta_acc,\n" +
" /*sum(dtb_ordr.qta_acc - dtb_ordr.qta_col) as qta_acc,*/\n" +
" dtb_ordt.cod_mdep\n" +
" FROM dtb_ordt,\n" +
" dtb_ordr\n" +
" WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" AND dtb_ordt.gestione = 'V'\n" +
" AND (@codmdep IS NULL OR dtb_ordt.cod_mdep IN (SELECT value_string AS cod_mdep\n" +
" FROM parsestringintoarray(@codmdep, ',')))\n" +
" /* AND dtb_ordr.flag_evaso = 'I'*/\n" +
" AND dtb_ordt.flag_annulla = 'N'\n" +
" AND (@codmart IS NULL OR dtb_ordr.cod_mart = @codmart)\n" +
" AND (@codcol IS NULL OR dtb_ordr.cod_col = @codcol)\n" +
" AND (@codtagl IS NULL OR dtb_ordr.cod_tagl = @codtagl)\n" +
" GROUP BY dtb_ordr.cod_mart,\n" +
" dtb_ordr.cod_col,\n" +
" dtb_ordr.cod_tagl,\n" +
" dtb_ordt.cod_mdep)\n" +
"\n" +
" SELECT articoli.anno_stag,\n" +
" articoli.cod_style,\n" +
" articoli.cod_col,\n" +
" articoli.cod_tagl,\n" +
" ttb_bar_code.cod_barre,\n" +
" articoli.cod_mdep,\n" +
" ISNULL(giacenza.qta_fine, 0) AS giacenza,\n" +
" ISNULL(articoli.qta_ord_for, 0) AS ord_forn,\n" +
" ISNULL(ordine.qta, 0) AS ordini,\n" +
" ISNULL(prenotazione.qta, 0) AS ordini_web,\n" +
" ISNULL(ordine.qta_acc, 0) AS accant_su_ordine,\n" +
" ISNULL(colli.qta, 0) AS colli,\n" +
" ISNULL(giacenza.qta_fine, 0) - ISNULL(ordine.qta, 0) - ISNULL(prenotazione.qta, 0) +\n" +
" IIF(setup.includi_qta_ord_for = 'S', ISNULL(articoli.qta_ord_for, 0), 0) -\n" +
" IIF(setup.escludi_qta_colli = 'S', ISNULL(colli.qta, 0), 0) AS qta_disp,\n" +
" ISNULL(giacenza.qta_fine, 0) - ISNULL(ordine.qta_acc, 0) - ISNULL(colli.qta, 0) AS qta_distrib_su_ordini\n" +
" FROM articoli\n" +
" LEFT OUTER JOIN ttb_bar_code ON articoli.cod_style = ttb_bar_code.cod_style AND\n" +
" articoli.cod_col = ttb_bar_code.cod_col AND\n" +
" articoli.cod_tagl = ttb_bar_code.cod_tagl\n" +
" LEFT OUTER JOIN getsitartadatadett(@datavalidita, @codmdep) giacenza\n" +
" ON articoli.cod_style = giacenza.cod_mart AND articoli.cod_col = giacenza.cod_col AND\n" +
" articoli.cod_tagl = giacenza.cod_tagl AND articoli.cod_mdep = giacenza.cod_mdep\n" +
" LEFT OUTER JOIN ordine\n" +
" ON articoli.cod_style = ordine.cod_mart AND articoli.cod_col = ordine.cod_col AND\n" +
" articoli.cod_tagl = ordine.cod_tagl AND articoli.cod_mdep = ordine.cod_mdep\n" +
" LEFT OUTER JOIN prenotazione ON articoli.cod_style = prenotazione.cod_mart AND\n" +
" articoli.cod_col = prenotazione.cod_col AND\n" +
" articoli.cod_tagl = prenotazione.cod_tagl AND\n" +
" articoli.cod_mdep = prenotazione.cod_mdep\n" +
" LEFT OUTER JOIN colli ON articoli.cod_style = colli.cod_mart AND articoli.cod_col = colli.cod_col AND\n" +
" articoli.cod_tagl = colli.cod_tagl AND articoli.cod_mdep = colli.cod_mdep,\n" +
" setup\n" +
" WHERE (@barcode IS NULL OR ttb_bar_code.cod_barre = @barcode)");
}
}
@Override
public void down() throws Exception {
}
}

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