Compare commits

...

615 Commits

Author SHA1 Message Date
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
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
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
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
467 changed files with 29270 additions and 6482 deletions

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>

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

@@ -3,7 +3,7 @@ FROM tomcat:9-jre8-alpine
RUN apk add --no-cache fontconfig ttf-dejavu
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"
COPY docker/tomcat/conf/integry/ems.properties /usr/local/tomcat/conf/integry/

File diff suppressed because it is too large Load Diff

View File

@@ -229,6 +229,11 @@
<artifactId>arial-rounded</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>it.integry.font</groupId>
<artifactId>NotoSerif</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.groovy</groupId>

View File

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

View File

@@ -3,7 +3,7 @@ package it.integry.ems._context;
import it.integry.annotations.PostContextConstruct;
import it.integry.common.var.EmsDBConst;
import it.integry.ems.expansion.RunnableArgsThrowable;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool;
@@ -69,7 +69,6 @@ public class EmsCoreDBLoader {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionPool)){
discoverAllConnections(multiDBTransactionManager);
setupAzienda(multiDBTransactionManager);
userCacheService.discoverAllUsers(multiDBTransactionManager);
if (onComplete != null) onComplete.run(multiDBTransactionManager);
} catch (Exception ex) {
@@ -83,9 +82,9 @@ public class EmsCoreDBLoader {
private void discoverAllConnections(MultiDBTransactionManager multiDBTransactionManager) throws Exception {
ArrayList<Callable<Void>> futureTasks = new ArrayList<>();
for (AvailableConnectionsModel model : settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true)) {
for (AvailableConnectionModel model : settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true)) {
AtomicReference<AvailableConnectionsModel> modelAtomicReference = new AtomicReference<>(model);
AtomicReference<AvailableConnectionModel> modelAtomicReference = new AtomicReference<>(model);
futureTasks.add(() -> {
try {

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

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

View File

@@ -793,9 +793,8 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_EMAIL_CONTENT, method = RequestMethod.GET)
public byte[] downloadStbEmailContent(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
public ResponseEntity<byte[]> downloadStbEmailContent(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
StbEmailContent stbEmailContent = new StbEmailContent();
stbEmailContent.setIdEmail(idEmail);
stbEmailContent.setOperation(OperationType.SELECT_OBJECT);
@@ -803,11 +802,7 @@ public class EmsController {
stbEmailContent = entityProcessor.processEntity(stbEmailContent, multiDBTransactionManager);
if (stbEmailContent != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename("email.eml").build().toString());
byte[] byteArr = null;
byte[] byteArr;
String pattern = "[^\\x00-\\x7F]";
Pattern pat = Pattern.compile(pattern);
@@ -819,13 +814,18 @@ public class EmsController {
byteArr = Base64.decodeBase64(stbEmailContent.getEmailContent());
}
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename("email.eml")
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET)
@@ -884,12 +884,13 @@ public class EmsController {
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_ORD_PDF, method = RequestMethod.GET)
public byte[] downloadDtbOrdPdf(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
public ResponseEntity<byte[]> downloadDtbOrdPdf(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
DtbOrdPdf dtbOrdPdf = new DtbOrdPdf();
dtbOrdPdf.setGestione(gestione);
dtbOrdPdf.setDataOrd(UtilityDate.RecognizeDate(dataOrd));
@@ -900,17 +901,20 @@ public class EmsController {
dtbOrdPdf = entityProcessor.processEntity(dtbOrdPdf, multiDBTransactionManager);
if (dtbOrdPdf != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString());
byte[] byteArr = dtbOrdPdf.getFilecontentByteArr(true);
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename(ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString())
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.POST)

View File

@@ -1,11 +1,12 @@
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.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.SQLException;
@@ -13,17 +14,26 @@ import java.util.HashMap;
public class DataSource extends BasicDataSource {
private AvailableConnectionsModel connectionModel;
private final int POOL_SIZE;
private AvailableConnectionModel connectionModel;
/**
* Instanzia un nuovo datasource.
*
* @deprecated Il datasource non deve essere istanziato direttamente ma bisogna utilizzare il metodo
* {@link it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool#getConnection(AvailableConnectionsModel)} per ottenere una connessione.
* {@link it.integry.ems.sync.MultiDBTransaction.BasicConnectionPool#getConnection(AvailableConnectionModel)} per ottenere una connessione.
*/
@Deprecated
public DataSource() {
super();
POOL_SIZE = 5;
}
@Deprecated
public DataSource(int poolSize) {
super();
POOL_SIZE = poolSize;
}
public EmsRestConstants.DB_TYPE getTypeDB() {
@@ -62,12 +72,20 @@ public class DataSource extends BasicDataSource {
}
public synchronized void initialize(String profileDB) throws Exception {
AvailableConnectionsModel connectionsModel = SettingsModel.getInstance().findConnectionModel(profileDB);
initialize(connectionsModel);
initialize(profileDB, null);
}
public synchronized void initialize(AvailableConnectionsModel connectionModel) throws Exception {
public synchronized void initialize(String profileDB, String customAppName) throws Exception {
AvailableConnectionModel connectionsModel = SettingsModel.getInstance().findConnectionModel(profileDB);
initialize(connectionsModel, customAppName);
}
public synchronized void initialize(AvailableConnectionModel connectionModel) throws Exception {
initialize(connectionModel, null);
}
public synchronized void initialize(AvailableConnectionModel connectionModel, String customAppName) throws Exception {
if (connectionModel == null) {
throw new Exception("Configurazione DB non trovata");
}
@@ -76,7 +94,7 @@ public class DataSource extends BasicDataSource {
this.setDriverClassName(connectionModel.getDriverClassName());
this.setUrl(connectionModel.getDbConnectionString("EMS Connection"));
this.setUrl(connectionModel.getDbConnectionString(UtilityString.isNull(customAppName, "EMS Connection")));
this.setUsername(connectionModel.getUsername());
this.setPassword(connectionModel.getPasswordDecrypted());
this.setDefaultCatalog(connectionModel.getDbName());
@@ -87,9 +105,9 @@ public class DataSource extends BasicDataSource {
// ===== OTTIMIZZAZIONI CRITICHE =====
// Pool sizing ottimizzato per READ_UNCOMMITTED (meno locking = più connessioni possibili)
this.setInitialSize(5); // Inizia con più connessioni
this.setInitialSize(POOL_SIZE); // Inizia con più connessioni
this.setMaxTotal(-1); // Aumentato il massimo
this.setMinIdle(5); // Non scendere sotto 5
this.setMinIdle(POOL_SIZE); // Non scendere sotto 5
this.setMaxIdle(-1); // Mantieni più connessioni idle
// Timeout ottimizzati per performance massime
@@ -97,8 +115,8 @@ public class DataSource extends BasicDataSource {
// Validazione veloce ed efficiente
this.setValidationQuery("SELECT 1");
// this.setValidationQueryTimeout(60); // Ridotto a 1 secondo
// this.setTestWhileIdle(true); // Testa connessioni idle
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

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,144 @@
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(MtbAart.ENTITY);
add(MtbAartBarCode.ENTITY);
add(MtbUntMis.ENTITY);
add(MtbDepo.ENTITY);
add(MtbDepoPosizioni.ENTITY);
add(StbEditLimit.ENTITY);
add(StbGestSetup.ENTITY);
add(StbGestSetupDepo.ENTITY);
add(StbUser.ENTITY);
add(WtbClie.ENTITY);
add(WtbDepo.ENTITY);
add(WtbGestSetupUser.ENTITY);
}};
private final ApplicationEventPublisher applicationEventPublisher;
@PostContextAutowired
private MultiDBTransactionManager multiDBTransactionManager;
public DbmsChangeTrackerComponent(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
@PostContextConstruct(priority = 10)
public void init() throws Exception {
for (Connection conn : multiDBTransactionManager.getActiveConnections()) {
IntegryCustomerDB customerDB = IntegryCustomerDB.parse(conn.getDbName());
activeChangeTrackers.put(customerDB, new DbmsChangeTracker(conn.getProfileName()));
}
enableAllChangeTracking();
}
private void enableAllChangeTracking() throws Exception {
for (Map.Entry<IntegryCustomerDB, DbmsChangeTracker> entrySet : activeChangeTrackers.entrySet()) {
final IntegryCustomerDB customerDB = entrySet.getKey();
final DbmsChangeTracker dbmsChangeTracker = entrySet.getValue();
try {
dbmsChangeTracker.enableTrackerInDbms();
for (String tableName : trackedTables) {
dbmsChangeTracker.enableTrackerOnTable(tableName);
}
dbmsChangeTracker.disableTrackerOnNotUsedTables(trackedTables);
dbmsChangeTracker.setEventListener(new DbmsChangeTracker.Listener() {
@Override
public void onInsertDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemInserted(customerDB, tableName, primaryKey);
}
@Override
public void onUpdateDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemUpdated(customerDB, tableName, primaryKey);
}
@Override
public void onDeleteDetected(String tableName, HashMap<String, Object> primaryKey) {
onItemDeleted(customerDB, tableName, primaryKey);
}
@Override
public void onTrackingResetted() throws Exception {
requestGlobalReset(customerDB);
}
});
dbmsChangeTracker.startTracking();
} catch (Exception e) {
throw new Exception("Errore durante l'abilitazione del DbmsChangeTracker per il customer: " + customerDB.getValue(), e);
}
}
}
@Scheduled(fixedDelay = 5, timeUnit = TimeUnit.SECONDS)
private void checkAllChanges() throws Exception {
for (DbmsChangeTracker dbmsChangeTracker : activeChangeTrackers.values()) {
try {
dbmsChangeTracker.checkForChanges();
} catch (Exception e) {
logger.error("Errore durante il controllo delle modifiche nel DbmsChangeTracker.", e);
}
}
}
private void onItemInserted(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item inserted in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordInsertedEvent(this, customerDB, tableName, primaryKey));
}
private void onItemUpdated(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item updated in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordUpdatedEvent(this, customerDB, tableName, primaryKey));
}
private void onItemDeleted(IntegryCustomerDB customerDB, String tableName, HashMap<String, Object> primaryKey) {
logger.trace("Item deleted in profileDb {} table {} with primaryKey {}", customerDB.getValue(), tableName, primaryKey);
applicationEventPublisher.publishEvent(new TableRecordDeletedEvent(this, customerDB, tableName, primaryKey));
}
private void requestGlobalReset(IntegryCustomerDB customerDB) {
logger.warn("Table tracking resetted in profileDb {} ", customerDB.getValue());
applicationEventPublisher.publishEvent(new TableTrackingResettedEvent(this, customerDB));
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,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

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

View File

@@ -2,8 +2,11 @@ package it.integry.ems.javabeans;
import com.fasterxml.jackson.annotation.JsonInclude;
import it.integry.common.var.CommonConstants;
import it.integry.ems._context.ApplicationContextProvider;
import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.model.IntegryApplicationEnum;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.user.dto.UserDTO;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.utility.UtilityString;
@@ -37,6 +40,10 @@ public class RequestDataDTO {
private String requestClientIP;
private String profileDB;
//Indica il codice deposito reale dell'utente che effettua la richiesta, ovvero la posizione fisica dell'utente
private String codMdep;
private Long deviceId;
private String username;
private String password;
@@ -55,6 +62,10 @@ public class RequestDataDTO {
profileDB = request.getHeader(CommonConstants.PROFILE_DB);
}
if (request != null && request.getHeader(CommonConstants.COD_MDEP) != null) {
codMdep = request.getHeader(CommonConstants.COD_MDEP);
}
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && !(authentication instanceof AnonymousAuthenticationToken)) {
readAuthenticationClaims(authentication);
@@ -108,6 +119,10 @@ public class RequestDataDTO {
return !UtilityString.isNullOrEmpty(profileDB);
}
public boolean isValidCodMdep() {
return !UtilityString.isNullOrEmpty(codMdep);
}
public boolean isValidDeviceId() {
return deviceId != null;
}
@@ -138,6 +153,20 @@ public class RequestDataDTO {
return profileDB;
}
public String getCodMdep() {
return codMdep;
}
public IntegryCustomerDB getCustomerDB() {
if (UtilityString.isNullOrEmpty(profileDB))
return null;
final SettingsModel settingsModel = ApplicationContextProvider.getApplicationContext().getBean(SettingsModel.class);
final String dbName = settingsModel.getDbNameFromProfileDb(profileDB);
return IntegryCustomerDB.parse(dbName);
}
public Long getDeviceId() {
return deviceId;
}

View File

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

View File

@@ -8,7 +8,7 @@ import it.integry.ems.json.ResponseJSONObjectMapper;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.service.HttpRestWrapper;
import it.integry.ems.settings.Model.AvailableConnectionsModel;
import it.integry.ems.settings.Model.AvailableConnectionModel;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
@@ -60,11 +60,11 @@ public class LicenseComponent {
if (!canStart)
return;
List<AvailableConnectionsModel> availableConnectionsModels = settingsModel.getAvailableConnections(true);
List<AvailableConnectionModel> availableConnectionModels = settingsModel.getAvailableConnections(true);
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager()) {
for (AvailableConnectionsModel model : availableConnectionsModels) {
for (AvailableConnectionModel model : availableConnectionModels) {
multiDBTransactionManager.addConnection(model);
}

View File

@@ -22,6 +22,7 @@ import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import it.integry.ems_model.utility.dto.PkTableDTO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.context.ContextLoader;
@@ -75,6 +76,18 @@ public abstract class BaseMigration implements MigrationModelInterface {
return UtilityDB.executeSimpleQueryDTO(connection, sql, clazz);
}
protected @NotNull <T> List<T> executeQueryOnlyFirstColumn(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstColumn(connection, sql);
}
protected @NotNull HashMap<String, Object> executeQueryOnlyFirstRow(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstRow(connection, sql);
}
protected @NotNull <T> T executeQueryOnlyFirstRowFirstColumn(String sql) throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
protected void executeStatement(String... sqls) throws SQLException {
executeStatement(connection, sqls);
}
@@ -141,6 +154,10 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
private void alterObject(SqlObjectTypeEnum sqlObject, String objectName, String sql) throws SQLException, IOException {
if (UtilityString.isNullOrEmpty(objectName)) {
throw new IllegalArgumentException("ObjectName in createOrUpdateFunction(), createOrUpdateView(), createOrUpdateTrigger(), createOrUpdateProcedure() cannot be null or empty");
}
executeStatement("IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + sqlObject.toString() + " " + objectName,
sql);
@@ -155,12 +172,20 @@ public abstract class BaseMigration implements MigrationModelInterface {
UtilityDB.createIndex(connection, indexTableDTO);
}
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 {
protected void cloneTable(String sourceTable, String newTable, boolean fillNewTable, boolean dropOldTable, boolean renameNewTable) throws Exception {
UtilityDB.cloneTable(connection, sourceTable, newTable, fillNewTable, dropOldTable, renameNewTable);
}
protected void dropIndex(String tableName, String indexName) throws Exception {
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);
}
@@ -398,6 +423,25 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
}
protected String getSetupValue(String gestName, String section, String keySection) throws SQLException {
String sql = Query.format("SELECT value FROM " + StbGestSetup.ENTITY +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
//Create a getStbGestSetup method to return the entire StbGestSetup object
protected StbGestSetup getStbGestSetup(String gestName, String section, String keySection) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format("SELECT * FROM stb_gest_setup " +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, StbGestSetup.class);
}
protected void deleteSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
@@ -480,6 +524,16 @@ public abstract class BaseMigration implements MigrationModelInterface {
stbGestSetup.manageWithParentConnection(connection);
}
protected void dropSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
.setSection(section)
.setKeySection(keySection);
stbGestSetup.setOperation(OperationType.DELETE);
stbGestSetup.manageWithParentConnection(connection);
}
protected void addAutomatedOperation(BaseScheduledOperationDTO operation) {
new Thread(() -> {
try {

View File

@@ -8,7 +8,7 @@ public enum IntegryCustomer {
IntegryCustomerDB.Agricoper_IlVisone,
IntegryCustomerDB.Agricoper_Luva),
ATI(IntegryCustomerDB.ATI_Finpart),
ATI(IntegryCustomerDB.ATI, IntegryCustomerDB.ATI_Finpart),
Auricchio(IntegryCustomerDB.Auricchio_Auricchio,
IntegryCustomerDB.Auricchio_AuricchioMiki,
IntegryCustomerDB.Auricchio_AuricchioSrl,
@@ -71,7 +71,8 @@ public enum IntegryCustomer {
Gramm(IntegryCustomerDB.Gramm_Gramm,
IntegryCustomerDB.Gramm_PrimeOlive,
IntegryCustomerDB.Gramm_ProveStage,
IntegryCustomerDB.Gramm_2MHolding),
IntegryCustomerDB.Gramm_2MHolding,
IntegryCustomerDB.Gramm_GrammUsa),
Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica),
Igood(IntegryCustomerDB.Igood_Aida,
IntegryCustomerDB.Igood_Igood,
@@ -118,7 +119,10 @@ public enum IntegryCustomer {
IntegryCustomerDB.Suit_TenutaArianna,
IntegryCustomerDB.Suit_Valpietro),
Tempesta(IntegryCustomerDB.Tempesta_Tempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta),
IntegryCustomerDB.Tempesta_DI,
IntegryCustomerDB.Tempesta_VivaiTempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta_DI
),
Tosca(IntegryCustomerDB.Tosca_Ba,
IntegryCustomerDB.Tosca_Ce,
IntegryCustomerDB.Tosca_Cz,

View File

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

View File

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

View File

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

View File

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

View File

@@ -10,6 +10,8 @@ public class Migration_20251022125946 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getListinoVendita", "CREATE FUNCTION [dbo].[getListinoVendita](@datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15))\n" +
" RETURNS TABLE AS\n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251024175524 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"exec DropForeignKey 'ctb_amac', 'mtb_depo_posizioni'",
"exec DropForeignKey 'jrl_fase_posizioni', 'mtb_depo_posizioni'",

View File

@@ -0,0 +1,28 @@
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_20251027125018 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("MTB_AART", "SETUP", "CHK_EXIST_BARCODE", "N",
"Se abilitata blocca se codice a barre già assegnato ad altra referenza", false, null, false, false,
false, false, false, null, false, null);
if(isCustomer(IntegryCustomer.Carelli)){
updateSetupValue("MTB_AART", "SETUP", "CHK_EXIST_BARCODE", "S");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,92 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import java.util.Arrays;
public class Migration_20251027172319 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"CREATE TABLE [dbo].[mtb_ssfam]("
+ " [cod_mgrp] varchar(5) NOT NULL, "
+ " [cod_msgr] varchar(5) NOT NULL, "
+ " [cod_msfa] varchar(6) NOT NULL, "
+ " [cod_mssfa] varchar(6) NOT NULL, "
+ " [descrizione] varchar(40) NOT NULL);",
"ALTER TABLE mtb_ssfam ADD CONSTRAINT pk_mtb_ssfam PRIMARY KEY ("
+ " cod_mgrp ASC, cod_msgr ASC, cod_msfa ASC, cod_mssfa ASC );",
"ALTER TABLE [dbo].[mtb_ssfam] WITH CHECK ADD CONSTRAINT fk_mtb_ssfam_mtb_grup "
+ "FOREIGN KEY(cod_mgrp) REFERENCES [dbo].[mtb_grup](cod_mgrp);",
"ALTER TABLE [dbo].[mtb_ssfam] WITH CHECK ADD CONSTRAINT fk_mtb_ssfam_mtb_sgrp "
+ "FOREIGN KEY(cod_mgrp, cod_msgr) REFERENCES [dbo].[mtb_sgrp](cod_mgrp, cod_msgr);",
"ALTER TABLE [dbo].[mtb_ssfam] WITH CHECK ADD CONSTRAINT fk_mtb_ssfam_mtb_sfam "
+ "FOREIGN KEY(cod_mgrp, cod_msgr, cod_msfa) REFERENCES [dbo].[mtb_sfam](cod_mgrp, cod_msgr, cod_msfa);",
"exec DropForeignKey 'mtb_aart', 'mtb_aart_marchio';",
"exec DropPrimaryKey 'mtb_aart_marchio';",
"ALTER TABLE mtb_aart_marchio ADD id bigint identity NOT NULL;",
"ALTER TABLE mtb_aart_marchio ADD CONSTRAINT pk_mtb_aart_marchio PRIMARY KEY (id);",
"CREATE TABLE mtb_marchio_linea ("
+ " id_marchio bigint NOT NULL, "
+ " cod_linea varchar(6) NOT NULL, "
+ " descrizione varchar(255) NOT NULL );",
"ALTER TABLE mtb_marchio_linea ADD CONSTRAINT pk_mtb_marchio_linea PRIMARY KEY (cod_linea);",
"ALTER TABLE mtb_marchio_linea ADD CONSTRAINT fk_mtb_marchio_linea_mtb_aart_marchio "
+ "FOREIGN KEY (id_marchio) REFERENCES mtb_aart_marchio(id);",
"ALTER TABLE mtb_aart ADD id_marchio bigint;",
"UPDATE mtb_aart SET id_marchio = mtb_aart_marchio.id "
+ "FROM mtb_aart INNER JOIN mtb_aart_marchio ON mtb_aart.marchio = mtb_aart_marchio.marchio;",
"ALTER TABLE mtb_aart ADD CONSTRAINT fk_mtb_aart_mtb_aart_marchio "
+ "FOREIGN KEY (id_marchio) REFERENCES mtb_aart_marchio(id);",
"ALTER TABLE mtb_aart ADD cod_mssfa varchar(6);",
"ALTER TABLE mtb_aart ADD CONSTRAINT fk_mtb_aart_mtb_ssfam "
+ "FOREIGN KEY (cod_mgrp, cod_msgr, cod_msfa, cod_mssfa) "
+ "REFERENCES mtb_ssfam (cod_mgrp, cod_msgr, cod_msfa, cod_mssfa);",
"ALTER TABLE mtb_aart ADD cod_linea varchar(6);",
"ALTER TABLE mtb_aart ADD cod_slinea varchar(6);",
"ALTER TABLE mtb_aart ADD cod_sslinea varchar(6);",
"CREATE TABLE mtb_marchio_slinea ("
+ " cod_linea varchar(6) NOT NULL, "
+ " cod_slinea varchar(6) NOT NULL, "
+ " descrizione varchar(255) NOT NULL );",
"ALTER TABLE mtb_marchio_slinea ADD CONSTRAINT pk_mtb_marchio_slinea PRIMARY KEY (cod_slinea);",
"ALTER TABLE mtb_marchio_slinea ADD CONSTRAINT fk_mtb_marchio_slinea_mtb_marchio_linea "
+ "FOREIGN KEY (cod_linea) REFERENCES mtb_marchio_linea (cod_linea);",
"CREATE TABLE mtb_marchio_sslinea ("
+ " cod_slinea varchar(6) NOT NULL, "
+ " cod_sslinea varchar(6) NOT NULL, "
+ " descrizione varchar(255) NOT NULL );",
"ALTER TABLE mtb_marchio_sslinea ADD CONSTRAINT pk_mtb_marchio_sslinea PRIMARY KEY (cod_sslinea);",
"ALTER TABLE mtb_marchio_sslinea ADD CONSTRAINT fk_mtb_marchio_sslinea_mtb_marchio_slinea "
+ "FOREIGN KEY (cod_slinea) REFERENCES mtb_marchio_slinea (cod_slinea);",
"ALTER TABLE mtb_aart ADD CONSTRAINT fk_mtb_aart_mtb_marchio_linea "
+ "FOREIGN KEY (cod_linea) REFERENCES mtb_marchio_linea(cod_linea);",
"ALTER TABLE mtb_aart ADD CONSTRAINT fk_mtb_aart_mtb_marchio_slinea "
+ "FOREIGN KEY (cod_slinea) REFERENCES mtb_marchio_slinea(cod_slinea);",
"ALTER TABLE mtb_aart ADD CONSTRAINT fk_mtb_aart_mtb_marchio_sslinea "
+ "FOREIGN KEY (cod_sslinea) REFERENCES mtb_marchio_sslinea(cod_sslinea);"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,43 @@
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.utility.dto.IndexTableDTO;
import java.util.Arrays;
public class Migration_20251027173518 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
IndexTableDTO indexTableDTO =
new IndexTableDTO()
.setTableName("mtb_aart_marchio")
.setIndexName("ix_mtb_aart_marchio_unique")
.setUnique(true)
.setColumnsIndex(Arrays.asList(
new IndexTableDTO.ColumnIndex("marchio")
));
createIndex(indexTableDTO);
if (!existsColumn("ctb_movt", "rif_import")){
executeStatement("ALTER TABLE ctb_movt ADD rif_import varchar(40)");
}
if (!existsColumn("ctb_varbeni", "num_cmov")) {
executeStatement("ALTER TABLE ctb_varbeni add num_cmov int",
"ALTER TABLE ctb_varbeni ADD CONSTRAINT fk_ctb_varbeni_ctb_movt FOREIGN KEY (num_cmov) REFERENCES ctb_movt (num_cmov)");
}
}
@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_20251028153054 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("PICKING", "PRODUZIONE", "FLAG_SKIP_ASK_VERSAMENTO_AUTOMATICO", "N",
"Permette di saltare la domanda relativa all''effettuazione del versamento automatico, eseguendolo direttamente.", 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,94 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251029153203 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateView("[vw_tracciabUDCVend]", "CREATE VIEW [dbo].[vw_tracciabUDCVend] AS\n" +
"SELECT mtb_colt.cod_anag AS codAnag,\n" +
" gtb_anag.rag_soc AS ragSoc,\n" +
" ISNULL(vtb_dest.destinatario, '') AS destinazione,\n" +
" ISNULL(vtb_dest.citta, gtb_anag.citta) AS citta,\n" +
" ISNULL(vtb_dest.prov, gtb_anag.prov) AS provincia,\n" +
" ISNULL(vtb_dest.nazione, gtb_anag.nazione) AS nazione,\n" +
" mtb_colt.cod_dtip AS codDtip,\n" +
" mtb_colt.data_doc AS dataDoc,\n" +
" mtb_colt.ser_doc AS serDoc,\n" +
" mtb_colt.num_doc AS numDoc,\n" +
" mtb_colr.cod_mart AS codMart,\n" +
" mtb_aart.descrizione_estesa AS descrizioneEstesa,\n" +
" ISNULL(mtb_partita_mag.partita_mag_prod, mtb_colr.partita_mag) AS lotto,\n" +
" mtb_partita_mag.data_prod AS dataLotto,\n" +
" IIF(dtb_tipi.segno_qta_scar = -1, mtb_colr.barcode_ul_in, mtb_colr.barcode_ul_out) AS UDCVenduta,\n" +
" UDC.data_vers AS dataOraProd,\n" +
" UDC.cod_jfas AS LineaProd,\n" +
" UDC.num_ord AS numOrdProd,\n" +
" UDC.data_ord AS DataOrdProd,\n" +
" mtb_aart.unt_mis AS untMis,\n" +
" SUM(mtb_colr.qta_col) AS qtaVenduta,\n" +
" SUM(mtb_colr.num_cnf) AS colliVenduti,\n" +
" vtb_vett.rag_soc AS vettore,\n" +
" vtb_viaggi.targa AS Targa,\n" +
" vtb_viaggi.num_prenotazione AS num_prenotazione,\n" +
" vtb_viaggi.container AS container,\n" +
" vtb_viaggi.sigillo AS sigillo,\n" +
" vtb_viaggi.nave AS nave,\n" +
" vtb_viaggi.id_viaggio AS id_viaggio\n" +
" FROM mtb_colt\n" +
" INNER JOIN mtb_colr ON mtb_colt.gestione = mtb_colr.gestione AND\n" +
" mtb_colt.data_collo = mtb_colr.data_collo AND\n" +
" mtb_colt.ser_collo = mtb_colr.ser_collo AND\n" +
" mtb_colt.num_collo = mtb_colr.num_collo\n" +
" INNER JOIN dtb_tipi ON mtb_colt.cod_dtip = dtb_tipi.cod_dtip\n" +
" INNER JOIN gtb_anag ON mtb_colt.cod_anag = gtb_anag.cod_anag\n" +
" LEFT OUTER JOIN vtb_dest ON mtb_colt.cod_anag = vtb_dest.cod_anag AND\n" +
" mtb_colt.cod_vdes = vtb_dest.cod_vdes\n" +
" INNER JOIN mtb_aart ON mtb_colr.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN mtb_partita_mag ON mtb_colr.cod_mart = mtb_partita_mag.cod_mart AND\n" +
" mtb_colr.partita_mag = mtb_partita_mag.partita_mag\n" +
" INNER JOIN mtb_colt UDC ON IIF(dtb_tipi.segno_qta_scar = -1, mtb_colr.barcode_ul_in, mtb_colr.barcode_ul_out) =\n" +
" UDC.barcode_ul\n" +
" LEFT OUTER JOIN dtb_doct on mtb_colt.cod_dtip =dtb_doct.cod_dtip and mtb_colt.data_doc =dtb_doct.data_doc and mtb_colt.ser_doc= dtb_doct.ser_doc and mtb_colt.num_doc= dtb_doct.num_doc\n" +
" LEFT OUTER JOIN vtb_viaggi on dtb_doct.id_viaggio=vtb_viaggi.id_viaggio\n" +
" LEFT OUTER JOIN vtb_vett on vtb_viaggi.cod_vvet=vtb_vett.cod_vvet\n" +
"\n" +
"WHERE mtb_colt.gestione = 'V'\n" +
" AND dtb_tipi.tipo_emissione = 'DIRETTA'\n" +
"GROUP BY mtb_colt.cod_anag, gtb_anag.rag_soc, ISNULL(vtb_dest.destinatario, ''),\n" +
" ISNULL(vtb_dest.citta, gtb_anag.citta),\n" +
" ISNULL(vtb_dest.prov, gtb_anag.prov),\n" +
" ISNULL(vtb_dest.nazione, gtb_anag.nazione),\n" +
" mtb_colt.cod_dtip, mtb_colt.data_doc, mtb_colt.ser_doc, mtb_colt.num_doc,\n" +
" mtb_colr.cod_mart, mtb_aart.descrizione_estesa,\n" +
" ISNULL(mtb_partita_mag.partita_mag_prod, mtb_colr.partita_mag),\n" +
" mtb_partita_mag.data_prod,\n" +
" mtb_aart.unt_mis,\n" +
" IIF(dtb_tipi.segno_qta_scar = -1, mtb_colr.barcode_ul_in, mtb_colr.barcode_ul_out),\n" +
" UDC.data_vers,\n" +
" UDC.cod_jfas,\n" +
" UDC.data_ord,\n" +
" UDC.num_ord,\n" +
" vtb_vett.rag_soc, \n" +
" vtb_viaggi.targa, \n" +
" vtb_viaggi.num_prenotazione, \n" +
" vtb_viaggi.container, \n" +
" vtb_viaggi.sigillo, \n" +
" vtb_viaggi.nave, \n" +
" vtb_viaggi.id_viaggio");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,115 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251029170931 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getDettMatricoleDaOrdine", "CREATE Function [dbo].[getDettMatricoleDaOrdine] (@codJcom varchar(10)) \n" +
"RETURNS @dettMatricole TABLE( cod_prod varchar(15),\n" +
" descrizione_prod varchar(255), \n" +
" unt_mis_prod varchar(3),\n" +
" qta_inevasa numeric(20,5),\n" +
" qta_da_prod numeric(20,5),\n" +
" data_ord datetime, \n" +
" num_ord integer, \n" +
"matricola varchar(20)) AS\n" +
"Begin\n" +
" declare @codProd varchar(15),\n" +
" @descrizioneProd varchar(255), \n" +
" @untMisProd varchar(3), \n" +
" @qtaInevasa numeric(20,5), \n" +
" @qtaProd numeric(20,5), \n" +
" @dataOrd datetime, \n" +
" @numOrd integer,\n" +
" @existMatricola integer,\n" +
" @matricola varchar(20),\n" +
" @termCons varchar(1024);\n" +
"\n" +
" Declare crs_prod Cursor LOCAL SCROLL FOR\n" +
" select dtb_ordt.cod_prod, \n" +
" dtb_ordt.descrizione_prod, \n" +
" dtb_ordt.unt_mis_prod, \n" +
" dtb_ordt.qta_prod - dtb_ordt.qta_evasa_prod as qta_inevasa, \n" +
" convert(numeric(20,5), 0) as qta_da_prod, \n" +
" dtb_ordt.data_ord, \n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.term_cons\n" +
" from dtb_ordt \n" +
" where gestione = 'L' and \n" +
" livello = 1 and\n" +
" /*flag_evaso_forzato = 'N' and\n" +
" flag_evaso_prod = 'I' and */\n" +
" dtb_ordt.cod_jcom = @codJcom\n" +
"\n" +
" OPEN crs_prod \n" +
" FETCH NEXT FROM crs_prod INTO @codProd, @descrizioneProd, @untMisProd, @qtaInevasa, @qtaProd, @dataOrd, @numOrd, @termCons\n" +
" WHILE @@FETCH_STATUS = 0\n" +
" Begin \n" +
" IF @termCons IS NOT NULL\n" +
" BEGIN\n" +
" Declare crs_matricole Cursor LOCAL SCROLL FOR\n" +
" select value_string\n" +
" from parseStringIntoArray(@termcons, '|') \n" +
"\n" +
" OPEN crs_matricole \n" +
" FETCH NEXT FROM crs_matricole INTO @matricola\n" +
" WHILE @@FETCH_STATUS = 0\n" +
" Begin\n" +
" select @existMatricola = 0\n" +
" select @existMatricola = COUNT(*)\n" +
" from dtb_ordt, \n" +
" dtb_docr inner join (select cod_prod, \n" +
" partita_mag \n" +
" from dtb_doct \n" +
" where cod_dtip = dbo.getGestSetup('IMPORT_DOCUMENTI', 'CARICO_SCARICO_DA_FABB', 'COD_DTIP_SCAR_GIROC'))giroc on giroc.cod_prod = dtb_docr.cod_mart and\n" +
" giroc.partita_mag = dtb_docr.matricola, \n" +
" dtb_tipi\n" +
" where dtb_docr.data_ord = dtb_ordt.data_ord and\n" +
" dtb_docr.num_ord = dtb_ordt.num_ord and\n" +
" dtb_ordt.gestione = 'L' and \n" +
" dtb_docr.cod_dtip = dtb_tipi.cod_dtip and\n" +
" dtb_tipi.tipo_emissione = 'DIRETTA' and\n" +
" dtb_tipi.segno_qta_car = 1 and\n" +
" dtb_ordt.livello = 1 and\n" +
" dtb_ordt.data_ord = @dataOrd and\n" +
" dtb_ordt.num_ord = @numOrd and\n" +
" dtb_docr.matricola = @matricola;\n" +
" \n" +
"\n" +
" IF @existMatricola = 0\n" +
" insert into @dettMatricole \n" +
" select @codProd, @descrizioneProd, @untMisProd, @qtaInevasa, @qtaProd, @dataOrd, @numOrd, @matricola\n" +
"\n" +
" FETCH NEXT FROM crs_matricole INTO @matricola\n" +
" end \n" +
" close crs_matricole\n" +
" deallocate crs_matricole \n" +
" END\n" +
" ELSE\n" +
" insert into @dettMatricole \n" +
" select @codProd, @descrizioneProd, @untMisProd, @qtaInevasa, @qtaProd, @dataOrd, @numOrd, null\n" +
"\n" +
" FETCH NEXT FROM crs_prod INTO @codProd, @descrizioneProd, @untMisProd, @qtaInevasa, @qtaProd, @dataOrd, @numOrd, @termCons\n" +
" end \n" +
" close crs_prod\n" +
" deallocate crs_prod \n" +
"\n" +
" return\n" +
"end");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,68 @@
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.base.EntityBase;
import it.integry.ems_model.entity.JtbCiclCq;
import it.integry.ems_model.entity.JtbCiclCqValori;
import it.integry.ems_model.entity._enum.TipoValore;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import java.util.ArrayList;
import java.util.List;
public class Migration_20251029181607 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"EXEC sp_updateextendedproperty 'MS_Description',\n" +
" 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time, 7 -> DropdownList',\n" +
" 'SCHEMA', 'dbo', 'TABLE', 'jtb_cicl_cq', 'COLUMN', 'tipo_valore';",
"EXEC sp_updateextendedproperty 'MS_Description',\n" +
" 'Valori possibili: 0 -> Testo, 1 -> Boolean, 2 -> Intero, 3 -> Decimale, 4 -> Date, 5 -> Datetime, 6 -> Time, 7 -> DropdownList',\n" +
" 'SCHEMA', 'dbo', 'TABLE', 'dtb_ord_cq', 'COLUMN', 'tipo_valore';"
);
dropChecks("jtb_cicl_cq", "tipo_valore");
dropChecks("dtb_ord_cq", "tipo_valore");
executeStatement(
"ALTER TABLE jtb_cicl_cq\n" +
" ADD CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR\n" +
" [tipo_valore] = 5 OR [tipo_valore] = 6 OR [tipo_valore] = 7);",
"ALTER TABLE dtb_ord_cq\n" +
" ADD CHECK ([tipo_valore] = 0 OR [tipo_valore] = 1 OR [tipo_valore] = 2 OR [tipo_valore] = 3 OR [tipo_valore] = 4 OR\n" +
" [tipo_valore] = 5 OR [tipo_valore] = 6 OR [tipo_valore] = 7);",
"CREATE TABLE jtb_cicl_cq_valori\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT jtb_cicl_cq_valori_pk\n" +
" PRIMARY KEY,\n" +
" descrizione VARCHAR(255) NOT NULL,\n" +
" valori VARCHAR(MAX) NOT NULL\n" +
");",
"ALTER TABLE jtb_cicl_cq\n" +
" ADD id_valori BIGINT\n" +
" CONSTRAINT jtb_cicl_cq_jtb_cicl_cq_valori_id_fk\n" +
" REFERENCES dbo.jtb_cicl_cq_valori;",
"ALTER TABLE dtb_ord_cq\n" +
" ADD id_valori BIGINT\n" +
" CONSTRAINT dtb_ord_cq_jtb_cicl_cq_valori_id_fk\n" +
" REFERENCES dbo.jtb_cicl_cq_valori;"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,63 @@
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.JtbCiclCq;
import it.integry.ems_model.entity.JtbCiclCqValori;
import it.integry.ems_model.entity._enum.TipoValore;
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_20251030093449 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm)) {
return;
}
JtbCiclCqValori jtbCiclCqValori = new JtbCiclCqValori()
.setDescrizione("Tipologia Fermi Macchina")
.setValori("FERMO MACCHINA|CAMBIO FORMATO|CAMBIO COLORE|PULIZIA|ATTESA PRODOTTO");
jtbCiclCqValori.setOperation(OperationType.INSERT);
jtbCiclCqValori.manageWithParentConnection(connection);
String sql =
"SELECT DISTINCT cod_prod, num_fase, MAX(id_riga) + 1 AS id_riga\n" +
"FROM jtb_cicl_cq\n" +
"WHERE tipologia = 'FERMI_MACCHINA'\n" +
"GROUP BY cod_prod, num_fase";
List<JtbCiclCq> jtbCiclCqList = UtilityDB.executeSimpleQueryDTO(connection, sql, JtbCiclCq.class);
if (UtilityList.isNullOrEmpty(jtbCiclCqList)) {
return;
}
for (JtbCiclCq jtbCiclCq : jtbCiclCqList) {
jtbCiclCq
.setControllo("Tipologia")
.setNumRip(0)
.setTipologia("FERMI_MACCHINA")
.setTipoValore(TipoValore.DROPDOWNLIST)
.setIdValori(jtbCiclCqValori.getId());
jtbCiclCq.setOperation(OperationType.INSERT);
jtbCiclCq.manageWithParentConnection(connection);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251031092657 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table dtb_tipi add flag_delete_plk bit not null default 0");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
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_20251031094727 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isCustomer(IntegryCustomer.RossoGargano)) {
executeStatement("insert into stb_abil\n" +
"select stb_menu_opz.cod_opz, user_name, flag_abil, stb_menu_opz.gest_name\n" +
"from ( select * from stb_abil where stb_abil.cod_opz = 'VR011' ) stb_abil\n" +
"cross apply ( select * from stb_menu_opz where stb_menu_opz.cod_opz ='VR131' ) stb_menu_opz");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251031100008 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("exec sp_rename 'dtb_tipi.flag_delete_plk', 'flag_delete_pkl'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,49 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251031120553 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("f_suggestEAN13","CREATE FUNCTION [dbo].[f_suggestEAN13](@precode VARCHAR(12))\n" +
" RETURNS VARCHAR(13)\n" +
" AS\n" +
" BEGIN\n" +
"\n" +
" DECLARE @ean13 VARCHAR(13);\n" +
"\n" +
" IF LEN(@precode) = 12\n" +
" BEGIN\n" +
" SELECT @ean13 = CONCAT(@precode, dbo.getCheckDigitEan13(@precode))\n" +
" END;\n" +
" ELSE\n" +
" BEGIN\n" +
" WITH ean AS (SELECT MAX(CAST((RIGHT(\n" +
" LEFT(cod_barre, LEN(cod_barre) - 1),\n" +
" (LEN(cod_barre) - LEN(@precode) - 1))) AS NUMERIC)) AS maxValue\n" +
"\n" +
" FROM mvw_barcode\n" +
" WHERE cod_barre LIKE @precode + '%'\n" +
" AND LEN(cod_barre) = 13\n" +
" AND ISNUMERIC(RIGHT(cod_barre, LEN(cod_barre) - LEN(@precode))) = 1)\n" +
" SELECT @ean13 = CONCAT(@precode,\n" +
" RIGHT(FORMAT((ISNULL(maxValue, 0) + 1), REPLICATE('0', 12)), 12 - LEN(@precode)))\n" +
" FROM ean;\n" +
"\n" +
" SELECT @ean13 = CONCAT(@ean13, dbo.getCheckDigitEan13(@ean13))\n" +
"\n" +
"\n" +
" END\n" +
" RETURN @ean13;\n" +
" END\n");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,28 @@
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_20251031122121 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("W_CSITUAZ_CNTECONCOMM_DISP", "DATAWINDOW", "D_CSIT_CNTECONCOMM_REP", null,
null, false, null, false, false,
false, false, false, null, false, null);
if(isCustomer(IntegryCustomer.Smetar)){
updateSetupValue("W_CSITUAZ_CNTECONCOMM_DISP", "DATAWINDOW", "D_CSIT_CNTECONCOMM_REP", "d_csit_cnteconcomm_smetar_rep");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,125 @@
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_20251031125910 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isCustomer(IntegryCustomer.Gramm)) {
createOrUpdateView("[OlapFermiMacchina]", "CREATE view [dbo].[OlapFermiMacchina] as \n" +
"\n" +
" \n" +
"\n" +
"\n" +
"\n" +
" WITH controlli_qualita AS (SELECT [Data Inizio],[Data Fine], [Operatore], [Tipologia], [Descrizione del Fermo] as Note, gestione, data_ord, num_ord, num_rip\n" +
" FROM (\n" +
" select controllo, valore_ril, DTB_ORDT.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord, dtb_ord_cqr.num_rip\n" +
" \n" +
"from dtb_ord_cqr inner join dtb_ord_cq on dtb_ord_cqr.gestione=dtb_ord_cq.gestione and \n" +
" dtb_ord_cqr.data_ord=dtb_ord_cq.data_ord and dtb_ord_cqr.num_ord=dtb_ord_cq.num_ord \n" +
" and dtb_ord_cqr.id_riga=dtb_ord_cq.id_riga\n" +
" inner join dtb_ordt on dtb_ord_cqr.gestione=dtb_ordt.gestione and \n" +
" dtb_ord_cqr.data_ord=dtb_ordt.data_ord and \n" +
" dtb_ord_cqr.num_ord=dtb_ordt.num_ord\n" +
" \n" +
"where dtb_ord_cqr.gestione='L' and dtb_ord_cqr.data_ord >'2024/10/01' and dtb_ordt.cod_mdep in('34','01','33')\n" +
" ) cq\n" +
" PIVOT\n" +
" (max(valore_ril)\n" +
" FOR controllo IN ([Data Inizio],[Data Fine], [Operatore],[Tipologia],[Descrizione del Fermo])\n" +
" ) AS pivottable)\n" +
"\n" +
"select dtb_ordt.cod_mdep,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.data_ord, \n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.cod_prod,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.marchio,\n" +
" dtb_ordt.partita_mag,\n" +
" dtb_ordt.unt_mis_prod,\n" +
" dtb_ordt.qta_evasa_prod,\n" +
" try_convert(datetime, controlli_qualita.[Data Inizio], 103) as Data_inz_fermo,\n" +
" try_convert(datetime, controlli_qualita.[Data Fine], 103) as Data_fine_fermo,\n" +
" controlli_qualita.Operatore,\n" +
" controlli_qualita.Note,\n" +
" SUM(\n" +
" CASE\n" +
" WHEN TRY_CONVERT(datetime, controlli_qualita.[Data Inizio], 103) IS NOT NULL\n" +
" AND TRY_CONVERT(datetime, controlli_qualita.[Data Fine], 103) IS NOT NULL\n" +
" THEN DATEDIFF(\n" +
" MINUTE,\n" +
" TRY_CONVERT(datetime, controlli_qualita.[Data Inizio], 103),\n" +
" TRY_CONVERT(datetime, controlli_qualita.[Data Fine], 103)\n" +
" )\n" +
" ELSE 0\n" +
" END\n" +
") AS min_lav, -- min_fermo (non è stato cambiato il nome del campo perchè ci sono diversi report che leggono da questa vista)\n" +
"\n" +
"0 AS h_lav,\n" +
"\n" +
"SUM(\n" +
" CASE\n" +
" WHEN TRY_CONVERT(datetime, controlli_qualita.[Data Inizio], 103) IS NOT NULL\n" +
" AND TRY_CONVERT(datetime, controlli_qualita.[Data Fine], 103) IS NOT NULL\n" +
" THEN DATEDIFF(\n" +
" HOUR,\n" +
" TRY_CONVERT(datetime, controlli_qualita.[Data Inizio], 103),\n" +
" TRY_CONVERT(datetime, controlli_qualita.[Data Fine], 103)\n" +
" )\n" +
" ELSE 0\n" +
" END\n" +
") OVER (PARTITION BY dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord) AS h_fermo,\n" +
"\n" +
"controlli_qualita.Tipologia\n" +
"\n" +
" \n" +
"from controlli_qualita inner join dtb_ordt on controlli_qualita.gestione=dtb_ordt.gestione and \n" +
" controlli_qualita.data_ord=dtb_ordt.data_ord and \n" +
" controlli_qualita.num_ord=dtb_ordt.num_ord\n" +
" \n" +
" inner join mtb_aart on dtb_ordt.cod_prod=mtb_aart.cod_mart\n" +
" left outer join ( select num_ord, data_ord, gestione, cod_jfas\n" +
" from \n" +
" (select num_ord, data_ord, gestione, data_iniz, cod_jfas,\n" +
" ROW_NUMBER() OVER (PARTITION BY gestione, data_ord, num_ord ORDER BY data_iniz ASC) AS num\n" +
" from dtb_ord_steps\n" +
" where data_iniz IS NOT NULL) step\n" +
" where num='1') dtb_ord_steps ON dtb_ordt.gestione = dtb_ord_steps.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ord_steps.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ord_steps.num_ord\n" +
"where dtb_ordt.gestione='L' and dtb_ordt.data_ord>'2024/10/01' and dtb_ordt.cod_mdep in('34','01','33') \n" +
"\n" +
"group by dtb_ordt.cod_mdep,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.data_ord, \n" +
" dtb_ordt.num_ord,\n" +
" dtb_ordt.cod_prod,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.marchio,\n" +
" dtb_ordt.partita_mag,\n" +
" dtb_ordt.unt_mis_prod,\n" +
" dtb_ordt.qta_prod,\n" +
" dtb_ordt.qta_evasa_prod,\n" +
" controlli_qualita.[Data Inizio],\n" +
" controlli_qualita.[Data Fine],\n" +
" controlli_qualita.Operatore,\n" +
" controlli_qualita.Note,\n" +
" dtb_ordt.gestione,\n" +
" controlli_qualita.Tipologia");
}
}
@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_20251031162801 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Levanplast_Levanplast))
return;
updateSetupValue("W_ARICEZIONE_MERCE_INS_NEW_COLLO_DLG", "SETUP", "AGGIORNA_DATA_SCAD_PARTITA_MAG", "S",
"Se impostata a S in fase di ricezione merce la data di scadenza della partita verrà aggiornata a data ricezione + gg_scad ove presente", false, null, false, false, false,
false, false, null, false, null);
executeStatement("DELETE\n" +
"FROM stb_gest_setup_depo\n" +
"WHERE gest_name = 'W_ARICEZIONE_MERCE_INS_NEW_COLLO_DLG'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'AGGIORNA_DATA_SCAD_PARTITA_MAG'"
);
executeStatement("DELETE\n" +
"FROM wtb_gest_setup_user\n" +
"WHERE gest_name = 'W_ARICEZIONE_MERCE_INS_NEW_COLLO_DLG'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'AGGIORNA_DATA_SCAD_PARTITA_MAG'"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,35 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251031163348 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("INSERT INTO stb_gest_setup VALUES (\n" +
"\t'W_ARICEZIONE_MERCE_INS_NEW_COLLO_DLG',\n" +
"\t'SETUP',\n" +
"\t'AGGIORNA_DATA_SCAD_PARTITA_MAG',\n" +
"\t'S',\n" +
"\t'Se impostata a S in fase di ricezione merce la data di scadenza della partita verrà aggiornata a data ricezione + gg_scad ove presente',\n" +
"\t'N',\n" +
"\tNULL,\n" +
"\t'N',\n" +
"\t'2025-10-31 16:28:03.000',\n" +
"\t'Database Administrator',\n" +
"\t'N',\n" +
"\t'N',\n" +
"\t'N',\n" +
"\t'N',\n" +
"\tNULL,\n" +
"\t0);\n");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,35 @@
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_20251103103545 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("CREATE TABLE [dbo].[srl_activity_art](\n" +
"\tid bigint identity,\n" +
"\t[activity_id] [varchar](15) NOT NULL,\n" +
"\t[cod_mart] [varchar](15) not NULL\n" +
")\n"
,
"alter table srl_activity_art add constraint pk_srl_activity_art primary key(id);\n");
if (isCustomerDb(IntegryCustomerDB.Carelli_Winact)) {
executeStatement("insert into srl_activity_art\n" +
"select activity_id, cod_mart\n" +
"from stb_activity\n" +
"where cod_jcom = 'MODEL'\n" +
"and activity_type_id = 'SEGNALAZIONE'\n" +
"and cod_mart is not null");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,36 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251103175252 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"CREATE TABLE mtb_colori ("
+ " cod_col varchar(6) NOT NULL, "
+ " descrizione varchar(255) NOT NULL );",
"ALTER TABLE mtb_colori ADD CONSTRAINT pk_mtb_colori PRIMARY KEY (cod_col);",
"CREATE TABLE mtb_aart_colori ("
+ " cod_mart varchar(15) NOT NULL, "
+ " cod_col varchar(6) NOT NULL, "
+ " cod_barre varchar(25) NULL);",
"ALTER TABLE mtb_aart_colori ADD CONSTRAINT pk_mtb_aart_colori PRIMARY KEY (cod_mart, cod_col);",
"ALTER TABLE mtb_aart_colori ADD CONSTRAINT fk_mtb_aart_colori_mtb_aart "
+ "FOREIGN KEY (cod_mart) REFERENCES mtb_aart (cod_mart);",
"ALTER TABLE mtb_aart_colori ADD CONSTRAINT fk_mtb_aart_colori_mtb_colori "
+ "FOREIGN KEY (cod_col) REFERENCES mtb_colori (cod_col);"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,384 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251104122721 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"ALTER TABLE dbo.vtb_offt\n" +
" ADD cod_banc VARCHAR(5)\n" +
" CONSTRAINT vtb_offt_gtb_banc_cod_banc_fk\n" +
" REFERENCES dbo.gtb_banc;",
"ALTER TABLE dbo.vtb_offt\n" +
" ADD cod_banc_azi VARCHAR(5)\n" +
" CONSTRAINT vtb_offt_gtb_banc_azi_cod_banc_fk\n" +
" REFERENCES dbo.gtb_banc_azi;"
);
createOrUpdateView(
"vvw_contratti_vendita",
"CREATE VIEW [dbo].[vvw_contratti_vendita] AS\n" +
"WITH depo AS (SELECT TOP 1 cod_mdep\n" +
" FROM mtb_depo\n" +
" WHERE mtb_depo.flag_movimentabile = 'S'\n" +
" AND (cod_anag IS NULL OR cod_anag IN (SELECT gtb_anag.cod_anag\n" +
" FROM gtb_anag,\n" +
" azienda\n" +
" WHERE gtb_anag.part_iva = azienda.part_iva))),\n" +
" contratto AS (SELECT vtb_offt.cod_anag,\n" +
" vtb_offt.cod_vdes,\n" +
" vtb_offt.note,\n" +
" vtb_offr.id_offerta,\n" +
" vtb_offr.cod_mart,\n" +
" vtb_offr.unt_mis,\n" +
" vtb_offr.descrizione,\n" +
" vtb_offr.descrizione_html,\n" +
" vtb_offr.json_costi,\n" +
" vtb_offr.costo_unt,\n" +
" vtb_offr.unt_mis_vend,\n" +
" vtb_offr.prz_unt,\n" +
" vtb_offr.qta_off,\n" +
" vtb_offr.data_iniz_contr,\n" +
" vtb_offr.data_fine_contr,\n" +
" vtb_offt.cod_paga,\n" +
" vtb_offt.descrizione_paga,\n" +
" vtb_offr.perc_sco1,\n" +
" vtb_offr.perc_sco2,\n" +
" vtb_offr.perc_sco3,\n" +
" vtb_offr.perc_sco4,\n" +
" vtb_offr.rap_conv_vend,\n" +
" vtb_offr.qta_ord,\n" +
" vtb_offr.qta_doc,\n" +
" vtb_offr.qta_fatt,\n" +
" vtb_offr.note AS note_riga,\n" +
" vtb_offt.condizioni_commerciali,\n" +
" vtb_offt.incoterms,\n" +
" vtb_offt.note_incoterms,\n" +
" vtb_offt.data_rif_scad,\n" +
" vtb_offt.perc_prov,\n" +
" vtb_offt.note_carico,\n" +
" vtb_offt.term_cons,\n" +
" vtb_offt.cod_banc,\n" +
" vtb_offt.cod_banc_azi\n" +
" FROM vtb_offt\n" +
" INNER JOIN vtb_offr ON vtb_offt.id_offerta = vtb_offr.id_offerta\n" +
" CROSS APPLY [dbo].[getUntMisArticolo](vtb_offr.cod_mart, vtb_offr.unt_mis_vend) um\n" +
" WHERE stato_offerta = 3)\n" +
"\n" +
"SELECT contratto.data_iniz_contr AS data_iniz,\n" +
" contratto.data_fine_contr AS data_fine,\n" +
" contratto.id_offerta AS id_contratto,\n" +
" contratto.note,\n" +
" contratto.cod_mart,\n" +
" contratto.descrizione AS descrizione_articolo,\n" +
" contratto.unt_mis_vend AS unt_mis_ven,\n" +
" contratto.qta_off AS qta_vend_contratto,\n" +
" contratto.prz_unt AS prz_vend,\n" +
" contratto.perc_sco1,\n" +
" contratto.perc_sco2,\n" +
" contratto.perc_sco3,\n" +
" contratto.perc_sco4,\n" +
" ISNULL(contratto.qta_ord, 0) AS qta_ord,\n" +
" ISNULL(contratto.qta_doc, 0) AS qta_doc,\n" +
" gtb_anag.cod_anag,\n" +
" gtb_anag.rag_soc,\n" +
" gtb_anag.indirizzo,\n" +
" gtb_anag.cap,\n" +
" gtb_anag.citta,\n" +
" gtb_anag.prov,\n" +
" gtb_anag.nazione,\n" +
" gtb_anag.e_mail,\n" +
" gtb_anag.telefono,\n" +
" gtb_anag.part_iva,\n" +
" ISNULL(giacenza.qta_disp * rap_conv_vend, 0) AS qta_disp,\n" +
" (SELECT cod_mdep FROM depo) AS cod_mdep,\n" +
" contratto.prz_unt * (1 - contratto.perc_sco1 / 100) * (1 - contratto.perc_sco2 / 100) -\n" +
" (1 * contratto.perc_sco3 / 100) *\n" +
" (1 - contratto.perc_sco4 / 100) AS prz_vend_netto,\n" +
" contratto.cod_paga,\n" +
" ISNULL(contratto.descrizione_paga, gtb_paga.descrizione) AS descrizione_paga,\n" +
" contratto.qta_off -\n" +
" ISNULL(contratto.qta_ord, 0) -\n" +
" ISNULL(contratto.qta_doc, 0) AS qta_residua,\n" +
" ISNULL(contratto.qta_ord + contratto.qta_doc, 0) AS qta_usata,\n" +
" contratto.rap_conv_vend AS rap_conv,\n" +
" contratto.cod_vdes,\n" +
" vd.destinatario,\n" +
" vd.indirizzo AS indirizzo_dest,\n" +
" vc.cod_vlis,\n" +
" contratto.qta_fatt,\n" +
" contratto.note_riga,\n" +
" contratto.condizioni_commerciali,\n" +
" contratto.incoterms,\n" +
" gp.descrizione AS desc_incoterms,\n" +
" contratto.note_incoterms,\n" +
" contratto.data_rif_scad,\n" +
" contratto.perc_prov,\n" +
" contratto.note_carico,\n" +
" contratto.term_cons,\n" +
" gtb_tipi_paga.flag_banca_ven,\n" +
" IIF(gtb_tipi_paga.flag_banca_ven = 'C', gb.cod_banc, gba.cod_banc_azi) AS cod_banc,\n" +
" IIF(gtb_tipi_paga.flag_banca_ven = 'C', gb.descrizione, gba.descrizione) AS descr_banc\n" +
"FROM contratto\n" +
" INNER JOIN gtb_anag ON contratto.cod_anag = gtb_anag.cod_anag\n" +
" INNER JOIN vtb_clie vc ON contratto.cod_anag = vc.cod_anag\n" +
" LEFT OUTER JOIN vtb_dest vd ON contratto.cod_anag = vd.cod_anag AND contratto.cod_vdes = vd.cod_vdes\n" +
" LEFT OUTER JOIN gtb_paga ON contratto.cod_paga = gtb_paga.cod_paga\n" +
" LEFT OUTER JOIN gtb_tipi_paga ON gtb_paga.tipo_paga = gtb_tipi_paga.tipo_paga\n" +
" LEFT OUTER JOIN gtb_porto gp ON contratto.incoterms = gp.porto\n" +
" LEFT OUTER JOIN gtb_banc gb ON contratto.cod_banc = gb.cod_banc\n" +
" LEFT OUTER JOIN gtb_banc_azi gba ON contratto.cod_banc_azi = gba.cod_banc_azi\n" +
" OUTER APPLY (SELECT SUM(mtb_part.qta_esistente + mtb_part.qta_imp_lav - mtb_part.qta_imp_cli) AS qta_disp\n" +
" FROM mtb_part\n" +
" INNER JOIN mtb_depo ON mtb_part.cod_mdep = mtb_depo.cod_mdep\n" +
" WHERE mtb_depo.flag_movimentabile = 'S'\n" +
" AND mtb_part.cod_mart = contratto.cod_mart) giacenza");
createOrUpdateFunction(
"pvm_getassortimentoClientePedane",
"CREATE FUNCTION [dbo].[pvm_getassortimentoClientePedane](\n" +
" @codAnag VARCHAR(5), @codVlis VARCHAR(5), @codVdes VARCHAR(5), @dataValidita DATETIME, @viewPromo BIT,\n" +
" @pedane INT = 0\n" +
")\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN( /*\n" +
"\n" +
" declare @codAnag VARCHAR(5), @codVlis VARCHAR(5), @dataValidita DATETIME, @viewPromo BIT\n" +
" set @codAnag = 'C3355'\n" +
" set @codVlis = 'C3355'\n" +
" set @dataValidita = '2023/04/04'\n" +
" set @viewPromo = 1;\n" +
" */\n" +
" WITH assortimento AS (SELECT vtb_griglia_art.cod_mart\n" +
" FROM vtb_clie\n" +
" INNER JOIN vtb_griglia ON vtb_clie.cod_griglia = vtb_griglia.cod_griglia\n" +
" INNER JOIN vtb_griglia_art\n" +
" ON vtb_griglia.cod_griglia = vtb_griglia_art.cod_griglia AND\n" +
" vtb_griglia.data_validita = vtb_griglia_art.data_validita\n" +
" WHERE vtb_clie.cod_anag = @codAnag\n" +
" AND vtb_griglia.data_validita = (SELECT MAX(g.data_validita)\n" +
" FROM vtb_griglia g\n" +
" WHERE g.cod_griglia = vtb_clie.cod_griglia\n" +
" AND g.data_validita <= ISNULL(@dataValidita, CAST(GETDATE() AS DATE)))),\n" +
" lisv AS (SELECT cod_vlis, cod_vlis AS cod_vlis_rif\n" +
" FROM vtb_list\n" +
" WHERE cod_vlis_rif IS NULL\n" +
" UNION ALL\n" +
" SELECT cod_vlis, cod_vlis_rif\n" +
" FROM vtb_list\n" +
" WHERE cod_vlis_rif IS NOT NULL),\n" +
" listino AS (SELECT DISTINCT cod_mart, tipo_variazione\n" +
" FROM (SELECT lisv.cod_vlis,\n" +
" mtb_lisv.cod_mart,\n" +
" LAST_VALUE(CASE\n" +
" WHEN vtb_list_data.data_iniz IS NULL THEN NULL\n" +
" ELSE mtb_lisv_data.tipo_variazione END)\n" +
" OVER (PARTITION BY lisv.cod_vlis, mtb_lisv.cod_mart\n" +
" ORDER BY vtb_list_data.data_iniz, CASE WHEN vtb_list_data.cod_promo IS NULL THEN 0 ELSE 1 END, vtb_list_data.versione\n" +
" RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS tipo_variazione\n" +
" FROM lisv\n" +
" INNER JOIN mtb_lisv ON lisv.cod_vlis_rif = mtb_lisv.cod_vlis\n" +
" INNER JOIN mtb_lisv_data ON mtb_lisv.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" mtb_lisv.cod_mart = mtb_lisv_data.cod_mart\n" +
" LEFT OUTER JOIN vtb_list_data\n" +
" ON mtb_lisv_data.cod_vlis = vtb_list_data.cod_vlis AND\n" +
" mtb_lisv_data.versione = vtb_list_data.versione AND\n" +
" vtb_list_data.data_iniz <=\n" +
" ISNULL(@dataValidita, CAST(GETDATE() AS DATE))\n" +
" WHERE lisv.cod_vlis = @codVlis\n" +
" AND NOT EXISTS(SELECT cod_mart FROM assortimento)) t\n" +
" WHERE (t.tipo_variazione IS NULL OR t.tipo_variazione <> 'D')),\n" +
" tmp_lisv AS (SELECT l.cod_mart,\n" +
" l.cod_vlis,\n" +
" ISNULL(p.data_iniz, l.data_iniz) AS data_iniz,\n" +
" p.data_fine,\n" +
" l.da,\n" +
" l.a,\n" +
" ISNULL(p.prz_vend, l.prz_vend_trasp) AS prz_vend,\n" +
" ISNULL(p.prz_vend_netto, l.prz_vend_trasp_netto) AS prz_vend_netto,\n" +
" ISNULL(p.perc_sco1, l.perc_sco1) AS perc_sco1,\n" +
" ISNULL(p.perc_sco2, l.perc_sco2) AS perc_sco2,\n" +
" ISNULL(p.perc_sco3, l.perc_sco3) AS perc_sco3,\n" +
" ISNULL(p.perc_sco4, l.perc_sco4) AS perc_sco4,\n" +
" p.perc_prov,\n" +
" CONVERT(NUMERIC(20, 5), 0) AS qta_residua,\n" +
" CONVERT(BIGINT, NULL) AS id_contratto,\n" +
" ISNULL(p.rap_conv, l.rap_conv) AS rap_conv,\n" +
" ISNULL(p.note, l.note) AS note,\n" +
" CAST(NULL AS VARCHAR(5)) AS cod_vdes,\n" +
" l.cod_tcol_ul AS cod_tcol_ul,\n" +
" ISNULL(p.unt_mis_ven, l.unt_mis_ven) AS unt_mis_ven,\n" +
" l.colli_pedana AS colli_pedana,\n" +
" ISNULL(p.tipo_variazione, l.tipo_variazione) AS tipo_variazione,\n" +
" CONVERT(VARCHAR(1), CASE\n" +
" WHEN p.cod_promo IS NULL THEN NULL\n" +
" ELSE 'P' END) AS tipo_promo,\n" +
" CONVERT(VARCHAR(5), NULL) AS cod_paga,\n" +
" CONVERT(VARCHAR(5), NULL) AS descr_paga,\n" +
" l.porto,\n" +
" l.qta_cnf,\n" +
" NULL AS note_incoterms,\n" +
" NULL AS data_rif_scad,\n" +
" NULL AS note_carico,\n" +
" NULL AS term_cons,\n" +
" NULL AS cod_banc,\n" +
" NULL AS descr_banc\n" +
" FROM dbo.getListinoVenditaPedane(@dataValidita, @codVlis, NULL, @pedane) l\n" +
" LEFT OUTER JOIN dbo.getPromozioneVendita(@dataValidita, @dataValidita,\n" +
" @codVlis, NULL, NULL) p\n" +
" ON l.cod_vlis = p.cod_vlis AND l.cod_mart = p.cod_mart AND\n" +
" ISNULL(@viewPromo, 0) = 1\n" +
" WHERE l.cod_vlis = @codVlis\n" +
" AND l.cod_mart IN (SELECT cod_mart\n" +
" FROM assortimento\n" +
" UNION ALL\n" +
" SELECT cod_mart\n" +
" FROM listino)\n" +
" AND l.tipo_variazione <> 'D'\n" +
" AND l.tipo_variazione IS NOT NULL\n" +
" AND l.flag_attivo = 'S'\n" +
" UNION ALL\n" +
" SELECT l.cod_mart,\n" +
" l.cod_vlis,\n" +
" NULL AS data_iniz,\n" +
" NULL AS data_fine,\n" +
" NULL AS da,\n" +
" NULL AS a,\n" +
" NULL AS prz_vend,\n" +
" NULL AS prz_vend_netto,\n" +
" NULL AS perc_sco1,\n" +
" NULL AS perc_sco2,\n" +
" NULL AS perc_sco3,\n" +
" NULL AS perc_sco4,\n" +
" NULL AS perc_prov,\n" +
" NULL AS qta_residua,\n" +
" NULL AS id_contratto,\n" +
" um.rap_conv AS rap_conv,\n" +
" NULL AS note,\n" +
" CAST(NULL AS VARCHAR(5)) AS cod_vdes,\n" +
" NULL AS cod_tcol_ul,\n" +
" l.unt_mis_ven AS unt_mis_ven,\n" +
" NULL AS colli_pedana,\n" +
" NULL AS tipo_variazione,\n" +
" NULL AS tipo_promo,\n" +
" CONVERT(VARCHAR(5), NULL) AS cod_paga,\n" +
" CONVERT(VARCHAR(5), NULL) AS descr_paga,\n" +
" NULL porto,\n" +
" mtb_aart.qta_cnf,\n" +
" NULL AS note_incoterms,\n" +
" NULL AS data_rif_scad,\n" +
" NULL AS note_carico,\n" +
" NULL AS term_cons,\n" +
" NULL AS cod_banc,\n" +
" NULL AS descr_banc\n" +
" FROM mtb_lisv l\n" +
" INNER JOIN listino ON l.cod_mart = listino.cod_mart\n" +
" INNER JOIN mtb_aart ON l.cod_mart = mtb_aart.cod_mart\n" +
" CROSS APPLY dbo.getUntMisArticolo(l.cod_mart, l.unt_mis_ven) um\n" +
" WHERE l.cod_vlis = @codVlis\n" +
" AND listino.tipo_variazione IS NULL\n" +
" UNION ALL\n" +
" SELECT vvw_contratti_vendita.cod_mart,\n" +
" NULL AS cod_vlis,\n" +
" vvw_contratti_vendita.data_iniz,\n" +
" vvw_contratti_vendita.data_fine,\n" +
" NULL AS da,\n" +
" NULL AS a,\n" +
" vvw_contratti_vendita.prz_vend,\n" +
" ROUND(vvw_contratti_vendita.prz_vend *\n" +
" (1 - ISNULL(vvw_contratti_vendita.perc_sco1, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco2, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco3, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco4, 0)),\n" +
" 5) AS prz_vend_netto,\n" +
" vvw_contratti_vendita.perc_sco1,\n" +
" vvw_contratti_vendita.perc_sco2,\n" +
" vvw_contratti_vendita.perc_sco3,\n" +
" vvw_contratti_vendita.perc_sco4,\n" +
" vvw_contratti_vendita.perc_prov,\n" +
" vvw_contratti_vendita.qta_residua,\n" +
" vvw_contratti_vendita.id_contratto,\n" +
" vvw_contratti_vendita.rap_conv,\n" +
" vvw_contratti_vendita.note,\n" +
" vvw_contratti_vendita.cod_vdes,\n" +
" NULL,\n" +
" vvw_contratti_vendita.unt_mis_ven,\n" +
" NULL,\n" +
" NULL,\n" +
" 'C' AS tipo_promo,\n" +
" vvw_contratti_vendita.cod_paga,\n" +
" vvw_contratti_vendita.descrizione_paga AS descr_paga,\n" +
" vvw_contratti_vendita.incoterms AS porto,\n" +
" mtb_aart.qta_cnf,\n" +
" vvw_contratti_vendita.note_incoterms,\n" +
" vvw_contratti_vendita.data_rif_scad,\n" +
" vvw_contratti_vendita.note_carico,\n" +
" vvw_contratti_vendita.term_cons,\n" +
" vvw_contratti_vendita.cod_banc,\n" +
" vvw_contratti_vendita.descr_banc\n" +
" FROM vvw_contratti_vendita\n" +
" INNER JOIN mtb_aart ON vvw_contratti_vendita.cod_mart = mtb_aart.cod_mart\n" +
" WHERE vvw_contratti_vendita.cod_anag = @codAnag\n" +
" AND (@codVdes IS NULL OR vvw_contratti_vendita.cod_vdes IS NULL OR\n" +
" vvw_contratti_vendita.cod_vdes = @codVdes)\n" +
" AND (ISNULL(@dataValidita, CAST(GETDATE() AS DATE)) BETWEEN\n" +
" vvw_contratti_vendita.data_iniz AND vvw_contratti_vendita.data_fine)\n" +
"-- AND vvw_contratti_vendita.qta_residua >= 0\n" +
" )\n" +
"\n" +
" SELECT tmp_lisv.cod_mart,\n" +
" ISNULL(maa.cod_mart_anag, tmp_lisv.cod_mart) AS cod_mart_anag,\n" +
" cod_vlis,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" da,\n" +
" a,\n" +
" prz_vend,\n" +
" prz_vend_netto,\n" +
" perc_sco1,\n" +
" perc_sco2,\n" +
" perc_sco3,\n" +
" perc_sco4,\n" +
" perc_prov,\n" +
" qta_residua,\n" +
" id_contratto,\n" +
" rap_conv,\n" +
" ISNULL(maa.note, tmp_lisv.note) AS note,\n" +
" cod_tcol_ul,\n" +
" unt_mis_ven,\n" +
" CASE\n" +
" WHEN maa.colli_pedana IS NULL OR maa.colli_pedana = 0 THEN tmp_lisv.colli_pedana\n" +
" ELSE maa.colli_pedana END AS colli_pedana,\n" +
" tipo_variazione,\n" +
" tipo_promo,\n" +
" cod_paga,\n" +
" descr_paga,\n" +
" porto,\n" +
" qta_cnf,\n" +
" CAST(CASE WHEN tmp_lisv.data_iniz IS NULL THEN 0 ELSE 1 END AS BIT) AS art_lisv,\n" +
" cod_vdes,\n" +
" note_incoterms,\n" +
" data_rif_scad,\n" +
" note_carico,\n" +
" term_cons,\n" +
" cod_banc,\n" +
" descr_banc\n" +
" FROM tmp_lisv\n" +
" LEFT OUTER JOIN mtb_aart_anag maa\n" +
" ON tmp_lisv.cod_mart = maa.cod_mart AND maa.cod_anag = @codAnag)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,30 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251105171403 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("delete dtb_ordr\n" +
"from dtb_ordr \n" +
"where not exists (select *\n" +
"from dtb_ordt \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" +
"\n",
"alter table dtb_ordr add constraint fk_dtb_ordr_dtb_ordt foreign key (gestione, data_ord, num_ord) references dbo.dtb_ordt (gestione, data_ord, num_ord)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,33 @@
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_20251106104752 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
dropDefault("mtb_lisv", "flag_primario");
addDefault("mtb_lisv", "flag_primario", 1);
if (!isCustomer(IntegryCustomer.RossoGargano)) {
executeStatement(
"UPDATE mtb_lisv\n" +
"SET flag_primario = DEFAULT\n" +
"WHERE flag_primario = 0"
);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,261 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251106113104 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction(
"pvm_getassortimentoClientePedane",
"CREATE FUNCTION [dbo].[pvm_getassortimentoClientePedane](\n" +
" @codAnag VARCHAR(5), @codVlis VARCHAR(5), @codVdes VARCHAR(5), @dataValidita DATETIME, @viewPromo BIT,\n" +
" @pedane INT = 0\n" +
")\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN( /*\n" +
"\n" +
" declare @codAnag VARCHAR(5), @codVlis VARCHAR(5), @dataValidita DATETIME, @viewPromo BIT\n" +
" set @codAnag = 'C3355'\n" +
" set @codVlis = 'C3355'\n" +
" set @dataValidita = '2023/04/04'\n" +
" set @viewPromo = 1;\n" +
" */\n" +
" WITH assortimento AS (SELECT vtb_griglia_art.cod_mart\n" +
" FROM vtb_clie\n" +
" INNER JOIN vtb_griglia ON vtb_clie.cod_griglia = vtb_griglia.cod_griglia\n" +
" INNER JOIN vtb_griglia_art\n" +
" ON vtb_griglia.cod_griglia = vtb_griglia_art.cod_griglia AND\n" +
" vtb_griglia.data_validita = vtb_griglia_art.data_validita\n" +
" WHERE vtb_clie.cod_anag = @codAnag\n" +
" AND vtb_griglia.data_validita = (SELECT MAX(g.data_validita)\n" +
" FROM vtb_griglia g\n" +
" WHERE g.cod_griglia = vtb_clie.cod_griglia\n" +
" AND g.data_validita <= ISNULL(@dataValidita, CAST(GETDATE() AS DATE)))),\n" +
" lisv AS (SELECT cod_vlis, cod_vlis AS cod_vlis_rif\n" +
" FROM vtb_list\n" +
" WHERE cod_vlis_rif IS NULL\n" +
" UNION ALL\n" +
" SELECT cod_vlis, cod_vlis_rif\n" +
" FROM vtb_list\n" +
" WHERE cod_vlis_rif IS NOT NULL),\n" +
" listino AS (SELECT DISTINCT cod_mart, tipo_variazione\n" +
" FROM (SELECT lisv.cod_vlis,\n" +
" mtb_lisv.cod_mart,\n" +
" LAST_VALUE(CASE\n" +
" WHEN vtb_list_data.data_iniz IS NULL THEN NULL\n" +
" ELSE mtb_lisv_data.tipo_variazione END)\n" +
" OVER (PARTITION BY lisv.cod_vlis, mtb_lisv.cod_mart\n" +
" ORDER BY vtb_list_data.data_iniz, CASE WHEN vtb_list_data.cod_promo IS NULL THEN 0 ELSE 1 END, vtb_list_data.versione\n" +
" RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS tipo_variazione\n" +
" FROM lisv\n" +
" INNER JOIN mtb_lisv ON lisv.cod_vlis_rif = mtb_lisv.cod_vlis\n" +
" INNER JOIN mtb_lisv_data ON mtb_lisv.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" mtb_lisv.cod_mart = mtb_lisv_data.cod_mart\n" +
" LEFT OUTER JOIN vtb_list_data\n" +
" ON mtb_lisv_data.cod_vlis = vtb_list_data.cod_vlis AND\n" +
" mtb_lisv_data.versione = vtb_list_data.versione AND\n" +
" vtb_list_data.data_iniz <=\n" +
" ISNULL(@dataValidita, CAST(GETDATE() AS DATE))\n" +
" WHERE lisv.cod_vlis = @codVlis\n" +
" AND NOT EXISTS(SELECT cod_mart FROM assortimento)) t\n" +
" WHERE (t.tipo_variazione IS NULL OR t.tipo_variazione <> 'D')),\n" +
" tmp_lisv AS (SELECT l.cod_mart,\n" +
" l.cod_vlis,\n" +
" ISNULL(p.data_iniz, l.data_iniz) AS data_iniz,\n" +
" p.data_fine,\n" +
" l.da,\n" +
" l.a,\n" +
" ISNULL(p.prz_vend, l.prz_vend_trasp) AS prz_vend,\n" +
" ISNULL(p.prz_vend_netto, l.prz_vend_trasp_netto) AS prz_vend_netto,\n" +
" ISNULL(p.perc_sco1, l.perc_sco1) AS perc_sco1,\n" +
" ISNULL(p.perc_sco2, l.perc_sco2) AS perc_sco2,\n" +
" ISNULL(p.perc_sco3, l.perc_sco3) AS perc_sco3,\n" +
" ISNULL(p.perc_sco4, l.perc_sco4) AS perc_sco4,\n" +
" p.perc_prov,\n" +
" CONVERT(NUMERIC(20, 5), 0) AS qta_residua,\n" +
" CONVERT(BIGINT, NULL) AS id_contratto,\n" +
" ISNULL(p.rap_conv, l.rap_conv) AS rap_conv,\n" +
" ISNULL(p.note, l.note) AS note,\n" +
" CAST(NULL AS VARCHAR(5)) AS cod_vdes,\n" +
" l.cod_tcol_ul AS cod_tcol_ul,\n" +
" ISNULL(p.unt_mis_ven, l.unt_mis_ven) AS unt_mis_ven,\n" +
" l.colli_pedana AS colli_pedana,\n" +
" ISNULL(p.tipo_variazione, l.tipo_variazione) AS tipo_variazione,\n" +
" CONVERT(VARCHAR(1), CASE\n" +
" WHEN p.cod_promo IS NULL THEN NULL\n" +
" ELSE 'P' END) AS tipo_promo,\n" +
" CONVERT(VARCHAR(5), NULL) AS cod_paga,\n" +
" CONVERT(VARCHAR(5), NULL) AS descr_paga,\n" +
" l.porto,\n" +
" l.qta_cnf,\n" +
" NULL AS note_incoterms,\n" +
" NULL AS data_rif_scad,\n" +
" NULL AS note_carico,\n" +
" NULL AS term_cons,\n" +
" NULL AS cod_banc,\n" +
" NULL AS descr_banc,\n" +
" l.flag_primario\n" +
" FROM dbo.getListinoVenditaPedane(@dataValidita, @codVlis, NULL, @pedane) l\n" +
" LEFT OUTER JOIN dbo.getPromozioneVendita(@dataValidita, @dataValidita,\n" +
" @codVlis, NULL, NULL) p\n" +
" ON l.cod_vlis = p.cod_vlis AND l.cod_mart = p.cod_mart AND\n" +
" ISNULL(@viewPromo, 0) = 1\n" +
" WHERE l.cod_vlis = @codVlis\n" +
" AND l.cod_mart IN (SELECT cod_mart\n" +
" FROM assortimento\n" +
" UNION ALL\n" +
" SELECT cod_mart\n" +
" FROM listino)\n" +
" AND l.tipo_variazione <> 'D'\n" +
" AND l.tipo_variazione IS NOT NULL\n" +
" AND l.flag_attivo = 'S'\n" +
" UNION ALL\n" +
" SELECT l.cod_mart,\n" +
" l.cod_vlis,\n" +
" NULL AS data_iniz,\n" +
" NULL AS data_fine,\n" +
" NULL AS da,\n" +
" NULL AS a,\n" +
" NULL AS prz_vend,\n" +
" NULL AS prz_vend_netto,\n" +
" NULL AS perc_sco1,\n" +
" NULL AS perc_sco2,\n" +
" NULL AS perc_sco3,\n" +
" NULL AS perc_sco4,\n" +
" NULL AS perc_prov,\n" +
" NULL AS qta_residua,\n" +
" NULL AS id_contratto,\n" +
" um.rap_conv AS rap_conv,\n" +
" NULL AS note,\n" +
" CAST(NULL AS VARCHAR(5)) AS cod_vdes,\n" +
" NULL AS cod_tcol_ul,\n" +
" l.unt_mis_ven AS unt_mis_ven,\n" +
" NULL AS colli_pedana,\n" +
" NULL AS tipo_variazione,\n" +
" NULL AS tipo_promo,\n" +
" CONVERT(VARCHAR(5), NULL) AS cod_paga,\n" +
" CONVERT(VARCHAR(5), NULL) AS descr_paga,\n" +
" NULL porto,\n" +
" mtb_aart.qta_cnf,\n" +
" NULL AS note_incoterms,\n" +
" NULL AS data_rif_scad,\n" +
" NULL AS note_carico,\n" +
" NULL AS term_cons,\n" +
" NULL AS cod_banc,\n" +
" NULL AS descr_banc,\n" +
" 1 AS flag_primario\n" +
" FROM mtb_lisv l\n" +
" INNER JOIN listino ON l.cod_mart = listino.cod_mart\n" +
" INNER JOIN mtb_aart ON l.cod_mart = mtb_aart.cod_mart\n" +
" CROSS APPLY dbo.getUntMisArticolo(l.cod_mart, l.unt_mis_ven) um\n" +
" WHERE l.cod_vlis = @codVlis\n" +
" AND listino.tipo_variazione IS NULL\n" +
" UNION ALL\n" +
" SELECT vvw_contratti_vendita.cod_mart,\n" +
" NULL AS cod_vlis,\n" +
" vvw_contratti_vendita.data_iniz,\n" +
" vvw_contratti_vendita.data_fine,\n" +
" NULL AS da,\n" +
" NULL AS a,\n" +
" vvw_contratti_vendita.prz_vend,\n" +
" ROUND(vvw_contratti_vendita.prz_vend *\n" +
" (1 - ISNULL(vvw_contratti_vendita.perc_sco1, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco2, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco3, 0))\n" +
" * (1 - ISNULL(vvw_contratti_vendita.perc_sco4, 0)),\n" +
" 5) AS prz_vend_netto,\n" +
" vvw_contratti_vendita.perc_sco1,\n" +
" vvw_contratti_vendita.perc_sco2,\n" +
" vvw_contratti_vendita.perc_sco3,\n" +
" vvw_contratti_vendita.perc_sco4,\n" +
" vvw_contratti_vendita.perc_prov,\n" +
" vvw_contratti_vendita.qta_residua,\n" +
" vvw_contratti_vendita.id_contratto,\n" +
" vvw_contratti_vendita.rap_conv,\n" +
" vvw_contratti_vendita.note,\n" +
" vvw_contratti_vendita.cod_vdes,\n" +
" NULL,\n" +
" vvw_contratti_vendita.unt_mis_ven,\n" +
" NULL,\n" +
" NULL,\n" +
" 'C' AS tipo_promo,\n" +
" vvw_contratti_vendita.cod_paga,\n" +
" vvw_contratti_vendita.descrizione_paga AS descr_paga,\n" +
" vvw_contratti_vendita.incoterms AS porto,\n" +
" mtb_aart.qta_cnf,\n" +
" vvw_contratti_vendita.note_incoterms,\n" +
" vvw_contratti_vendita.data_rif_scad,\n" +
" vvw_contratti_vendita.note_carico,\n" +
" vvw_contratti_vendita.term_cons,\n" +
" vvw_contratti_vendita.cod_banc,\n" +
" vvw_contratti_vendita.descr_banc,\n" +
" 1 AS flag_primario\n" +
" FROM vvw_contratti_vendita\n" +
" INNER JOIN mtb_aart ON vvw_contratti_vendita.cod_mart = mtb_aart.cod_mart\n" +
" WHERE vvw_contratti_vendita.cod_anag = @codAnag\n" +
" AND (@codVdes IS NULL OR vvw_contratti_vendita.cod_vdes IS NULL OR\n" +
" vvw_contratti_vendita.cod_vdes = @codVdes)\n" +
" AND (ISNULL(@dataValidita, CAST(GETDATE() AS DATE)) BETWEEN\n" +
" vvw_contratti_vendita.data_iniz AND vvw_contratti_vendita.data_fine)\n" +
"-- AND vvw_contratti_vendita.qta_residua >= 0\n" +
" )\n" +
"\n" +
" SELECT tmp_lisv.cod_mart,\n" +
" ISNULL(maa.cod_mart_anag, tmp_lisv.cod_mart) AS cod_mart_anag,\n" +
" cod_vlis,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" da,\n" +
" a,\n" +
" prz_vend,\n" +
" prz_vend_netto,\n" +
" perc_sco1,\n" +
" perc_sco2,\n" +
" perc_sco3,\n" +
" perc_sco4,\n" +
" perc_prov,\n" +
" qta_residua,\n" +
" id_contratto,\n" +
" rap_conv,\n" +
" ISNULL(maa.note, tmp_lisv.note) AS note,\n" +
" cod_tcol_ul,\n" +
" unt_mis_ven,\n" +
" CASE\n" +
" WHEN maa.colli_pedana IS NULL OR maa.colli_pedana = 0 THEN tmp_lisv.colli_pedana\n" +
" ELSE maa.colli_pedana END AS colli_pedana,\n" +
" tipo_variazione,\n" +
" tipo_promo,\n" +
" cod_paga,\n" +
" descr_paga,\n" +
" porto,\n" +
" qta_cnf,\n" +
" CAST(CASE WHEN tmp_lisv.data_iniz IS NULL THEN 0 ELSE 1 END AS BIT) AS art_lisv,\n" +
" cod_vdes,\n" +
" note_incoterms,\n" +
" data_rif_scad,\n" +
" note_carico,\n" +
" term_cons,\n" +
" cod_banc,\n" +
" descr_banc,\n" +
" flag_primario\n" +
" FROM tmp_lisv\n" +
" LEFT OUTER JOIN mtb_aart_anag maa\n" +
" ON tmp_lisv.cod_mart = maa.cod_mart AND maa.cod_anag = @codAnag)"
);
}
@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_20251107132252 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("PICKING", "ACCETTAZIONE", "FLAG_VIEW_LOTTO", "N",
"In inserimento articolo propone il lotto presente nella riga dell'ordine", 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,27 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251107150055 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("update ctb_rit_acc set num_cmov_fat = null\n" +
"where num_cmov_fat is not null and num_cmov_fat not in (select num_cmov from ctb_movt )\n",
"update ctb_rit_acc set num_cmov_paga = null\n" +
"where num_cmov_paga is not null and num_cmov_paga not in (select num_cmov from ctb_movt )\n" ,
"update ctb_beni set num_cmov_acq = null\n" +
"where num_cmov_acq is not null and num_cmov_acq not in (select num_cmov from ctb_movt )\n",
"alter table ctb_rit_acc add constraint fk_ctb_rit_acc_ctb_movt_fat foreign key ( num_cmov_fat ) references ctb_movt ( num_cmov )\n" ,
"alter table ctb_rit_acc add constraint fk_ctb_rit_acc_ctb_movt_paga foreign key ( num_cmov_paga ) references ctb_movt ( num_cmov )\n" ,
"alter table ctb_beni add constraint fk_ctb_beni_ctb_movt foreign key ( num_cmov_acq ) references ctb_movt ( num_cmov )\n" );
}
@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_20251110095557 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM","MRP", "COD_MDEP_PREF", null, "Inserire la lista dei depositi preselezionati per utente",
"COD_MDEP", true, true);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,42 @@
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.utility.UtilityQuery;
import java.util.List;
public class Migration_20251110100959 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Carelli_Winact))
return;
final List<String> duplicatedBarcodes = executeQueryOnlyFirstColumn("SELECT cod_barre\n" +
"FROM mtb_aart_bar_code\n" +
"GROUP BY cod_barre\n" +
"HAVING COUNT(cod_barre) > 1");
executeStatement("DELETE FROM dbo.mtb_aart_bar_code\n" +
"WHERE cod_barre IN (" + UtilityQuery.concatStringFieldsWithSeparator(duplicatedBarcodes, ",") + ")");
executeStatement("ALTER TABLE dbo.mtb_aart_bar_code\n" +
" ALTER COLUMN cod_mart VARCHAR(15) NOT NULL",
"ALTER TABLE dbo.mtb_aart_bar_code\n" +
" ALTER COLUMN cod_barre VARCHAR(40) NOT NULL",
"ALTER TABLE dbo.mtb_aart_bar_code\n" +
" ADD CONSTRAINT pk_mtb_aart_bar_code\n" +
" PRIMARY KEY (cod_mart, cod_barre)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251110104131 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"ALTER TABLE dbo.vtb_viaggi\n" +
" ALTER COLUMN note_incoterms VARCHAR(40) NULL;"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,30 @@
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_20251110111625 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createSetupQuery(null, null, "SELECT '1|Prezzo netto d''acquisto e ricalcola il prezzo di vendita (Ricarica fissa)' UNION SELECT '2|Prezzo netto d''acquisto e ricalcola ricarica (Prezzo di vendita fisso)' UNION SELECT '3|Prezzo netto d''acquisto e prezzo di vendita da prezzo lordo d''acquisto (Ricalcola ricarica)' UNION SELECT '4|Prezzo netto d''acquisto e ricalcola il prezzo di vendita (Ricarica fissa da Testata listino)' UNION SELECT '5|Prezzo netto d''acquisto, prezzo di vendita e ricarica fissa (Non ricalcolare prezzo)' UNION SELECT '6|Prezzo netto d''acquisto, prezzo di vendita = Prezzo Vendita Suggerito' UNION SELECT '7|Non ricalcolare il prezzo' ");
createSetup("VTB_LIST", "LISV4LISA", "CALC_PRZ_BASE", null,
"SELEZIONARE IL CRITERIO DI CALCOLO DEL PREZZO BASE", false, null, false, false,
false, false, false, null, false, "SELECT '1|Prezzo netto d''acquisto e ricalcola il prezzo di vendita (Ricarica fissa)' UNION SELECT '2|Prezzo netto d''acquisto e ricalcola ricarica (Prezzo di vendita fisso)' UNION SELECT '3|Prezzo netto d''acquisto e prezzo di vendita da prezzo lordo d''acquisto (Ricalcola ricarica)' UNION SELECT '4|Prezzo netto d''acquisto e ricalcola il prezzo di vendita (Ricarica fissa da Testata listino)' UNION SELECT '5|Prezzo netto d''acquisto, prezzo di vendita e ricarica fissa (Non ricalcolare prezzo)' UNION SELECT '6|Prezzo netto d''acquisto, prezzo di vendita = Prezzo Vendita Suggerito' UNION SELECT '7|Non ricalcolare il prezzo' ");
if (isCustomer(IntegryCustomer.Carelli))
updateSetupValue("VTB_LIST", "LISV4LISA", "CALC_PRZ_BASE","1");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,284 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251110175256 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table vtb_list add tipo_um tinyint");
createOrUpdateFunction("getListinoVendita","CREATE FUNCTION [dbo].[getListinoVendita](@datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15))\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" SELECT vtb_list.cod_vlis,\n" +
" vtb_list.descrizione,\n" +
" CASE\n" +
" WHEN tmp_list.max_lisv IS NULL THEN NULL\n" +
" ELSE CONVERT(DATETIME, LEFT(tmp_list.max_lisv, 10)) END AS data_iniz,\n" +
" CASE\n" +
" WHEN tmp_list.max_lisv IS NULL THEN NULL\n" +
" ELSE CONVERT(INT, RIGHT(tmp_list.max_lisv, 4)) END AS versione,\n" +
" vtb_list.cod_divi,\n" +
" vtb_list.cambio,\n" +
" vtb_list.flag_arr_prz_iva,\n" +
" vtb_list.arr_ric,\n" +
" vtb_list.flag_list_iva_inclusa,\n" +
" vtb_list.flag_lisv_margine,\n" +
" vtb_list.flag_add_trasp,\n" +
" tmp_list.cod_mart AS 'cod_mart',\n" +
" mtb_lisv_data.unt_mis_ven AS unt_mis_ven,\n" +
" ISNULL(mtb_lisv_data.rap_conv, 1) AS rap_conv,\n" +
" ISNULL(mtb_lisv_data.prz_base, 0) AS prz_base,\n" +
" ISNULL(mtb_lisv_data.ricarica, 0) AS ricarico,\n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
" ELSE 0 END AS margine_eff,\n" +
" --dbo.f_calcMargineEffettivo(IsNull(mtb_lisv_data.prz_base, 0), IsNull(mtb_lisv_data.prz_vend, 0), mtb_aart.perc_sfrido) as margine_eff,\n" +
" --dbo.f_calcRicaricoEffettivo(IsNull(mtb_lisv_data.prz_base, 0), IsNull(mtb_lisv_data.prz_vend, 0), mtb_aart.perc_sfrido) ricarico_eff, \n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
" ELSE 0 END AS ricarico_eff,\n" +
"\n" +
" ISNULL(mtb_lisv_data.magg_prz_vend, 0) AS magg_prz_vend,\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) AS prz_vend,\n" +
" ISNULL(mtb_lisv_data.prz_vend_iva, 0) AS prz_vend_iva,\n" +
" ISNULL(mtb_lisv_data.perc_sco1, 0) AS perc_sco1,\n" +
" ISNULL(mtb_lisv_data.perc_sco2, 0) AS perc_sco2,\n" +
" ISNULL(mtb_lisv_data.perc_sco3, 0) AS perc_sco3,\n" +
" ISNULL(mtb_lisv_data.perc_sco4, 0) AS perc_sco4,\n" +
" ISNULL(mtb_lisv_data.perc_prov, 0) AS perc_prov,\n" +
" ISNULL(mtb_lisv_data.fisso_prov, 0) AS fisso_prov,\n" +
" ISNULL(mtb_lisv_data.posizione, '') AS posizione,\n" +
" ISNULL(mtb_lisv_data.perc_gest, 0) AS perc_gest,\n" +
" ISNULL(mtb_lisv_data.val_gest, 0) AS val_gest,\n" +
" mtb_lisv_data.data_agg_prz AS data_agg_prz,\n" +
" ISNULL(mtb_lisv_data.perc_ispe, 0) AS perc_ispe,\n" +
" ISNULL(mtb_lisv_data.val_ispe, 0) AS val_ispe,\n" +
" ISNULL(mtb_lisv_data.perc_promo, 0) AS perc_promo,\n" +
" ISNULL(mtb_lisv_data.val_promo, 0) AS val_promo,\n" +
" ISNULL(mtb_lisv_data.perc_oneri, 0) AS perc_oneri,\n" +
" ISNULL(mtb_lisv_data.val_oneri, 0) AS val_oneri,\n" +
" mtb_lisv_data.tipo_variazione AS tipo_variazione,\n" +
" mtb_lisv_data.note AS note,\n" +
" mtb_lisv_data.aggiornato_da AS aggiornato_da,\n" +
" mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1 / 100) * (1 - mtb_lisv_data.perc_sco2 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco3 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco4 / 100) AS prz_vend_netto,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.colli_pedana, 0) <> 0 THEN mtb_lisv_data.colli_pedana\n" +
" ELSE mtb_aart.colli_pedana END AS colli_pedana,\n" +
" mtb_lisv_data.cod_tcol_ul AS cod_tcol_ul,\n" +
" mtb_lisv_data.cod_tcol_ui AS cod_tcol_ui,\n" +
" ISNULL(mtb_lisv_data.prz_vend_sug, 0) AS prz_vend_sug,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.qta_cnf, 0) <> 0\n" +
" AND dbo.getGestSetup('VTB_LIST', 'SETUP', 'QTA_CNF_LISTINO') = 'S' \n" +
" THEN mtb_lisv_data.qta_cnf\n" +
" ELSE mtb_aart.qta_cnf / ISNULL(mtb_lisv_data.rap_conv, 1) END AS qta_cnf,\n" +
" CASE\n" +
" WHEN ISNULL(mtb_lisv_data.colli_strato, 0) <> 0 THEN mtb_lisv_data.colli_strato\n" +
" ELSE mtb_aart.colli_strato END AS colli_strato,\n" +
" mtb_lisv_data.descrizione_html AS descrizione_html,\n" +
" mtb_lisv_data.colli_pedana AS colli_pedana_lisv,\n" +
" mtb_lisv_data.qta_cnf AS qta_cnf_lisv,\n" +
" mtb_lisv_data.colli_strato AS colli_strato_lisv,\n" +
" mtb_lisv_data.sconto_cartoni,\n" +
" mtb_lisv_data.sconto_strato,\n" +
" mtb_lisv_data.sconto_pedane,\n" +
" vtb_list.flag_attivo,\n" +
" vtb_list_data.note AS note_testata,\n" +
" ISNULL(mtb_lisv_data.flag_prz_bloccato, 'N') AS flag_prz_bloccato,\n" +
" vtb_list_data.porto AS porto,\n" +
" mtb_lisv_data.system_note,\n" +
" mtb_lisv.add_val_spese,\n" +
" mtb_lisv.add_ric_spese,\n" +
" mtb_lisv.add_sco_spese,\n" +
"\t\t\t mtb_aart.flag_incl_listino,\n" +
"\t\t\t mtb_lisv.flag_primario,\n" +
"\t\t\t mtb_aart.id_art_equi,\n" +
"\t\t\t vtb_list.tipo_um\n" +
" FROM (SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
" mtb_lisv_data.cod_mart,\n" +
" MAX(CASE\n" +
" WHEN vtb_list_data.versione IS NULL THEN NULL\n" +
" ELSE CONVERT(VARCHAR(10), vtb_list_data.data_iniz, 111) + ' ' +\n" +
" REPLICATE('0', 5 - LEN(vtb_list_data.versione)) +\n" +
" CONVERT(VARCHAR(5), vtb_list_data.versione) END) AS max_lisv,\n" +
" vtb_list.cod_vlis AS 'cod_vlis_rif'\n" +
" FROM vtb_list\n" +
" INNER JOIN mtb_lisv_data ON vtb_list.cod_vlis = mtb_lisv_data.cod_vlis\n" +
" LEFT OUTER JOIN vtb_list_data ON mtb_lisv_data.cod_vlis = vtb_list_data.cod_vlis AND\n" +
" mtb_lisv_data.versione = vtb_list_data.versione AND\n" +
" vtb_list_data.cod_promo IS NULL AND\n" +
" vtb_list_data.data_iniz <= ISNULL(@datavalidita, GETDATE())\n" +
" WHERE vtb_list.cod_vlis_rif IS NULL\n" +
" GROUP BY vtb_list.cod_vlis,\n" +
" mtb_lisv_data.cod_mart\n" +
" UNION\n" +
" SELECT vtb_list.cod_vlis AS cod_vlis,\n" +
" mtb_lisv_data.cod_mart,\n" +
" MAX(CASE\n" +
" WHEN vtb_list_data.versione IS NULL THEN NULL\n" +
" ELSE CONVERT(VARCHAR(10), vtb_list_data.data_iniz, 111) + ' ' +\n" +
" REPLICATE('0', 5 - LEN(vtb_list_data.versione_rif)) +\n" +
" CONVERT(VARCHAR(5), vtb_list_data.versione_rif) END) AS max_lisv,\n" +
" vtb_list.cod_vlis_rif AS 'cod_vlis_rif'\n" +
" FROM vtb_list\n" +
" INNER JOIN vtb_list_data ON vtb_list.cod_vlis = vtb_list_data.cod_vlis\n" +
" INNER JOIN vtb_list_data vtb_list_data_rif\n" +
" ON vtb_list_data.versione_rif = vtb_list_data_rif.versione AND\n" +
" vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis\n" +
" INNER JOIN mtb_lisv_data ON vtb_list_data_rif.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" vtb_list_data_rif.versione = mtb_lisv_data.versione\n" +
"\n" +
" WHERE vtb_list_data.data_iniz <= ISNULL(@datavalidita, GETDATE())\n" +
" AND vtb_list.cod_vlis_rif IS NOT NULL\n" +
" GROUP BY vtb_list.cod_vlis,\n" +
" mtb_lisv_data.cod_mart,\n" +
" vtb_list.cod_vlis_rif) tmp_list\n" +
" INNER JOIN vtb_list ON vtb_list.cod_vlis = tmp_list.cod_vlis\n" +
" INNER JOIN mtb_lisv\n" +
" ON tmp_list.cod_vlis_rif = mtb_lisv.cod_vlis AND tmp_list.cod_mart = mtb_lisv.cod_mart\n" +
" INNER JOIN mtb_aart ON tmp_list.cod_mart = mtb_aart.cod_mart\n" +
" LEFT OUTER JOIN mtb_lisv_data ON tmp_list.cod_vlis_rif = mtb_lisv_data.cod_vlis AND\n" +
" tmp_list.cod_mart = mtb_lisv_data.cod_mart AND\n" +
" CONVERT(INT, RIGHT(tmp_list.max_lisv, 5)) = mtb_lisv_data.versione\n" +
" LEFT OUTER JOIN vtb_list_data ON tmp_list.cod_vlis = vtb_list_data.cod_vlis AND\n" +
" CONVERT(INT, RIGHT(tmp_list.max_lisv, 5)) = vtb_list_data.versione\n" +
"\n" +
" WHERE (@codmart IS NULL OR tmp_list.cod_mart = @codmart)\n" +
" AND (@codvlis IS NULL OR tmp_list.cod_vlis = @codvlis)\n");
createOrUpdateFunction("getListinoVenditaPedane","CREATE FUNCTION [dbo].[getListinoVenditaPedane](@datavalidita DATETIME, @codvlis VARCHAR(5), @codmart VARCHAR(15), @pedane INT)\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" WITH trasp AS (SELECT mtb_lisv_data_spese.cod_vlis,\n" +
" mtb_lisv_data_spese.versione,\n" +
" mtb_lisv_data_spese.cod_spes,\n" +
" mtb_lisv_data_spese.perc_ricarico,\n" +
" mtb_lisv_data_spese.val_ricarico,\n" +
" mtb_lisv_data_spese.perc_sconto,\n" +
" mtb_lisv_data_spese.da,\n" +
" mtb_lisv_data_spese.a\n" +
" FROM vtb_list_data\n" +
" --riga Sotto Aggiunta da Massimo 08/01/25 per non fare uscire i range pedane quando il prezzo non deve essere addizionato del costo dei trasporti\n" +
" --inner join vtb_list on vtb_list_data.cod_vlis = vtb_list.cod_vlis and vtb_list.flag_add_trasp = 1\n" +
" INNER JOIN mtb_lisv_data_spese\n" +
" ON vtb_list_data.cod_vlis = mtb_lisv_data_spese.cod_vlis AND\n" +
" vtb_list_data.versione = mtb_lisv_data_spese.versione\n" +
" CROSS APPLY (SELECT MAX(id_listino) AS max_id_listino\n" +
" FROM vtb_list_data t\n" +
" WHERE t.data_iniz <= ISNULL(@datavalidita, CAST(GETDATE() AS DATE))\n" +
" AND vtb_list_data.cod_vlis = t.cod_vlis) max_lisv\n" +
" WHERE vtb_list_data.id_listino = max_lisv.max_id_listino)\n" +
"\n" +
" SELECT list.cod_vlis,\n" +
" list.descrizione,\n" +
" list.data_iniz,\n" +
" list.versione,\n" +
" list.cod_divi,\n" +
" list.cambio,\n" +
" list.flag_arr_prz_iva,\n" +
" list.arr_ric,\n" +
" list.flag_list_iva_inclusa,\n" +
" list.flag_lisv_margine,\n" +
" list.flag_add_trasp,\n" +
" list.cod_mart,\n" +
" list.unt_mis_ven,\n" +
" list.rap_conv,\n" +
" list.prz_base,\n" +
" list.ricarico,\n" +
" list.margine_eff,\n" +
" list.ricarico_eff,\n" +
" list.magg_prz_vend,\n" +
" list.prz_vend,\n" +
" list.prz_vend_iva,\n" +
" list.perc_sco1,\n" +
" list.perc_sco2,\n" +
" list.perc_sco3,\n" +
" list.perc_sco4,\n" +
" list.perc_prov,\n" +
" list.fisso_prov,\n" +
" list.posizione,\n" +
" list.perc_gest,\n" +
" list.val_gest,\n" +
" list.data_agg_prz,\n" +
" list.perc_ispe,\n" +
" list.val_ispe,\n" +
" list.perc_promo,\n" +
" list.val_promo,\n" +
" list.perc_oneri,\n" +
" list.val_oneri,\n" +
" list.tipo_variazione,\n" +
" list.note,\n" +
" list.aggiornato_da,\n" +
" list.prz_vend_netto,\n" +
" list.colli_pedana,\n" +
" list.cod_tcol_ul,\n" +
" list.cod_tcol_ui,\n" +
" list.prz_vend_sug,\n" +
" list.qta_cnf,\n" +
" list.colli_strato,\n" +
" list.descrizione_html,\n" +
" list.colli_pedana_lisv,\n" +
" list.qta_cnf_lisv,\n" +
" list.colli_strato_lisv,\n" +
" list.sconto_cartoni,\n" +
" list.sconto_strato,\n" +
" list.sconto_pedane,\n" +
" list.flag_attivo,\n" +
" list.note_testata,\n" +
" list.flag_prz_bloccato,\n" +
" list.porto,\n" +
" list.system_note,\n" +
" list.add_val_spese,\n" +
" list.add_ric_spese,\n" +
" list.add_sco_spese,\n" +
" list.flag_incl_listino,\n" +
" list.flag_primario,\n" +
" list.id_art_equi,\n" +
" trasp.cod_spes,\n" +
" trasp.perc_ricarico,\n" +
" trasp.val_ricarico,\n" +
" trasp.perc_sconto,\n" +
" trasp.da,\n" +
" trasp.a,\n" +
" (list.prz_vend +\n" +
" IIF(list.flag_add_trasp = 1, --Questa condizione si potrebbe togliere per la modifica fatta l'8/01/25\n" +
" ((ISNULL(val_ricarico, 0)) * list.add_val_spese) /\n" +
" IIF(ISNULL(list.colli_pedana, 1) = 0, 1, list.colli_pedana), 0)) +\n" +
" ((ISNULL(perc_ricarico, 0) * list.add_ric_spese * list.prz_vend) / 100) *\n" +
" (1 - (ISNULL(perc_sconto, 0) * list.add_sco_spese) / 100) prz_vend_trasp,\n" +
" ((list.prz_vend +\n" +
" IIF(list.flag_add_trasp = 1, --Questa condizione si potrebbe togliere per la modifica fatta l'8/01/25\n" +
" ((ISNULL(val_ricarico, 0)) * list.add_val_spese) /\n" +
" IIF(ISNULL(list.colli_pedana, 1) = 0, 1, list.colli_pedana), 0)) +\n" +
" ((ISNULL(perc_ricarico, 0) * list.add_ric_spese * list.prz_vend) / 100) *\n" +
" (1 - (ISNULL(perc_sconto, 0) * list.add_sco_spese) / 100)) * (1 - list.perc_sco1 / 100) *\n" +
" (1 - list.perc_sco2 / 100) *\n" +
" (1 - list.perc_sco3 / 100) *\n" +
" (1 - list.perc_sco4 / 100) AS prz_vend_trasp_netto,\n" +
"\t\t\t list.tipo_um\n" +
" FROM getlistinovendita(@datavalidita, @codvlis, @codmart) list\n" +
" LEFT OUTER JOIN trasp ON list.cod_vlis = trasp.cod_vlis AND\n" +
" (@pedane IS NULL OR @pedane BETWEEN da AND a OR\n" +
" (@pedane IS NOT NULL AND da = 0 AND a = 0))");
}
@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;
import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Migration_20251110184508 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String sql = "SELECT DISTINCT wgsu.gest_name, wgsu.section, wgsu.key_section, 'S' AS flag_setup_user_web\n" +
"FROM wtb_gest_setup_user wgsu\n" +
"WHERE NOT EXISTS(SELECT sgs.gest_name, sgs.section, sgs.key_section\n" +
" FROM stb_gest_setup sgs\n" +
" WHERE wgsu.gest_name = sgs.gest_name\n" +
" AND wgsu.section = sgs.section\n" +
" AND wgsu.key_section = sgs.key_section)";
List<StbGestSetup> stbGestSetupsToCreate = UtilityDB.executeSimpleQueryDTO(connection, sql, StbGestSetup.class);
if (UtilityList.isNullOrEmpty(stbGestSetupsToCreate)) {
return;
}
for (StbGestSetup stbGestSetup : stbGestSetupsToCreate) {
stbGestSetup.setOperation(OperationType.INSERT);
stbGestSetup.manageWithParentConnection(connection);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,31 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251111110443 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Salpar)){
executeStatement("INSERT INTO stb_tipi_indirizzi\n" +
"VALUES ('PUNTO VENDITA', 'ABRW'),\n" +
" ('PUNTO VENDITA', 'ABTW'),\n" +
" ('PUNTO VENDITA', 'BAMW'),\n" +
" ('PUNTO VENDITA', 'BATW')");
executeStatement("UPDATE vtb_clie_pers_rif\n" +
"SET tipo_indirizzo = 'PUNTO VENDITA'\n" +
"WHERE tipo_indirizzo = 'UFFICIO ACQUISTI'");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,69 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251111120322 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction(
"pvm_getassortimentoCliente",
"CREATE FUNCTION [dbo].[pvm_getassortimentoCliente](\n" +
" @codAnag VARCHAR(5), @codVlis VARCHAR(5), @codVdes VARCHAR(5), @dataValidita DATETIME, @viewPromo BIT\n" +
")\n" +
" RETURNS TABLE AS\n" +
" RETURN(SELECT cod_mart,\n" +
" cod_mart_anag,\n" +
" cod_vlis,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" da,\n" +
" a,\n" +
" prz_vend,\n" +
" prz_vend_netto,\n" +
" perc_sco1,\n" +
" perc_sco2,\n" +
" perc_sco3,\n" +
" perc_sco4,\n" +
" perc_prov,\n" +
" qta_residua,\n" +
" id_contratto,\n" +
" rap_conv,\n" +
" note,\n" +
" cod_tcol_ul,\n" +
" unt_mis_ven,\n" +
" colli_pedana,\n" +
" tipo_variazione,\n" +
" tipo_promo,\n" +
" cod_paga,\n" +
" descr_paga,\n" +
" porto,\n" +
" qta_cnf,\n" +
" art_lisv,\n" +
" cod_vdes,\n" +
" note_incoterms,\n" +
" data_rif_scad,\n" +
" note_carico,\n" +
" term_cons,\n" +
" cod_banc,\n" +
" descr_banc,\n" +
" flag_primario\n" +
" FROM [dbo].pvm_getassortimentoClientePedane(\n" +
" @codAnag, @codVlis, @codVdes, @dataValidita, @viewPromo,\n" +
" DEFAULT))"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,30 @@
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_20251111151102 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
createSetup("W_VEDI_DESADV_DLG", "SETUP", "VERSIONE_C2835", "20",
null, false, null, false, false,
false, false, false, null, false, null);
createSetup("W_VEDI_DESADV_DLG", "SETUP", "DTM_C2835", "137",
"Qualificatore data ora riferimento (Data documento), per default è impostato a 2", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,55 @@
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.JtbCiclCq;
import it.integry.ems_model.entity._enum.TipoValore;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityInteger;
import it.integry.ems_model.utility.UtilityList;
import java.util.List;
public class Migration_20251111170814 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
String sql = "select distinct jtb_cicl.cod_prod,MAX(jtb_cicl_cq.num_fase) as num_fase,max(jtb_cicl_cq.id_riga) as id_riga\n" +
"from jtb_dist_clav_dir dir\n" +
" inner join jtb_cicl on dir.cod_prod = jtb_cicl.cod_prod\n" +
" left outer join jtb_cicl_cq on jtb_cicl.cod_prod = jtb_cicl_cq.cod_prod\n" +
"where dir.cod_jfas like 'SC%'\n" +
" and jtb_cicl.flag_attiva = 'S'\n" +
"group by jtb_cicl.cod_prod";
List<JtbCiclCq> distinteDaAggiornare = UtilityDB.executeSimpleQueryDTO(connection, sql, JtbCiclCq.class);
if (UtilityList.isNullOrEmpty(distinteDaAggiornare))
return;
for (JtbCiclCq jtbCiclCq : distinteDaAggiornare) {
jtbCiclCq.setIdRiga(UtilityInteger.isNull(jtbCiclCq.getIdRiga(),0) + 1)
.setNumFase(UtilityInteger.isNull(jtbCiclCq.getNumFase(),0))
.setControllo("Check Etichetta Cartone")
.setTipoValore(TipoValore.BOOLEAN)
.setValoreRif("S")
.setNumRip(0)
.setTipologia("DETAILED_CQ")
.setOperation(OperationType.INSERT);
jtbCiclCq.manageWithParentConnection(connection);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,51 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251111171747 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("lisv_getTipoUm", "CREATE FUNCTION dbo.lisv_getTipoUm\n" +
"( \n" +
" @codMart varchar(15), @tipoUmLisv tinyint\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"(\n" +
" with um as (\n" +
"select cod_mart, unt_mis, rap_conv\n" +
"from dbo.getUntMisArticolo(@codMart, null ) um\n" +
"where @tipoUmLisv is not null\n" +
"and ( (@tipoUmLisv = 1 and um.tipo_um = 'UI' ) or \n" +
"(@tipoUmLisv = 2 and flag_unita_kg = 'S'))\n" +
")\n" +
"\n" +
"select mtb_aart.cod_mart, \n" +
"case \n" +
"when @tipoUmLisv IS null then mtb_aart.unt_mis\n" +
"when @tipoUmLisv = 1 and mtb_aart.qta_cnf not in (0, 1) then mtb_aart.unt_mis\n" +
"when @tipoUmLisv = 2 and mtb_aart.peso_kg not in (0, 1) then mtb_aart.unt_mis\n" +
" else ISNULL(um.unt_mis, mtb_aart.unt_mis) end as unt_mis_ven, \n" +
"case \n" +
"when @tipoUmLisv IS null then 1\n" +
"when @tipoUmLisv = 1 and mtb_aart.qta_cnf not in (0, 1) then 1\n" +
"when @tipoUmLisv = 2 and mtb_aart.peso_kg not in (0, 1) then 1\n" +
" else ISNULL(um.rap_conv, 1) end as rap_conv_vend\n" +
"from mtb_aart left outer join um on mtb_aart.cod_mart = um.cod_mart\n" +
"where (@codMart is null or mtb_aart.cod_mart = @codMart )\n" +
")");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251113102040 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("ALTER TABLE vtb_list_data ADD promo_chiusa bit DEFAULT 0 NOT NULL");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,211 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251113105159 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("exec sp_rename 'vtb_list_data.promo_chiusa', 'chiusura_immediata'");
createOrUpdateFunction("getPromozioneVendita", "CREATE FUNCTION [dbo].[getPromozioneVendita](@dataIniz DATETIME, @dataFine DATETIME, @codVlis VARCHAR(5),\n" +
" @codPromo VARCHAR(10), @codMart VARCHAR(15))\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" SELECT vtb_list.cod_vlis,\n" +
" vtb_list.descrizione,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.data_fine,\n" +
" vtb_list_data.cod_promo,\n" +
" vtb_list_data.versione,\n" +
" vtb_list.cod_divi,\n" +
" vtb_list.flag_arr_prz_iva,\n" +
" vtb_list.arr_ric,\n" +
" vtb_list.flag_list_iva_inclusa,\n" +
" vtb_list.flag_lisv_margine,\n" +
" mtb_lisv_data.cod_mart AS cod_mart,\n" +
" mtb_lisv_data.unt_mis_ven AS unt_mis_ven,\n" +
" mtb_lisv_data.rap_conv AS rap_conv,\n" +
" mtb_lisv_data.prz_base AS prz_base,\n" +
" mtb_lisv_data.ricarica AS ricarico,\n" +
" --dbo.f_calcMargineEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as margine_eff,\n" +
" --dbo.f_calcRicaricoEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as ricarico_eff, \n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
" ELSE 0 END AS margine_eff,\n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
" ELSE 0 END AS ricarico_eff,\n" +
" mtb_lisv_data.prz_vend AS prz_vend,\n" +
" mtb_lisv_data.prz_vend_iva AS prz_vend_iva,\n" +
" mtb_lisv_data.perc_sco1 AS perc_sco1,\n" +
" mtb_lisv_data.perc_sco2 AS perc_sco2,\n" +
" mtb_lisv_data.perc_sco3 AS perc_sco3,\n" +
" mtb_lisv_data.perc_sco4 AS perc_sco4,\n" +
" mtb_lisv_data.perc_prov AS perc_prov,\n" +
" mtb_lisv_data.fisso_prov AS fisso_prov,\n" +
" mtb_lisv_data.posizione AS posizione,\n" +
" mtb_lisv_data.perc_gest AS perc_gest,\n" +
" mtb_lisv_data.val_gest AS val_gest,\n" +
" mtb_lisv_data.data_agg_prz AS data_agg_prz,\n" +
" mtb_lisv_data.perc_ispe AS perc_ispe,\n" +
" mtb_lisv_data.val_ispe AS val_ispe,\n" +
" mtb_lisv_data.perc_promo AS perc_promo,\n" +
" mtb_lisv_data.val_promo AS val_promo,\n" +
" mtb_lisv_data.perc_oneri AS perc_oneri,\n" +
" mtb_lisv_data.val_oneri AS val_oneri,\n" +
" mtb_lisv_data.tipo_variazione AS tipo_variazione,\n" +
" mtb_lisv_data.note AS note,\n" +
" mtb_lisv_data.aggiornato_da AS aggiornato_da,\n" +
" mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1 / 100) * (1 - mtb_lisv_data.perc_sco2 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco3 / 100) * (1 - mtb_lisv_data.perc_sco4 / 100) AS prz_vend_netto,\n" +
" vtb_promo.descrizione AS 'descr_promo',\n" +
" vtb_promo.data_iniz_sell_out,\n" +
" vtb_promo.data_fine_sell_out,\n" +
" vtb_promo.flag_tipo_promo,\n" +
" mtb_lisv_data.sconto_cartoni,\n" +
" mtb_lisv_data.sconto_strato,\n" +
" mtb_lisv_data.sconto_pedane,\n" +
" mtb_lisv_data.giacenza,\n" +
" mtb_lisv_data.magg_prz_vend,\n" +
" vtb_promo.flag_sconto_contrattuale,\n" +
" vtb_promo.intercode_xml_variazioni,\n" +
" vtb_list_data.note AS note_testata,\n" +
" vtb_promo.flag_tipologia,\n" +
" vtb_promo.flag_volantino,\n" +
" mtb_lisv_data.inserito_da,\n" +
" vtb_list_data.chiusura_immediata\n" +
" FROM vtb_list\n" +
" INNER JOIN vtb_list_data ON vtb_list.cod_vlis = vtb_list_data.cod_vlis\n" +
" INNER JOIN mtb_lisv_data ON vtb_list_data.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" vtb_list_data.versione = mtb_lisv_data.versione\n" +
" INNER JOIN mtb_aart ON mtb_lisv_data.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN vtb_promo ON vtb_list_data.cod_promo = vtb_promo.cod_promo\n" +
" OUTER APPLY (SELECT COUNT(*) AS conta\n" +
" FROM vtb_list_data rif\n" +
" WHERE vtb_list_data.cod_vlis = rif.cod_vlis_rif\n" +
" AND vtb_list_data.versione = rif.versione) list_rif\n" +
" WHERE (@codMart IS NULL OR mtb_lisv_data.cod_mart = @codMart)\n" +
" AND (@codvlis IS NULL OR vtb_list_data.cod_vlis = @codVlis)\n" +
" AND vtb_list.cod_vlis_rif IS NULL\n" +
" AND (@codPromo IS NULL OR vtb_list_data.cod_promo = @codPromo)\n" +
" AND (((@dataFine IS NULL OR ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) = @dataFine) AND\n" +
" ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine) OR\n" +
" (@dataFine IS NOT NULL AND ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) <> @dataFine AND\n" +
" (vtb_list_data.data_iniz BETWEEN ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) AND @dataFine OR\n" +
" vtb_list_data.data_fine BETWEEN ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) AND @dataFine OR\n" +
" ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine OR\n" +
" @dataFine BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine)))\n" +
" AND (vtb_promo.flag_sconto_contrattuale = 'N' OR\n" +
" (vtb_promo.flag_sconto_contrattuale = 'S' AND list_rif.conta = 0))\n" +
" UNION\n" +
" SELECT vtb_list.cod_vlis,\n" +
" vtb_list.descrizione,\n" +
" vtb_list_data.data_iniz,\n" +
" vtb_list_data.data_fine,\n" +
" vtb_list_data.cod_promo,\n" +
" vtb_list_data.versione,\n" +
" vtb_list.cod_divi,\n" +
" vtb_list.flag_arr_prz_iva,\n" +
" vtb_list.arr_ric,\n" +
" vtb_list.flag_list_iva_inclusa,\n" +
" vtb_list.flag_lisv_margine,\n" +
" mtb_lisv_data.cod_mart AS cod_mart,\n" +
" mtb_lisv_data.unt_mis_ven AS unt_mis_ven,\n" +
" mtb_lisv_data.rap_conv AS rap_conv,\n" +
" mtb_lisv_data.prz_base AS prz_base,\n" +
" mtb_lisv_data.ricarica AS ricarico,\n" +
" --dbo.f_calcMargineEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as margine_eff,\n" +
" --dbo.f_calcRicaricoEffettivo(mtb_lisv_data.prz_base, mtb_lisv_data.prz_vend, mtb_aart.perc_sfrido) as ricarico_eff, \n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_vend IS NOT NULL AND mtb_lisv_data.prz_vend <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" ISNULL(mtb_lisv_data.prz_vend, 0) * 100, 2)\n" +
" ELSE 0 END AS margine_eff,\n" +
" CASE\n" +
" WHEN mtb_lisv_data.prz_base IS NOT NULL AND mtb_lisv_data.prz_base <> 0 THEN\n" +
" ROUND((ISNULL(mtb_lisv_data.prz_vend, 0) -\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100))) /\n" +
" (ISNULL(mtb_lisv_data.prz_base, 0) / (1 - mtb_aart.perc_sfrido / 100)) * 100, 2)\n" +
" ELSE 0 END AS ricarico_eff,\n" +
" mtb_lisv_data.prz_vend AS prz_vend,\n" +
" mtb_lisv_data.prz_vend_iva AS prz_vend_iva,\n" +
" mtb_lisv_data.perc_sco1 AS perc_sco1,\n" +
" mtb_lisv_data.perc_sco2 AS perc_sco2,\n" +
" mtb_lisv_data.perc_sco3 AS perc_sco3,\n" +
" mtb_lisv_data.perc_sco4 AS perc_sco4,\n" +
" mtb_lisv_data.perc_prov AS perc_prov,\n" +
" mtb_lisv_data.fisso_prov AS fisso_prov,\n" +
" mtb_lisv_data.posizione AS posizione,\n" +
" mtb_lisv_data.perc_gest AS perc_gest,\n" +
" mtb_lisv_data.val_gest AS val_gest,\n" +
" mtb_lisv_data.data_agg_prz AS data_agg_prz,\n" +
" mtb_lisv_data.perc_ispe AS perc_ispe,\n" +
" mtb_lisv_data.val_ispe AS val_ispe,\n" +
" mtb_lisv_data.perc_promo AS perc_promo,\n" +
" mtb_lisv_data.val_promo AS val_promo,\n" +
" mtb_lisv_data.perc_oneri AS perc_oneri,\n" +
" mtb_lisv_data.val_oneri AS val_oneri,\n" +
" mtb_lisv_data.tipo_variazione AS tipo_variazione,\n" +
" mtb_lisv_data.note AS note,\n" +
" mtb_lisv_data.aggiornato_da AS aggiornato_da,\n" +
" mtb_lisv_data.prz_vend * (1 - mtb_lisv_data.perc_sco1 / 100) * (1 - mtb_lisv_data.perc_sco2 / 100) *\n" +
" (1 - mtb_lisv_data.perc_sco3 / 100) * (1 - mtb_lisv_data.perc_sco4 / 100) AS prz_vend_netto,\n" +
" vtb_promo.descrizione AS 'descr_promo',\n" +
" vtb_promo.data_iniz_sell_out,\n" +
" vtb_promo.data_fine_sell_out,\n" +
" vtb_promo.flag_tipo_promo,\n" +
" mtb_lisv_data.sconto_cartoni,\n" +
" mtb_lisv_data.sconto_strato,\n" +
" mtb_lisv_data.sconto_pedane,\n" +
" mtb_lisv_data.giacenza,\n" +
" mtb_lisv_data.magg_prz_vend,\n" +
" vtb_promo.flag_sconto_contrattuale,\n" +
" vtb_promo.intercode_xml_variazioni,\n" +
" vtb_list_data.note AS note_testata,\n" +
" vtb_promo.flag_tipologia,\n" +
" vtb_promo.flag_volantino,\n" +
" mtb_lisv_data.inserito_da,\n" +
" vtb_list_data_rif.chiusura_immediata\n" +
" FROM vtb_list\n" +
" INNER JOIN vtb_list_data ON vtb_list.cod_vlis = vtb_list_data.cod_vlis\n" +
" INNER JOIN vtb_list_data vtb_list_data_rif\n" +
" ON vtb_list_data.cod_vlis_rif = vtb_list_data_rif.cod_vlis AND\n" +
" vtb_list_data.versione_rif = vtb_list_data_rif.versione\n" +
" INNER JOIN mtb_lisv_data ON vtb_list_data_rif.cod_vlis = mtb_lisv_data.cod_vlis AND\n" +
" vtb_list_data_rif.versione = mtb_lisv_data.versione\n" +
" INNER JOIN mtb_aart ON mtb_lisv_data.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN vtb_promo ON vtb_list_data_rif.cod_promo = vtb_promo.cod_promo\n" +
" WHERE (@codMart IS NULL OR mtb_lisv_data.cod_mart = @codMart)\n" +
" AND (@codvlis IS NULL OR vtb_list_data.cod_vlis = @codVlis)\n" +
" AND (@codPromo IS NULL OR vtb_list_data.cod_promo = @codPromo)\n" +
" AND (((@dataFine IS NULL OR ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) = @dataFine) AND\n" +
" ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine) OR\n" +
" (@dataFine IS NOT NULL AND ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) <> @dataFine AND\n" +
" (vtb_list_data.data_iniz BETWEEN ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) AND @dataFine OR\n" +
" vtb_list_data.data_fine BETWEEN ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) AND @dataFine OR\n" +
" ISNULL(@dataIniz, CAST(GETDATE() AS DATE)) BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine OR\n" +
" @dataFine BETWEEN vtb_list_data.data_iniz AND vtb_list_data.data_fine)))");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,53 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251113122313 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("lisv_getTipoUm", "CREATE FUNCTION [dbo].[lisv_getTipoUm]\n" +
"(\t\n" +
"\t@codMart varchar(15), @tipoUmLisv tinyint\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"(\n" +
"\twith um as (\n" +
"select cod_mart, unt_mis, rap_conv\n" +
"from dbo.getUntMisArticolo(@codMart, null ) um\n" +
"where @tipoUmLisv is not null\n" +
"and ( (@tipoUmLisv = 1 and um.tipo_um = 'UI' ) or \n" +
"(@tipoUmLisv = 2 and flag_unita_kg = 'S'))\n" +
")\n" +
"\n" +
"select mtb_aart.cod_mart, \n" +
"case \n" +
"when @tipoUmLisv IS null then mtb_aart.unt_mis\n" +
"when @tipoUmLisv = 1 and mtb_aart.qta_cnf in (0, 1) then mtb_aart.unt_mis\n" +
"when @tipoUmLisv = 2 and mtb_aart.peso_kg in (0, 1) then mtb_aart.unt_mis\n" +
"\telse ISNULL(um.unt_mis, mtb_aart.unt_mis) end as unt_mis_ven, \n" +
"case \n" +
"when @tipoUmLisv IS null then 1\n" +
"when @tipoUmLisv = 1 and mtb_aart.qta_cnf in (0, 1) then 1\n" +
"when @tipoUmLisv = 2 and mtb_aart.peso_kg in (0, 1) then 1\n" +
"\telse ISNULL(um.rap_conv, 1) end as rap_conv_vend\n" +
"from mtb_aart left outer join um on mtb_aart.cod_mart = um.cod_mart\n" +
"where (@codMart is null or mtb_aart.cod_mart = @codMart )\n" +
")");
executeStatement("alter table mtb_var_lisv_log alter column versione int 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_20251113170159 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE wdtb_doct ADD merce_ricevuta BIT DEFAULT 0 NOT NULL");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251114114334 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("ALTER TABLE ctb_amac DROP COLUMN cod_mdep;");
}
@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_20251114150912 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE jtb_comt ADD data_mod DATETIME");
}
@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_20251114163222 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("ALTER TABLE vtb_dest ADD data_mod DATETIME");
executeStatement("ALTER TABLE ptb_pros ADD data_mod DATETIME");
executeStatement("ALTER TABLE ptb_pros_rif ADD data_mod DATETIME");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,289 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251117100418 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateProcedure("sp_moveTableToFileGroup", "CREATE PROCEDURE [dbo].[sp_moveTableToFileGroup] (@tableName varchar(max), @fileGroup varchar(max), @fileName varchar(max), @createFile varchar(1) = 'N')\n" +
"AS\n" +
"BEGIN\n" +
" /*la variabile @fileGroup deve contenere solo il prefisso poi la procedura aggiunge _DATA e _INDEX*/\n" +
"\n" +
" declare @fileGroupIndex varchar(max), @fileGroupData varchar(max), @sqlText varchar(max),\n" +
" @countFile int, @pathDB varchar(max), @fileGroupDataName varchar(max),\n" +
" @fileGroupIndexName varchar(max)\n" +
"\n" +
" SELECT @pathDB = reverse(substring(reverse(physical_name), charindex('\', reverse(physical_name)), LEN(physical_name) -charindex('', reverse(physical_name) ) + 1)) \n" +
" FROM sys.master_files inner join sys.databases on sys.master_files.database_id = sys.databases.database_id WHERE sys.databases.name = DB_NAME()and data_space_id = 1\n" +
"\n" +
" select @fileGroup = case when IsNull(@fileGroup, '') <> '' and RIGHT(@fileGroup, 5) = '_DATA' THEN LEFT(@fileGroup, LEN(@fileGroup) - 5 ) ELSE @fileGroup END\n" +
" \n" +
" SELECT @fileGroupData = CASE WHEN @fileGroup = 'PRIMARY' OR IsNull(@fileGroup, '') = '' THEN '' ELSE @fileGroup + '_DATA' END,\n" +
" @fileGroupIndex = CASE WHEN @fileGroup = 'PRIMARY' OR IsNull(@fileGroup, '') = '' THEN '' ELSE @fileGroup + '_INDEX ' END\n" +
"\n" +
" if @fileGroup <> 'PRIMARY' \n" +
" BEGIN\n" +
" select @countFile = COUNT(*) from sys.filegroups f WHERE name like @fileGroup + '%'\n" +
" \n" +
" IF @countFile = 0 AND @createFile = 'S'\n" +
" BEGIN\n" +
" select @fileGroupDataName = Lower(db_name()) + '_' + \n" +
" (SELECT UPPER(LEFT(value_string,1)) + LOWER(SUBSTRING(value_string,2,LEN(value_string))) \n" +
" FROM dbo.ParseStringIntoArray(@fileGroupData, '_') FOR XML PATH('') ),\n" +
" @fileGroupIndexName = Lower(db_name()) + '_' + \n" +
" (SELECT UPPER(LEFT(value_string,1)) + LOWER(SUBSTRING(value_string,2,LEN(value_string))) \n" +
" FROM dbo.ParseStringIntoArray(@fileGroupIndex, '_') FOR XML PATH('') )\n" +
"\n" +
" \n" +
" SELECT @sqlText =\n" +
" 'ALTER DATABASE ' + Upper(db_name()) + ' ADD FILEGROUP ' + @fileGroupData + '; '+ CHAR(13) + CHAR(10) + ' GO' + CHAR(13) + CHAR(10) + \n" +
" 'ALTER DATABASE ' + Upper(db_name()) + ' ADD FILE (NAME = ' + @fileGroupDataName + ',' +\n" +
" 'FILENAME = ''' + @pathDB + @fileGroupDataName + '.ndf'' ' +\n" +
" ') TO FILEGROUP ' + @fileGroupData + ';'+ CHAR(13) + CHAR(10) + ' GO' + CHAR(13) + CHAR(10) + \n" +
" 'ALTER DATABASE ' + Upper(db_name()) + ' ADD FILEGROUP ' + @fileGroupIndex + '; '+ CHAR(13) + CHAR(10) + ' GO' + CHAR(13) + CHAR(10) + \n" +
" 'ALTER DATABASE ' + Upper(db_name()) + ' ADD FILE (NAME = ' +@fileGroupIndexName + ',' + \n" +
" 'FILENAME = ''' + @pathDB + @fileGroupIndexName + '.ndf'' ' +\n" +
" ') TO FILEGROUP ' + @fileGroupIndex + ';' + CHAR(13) + CHAR(10) + ' GO' + CHAR(13) + CHAR(10) ;\n" +
"\n" +
"\n" +
" if @fileName <> '' \n" +
" exec sp_writeFile @fileName, @sqlText, 'S' \n" +
" else \n" +
" select @sqlText\n" +
" \n" +
" END\n" +
"\n" +
" SELECT @fileGroupData = ' ON ' + @fileGroupData, \n" +
" @fileGroupIndex = ' ON ' + @fileGroupIndex\n" +
"\n" +
" END\n" +
" \n" +
" \n" +
" DECLARE crs_query CURSOR FOR\n" +
" SELECT 'DROP INDEX '+ schema_name(t.schema_id) + '.' + t.name + '.' +i.name + CHAR(13) + CHAR(10) + ' GO' as script\n" +
" FROM sys.indexes i\n" +
" INNER JOIN sys.tables t ON t.object_id= i.object_id\n" +
" WHERE i.type>0 and \n" +
" t.is_ms_shipped=0 and \n" +
" t.name<>'sysdiagrams' and \n" +
" (is_primary_key=0 and is_unique_constraint=0) and\n" +
" t.name = @tableName\n" +
" union all\n" +
" SELECT 'CREATE ' +\n" +
" CASE \n" +
" WHEN I.is_unique = 1 THEN ' UNIQUE '\n" +
" ELSE ''\n" +
" END +\n" +
" I.type_desc COLLATE DATABASE_DEFAULT + ' INDEX ' +\n" +
" I.name + ' ON ' +\n" +
" SCHEMA_NAME(T.schema_id) + '.' + T.name + ' ( ' +\n" +
" KeyColumns + ' ) ' +\n" +
" ISNULL(' INCLUDE (' + IncludedColumns + ' ) ', '') +\n" +
" ISNULL(' WHERE ' + I.filter_definition, '') + ' WITH ( ' +\n" +
" CASE \n" +
" WHEN I.is_padded = 1 THEN ' PAD_INDEX = ON '\n" +
" ELSE ' PAD_INDEX = OFF '\n" +
" END + ',' +\n" +
" 'FILLFACTOR = ' + CONVERT(\n" +
" CHAR(5),\n" +
" CASE \n" +
" WHEN I.fill_factor = 0 THEN 100\n" +
" ELSE I.fill_factor\n" +
" END\n" +
" ) + ',' +\n" +
" -- default value \n" +
" 'SORT_IN_TEMPDB = OFF ' + ',' +\n" +
" CASE \n" +
" WHEN I.ignore_dup_key = 1 THEN ' IGNORE_DUP_KEY = ON '\n" +
" ELSE ' IGNORE_DUP_KEY = OFF '\n" +
" END + ',' +\n" +
" CASE \n" +
" WHEN ST.no_recompute = 0 THEN ' STATISTICS_NORECOMPUTE = OFF '\n" +
" ELSE ' STATISTICS_NORECOMPUTE = ON '\n" +
" END + ',' +\n" +
" ' ONLINE = OFF ' + ',' +\n" +
" CASE \n" +
" WHEN I.allow_row_locks = 1 THEN ' ALLOW_ROW_LOCKS = ON '\n" +
" ELSE ' ALLOW_ROW_LOCKS = OFF '\n" +
" END + ',' +\n" +
" CASE \n" +
" WHEN I.allow_page_locks = 1 THEN ' ALLOW_PAGE_LOCKS = ON '\n" +
" ELSE ' ALLOW_PAGE_LOCKS = OFF '\n" +
" END + ' ) ' + @fileGroupIndex + CHAR(13) + CHAR(10) + ' GO' [CreateIndexScript]\n" +
" FROM sys.indexes I\n" +
" JOIN sys.tables T\n" +
" ON T.object_id = I.object_id\n" +
" JOIN sys.sysindexes SI\n" +
" ON I.object_id = SI.id\n" +
" AND I.index_id = SI.indid\n" +
" JOIN (\n" +
" SELECT *\n" +
" FROM (\n" +
" SELECT IC2.object_id,\n" +
" IC2.index_id,\n" +
" STUFF(\n" +
" (\n" +
" SELECT ' , ' + C.name + CASE \n" +
" WHEN MAX(CONVERT(INT, IC1.is_descending_key)) \n" +
" = 1 THEN \n" +
" ' DESC '\n" +
" ELSE \n" +
" ' ASC '\n" +
" END\n" +
" FROM sys.index_columns IC1\n" +
" JOIN sys.columns C\n" +
" ON C.object_id = IC1.object_id\n" +
" AND C.column_id = IC1.column_id\n" +
" AND IC1.is_included_column = \n" +
" 0\n" +
" WHERE IC1.object_id = IC2.object_id\n" +
" AND IC1.index_id = IC2.index_id\n" +
" GROUP BY\n" +
" IC1.object_id,\n" +
" C.name,\n" +
" index_id\n" +
" ORDER BY\n" +
" MAX(IC1.key_ordinal) \n" +
" FOR XML PATH('')\n" +
" ),\n" +
" 1,\n" +
" 2,\n" +
" ''\n" +
" ) KeyColumns\n" +
" FROM sys.index_columns IC2 \n" +
" --WHERE IC2.Object_id = object_id('Person.Address') --Comment for all tables\n" +
" GROUP BY\n" +
" IC2.object_id,\n" +
" IC2.index_id\n" +
" ) tmp3\n" +
" )tmp4\n" +
" ON I.object_id = tmp4.object_id\n" +
" AND I.Index_id = tmp4.index_id\n" +
" JOIN sys.stats ST\n" +
" ON ST.object_id = I.object_id\n" +
" AND ST.stats_id = I.index_id\n" +
" JOIN sys.data_spaces DS\n" +
" ON I.data_space_id = DS.data_space_id\n" +
" JOIN sys.filegroups FG\n" +
" ON I.data_space_id = FG.data_space_id\n" +
" LEFT JOIN (\n" +
" SELECT *\n" +
" FROM (\n" +
" SELECT IC2.object_id,\n" +
" IC2.index_id,\n" +
" STUFF(\n" +
" (\n" +
" SELECT ' , ' + C.name\n" +
" FROM sys.index_columns IC1\n" +
" JOIN sys.columns C\n" +
" ON C.object_id = IC1.object_id\n" +
" AND C.column_id = IC1.column_id\n" +
" AND IC1.is_included_column = \n" +
" 1\n" +
" WHERE IC1.object_id = IC2.object_id\n" +
" AND IC1.index_id = IC2.index_id\n" +
" GROUP BY\n" +
" IC1.object_id,\n" +
" C.name,\n" +
" index_id \n" +
" FOR XML PATH('')\n" +
" ),\n" +
" 1,\n" +
" 2,\n" +
" ''\n" +
" ) IncludedColumns\n" +
" FROM sys.index_columns IC2 \n" +
" --WHERE IC2.Object_id = object_id('Person.Address') --Comment for all tables\n" +
" GROUP BY\n" +
" IC2.object_id,\n" +
" IC2.index_id\n" +
" ) tmp1\n" +
" WHERE IncludedColumns IS NOT NULL\n" +
" ) tmp2\n" +
" ON tmp2.object_id = I.object_id\n" +
" AND tmp2.index_id = I.index_id\n" +
" WHERE I.is_primary_key = 0\n" +
" AND I.is_unique_constraint = 0 and\n" +
" t.name = @tableName\n" +
" --AND I.Object_id = object_id('Person.Address') --Comment for all tables\n" +
" --AND I.name = 'IX_Address_PostalCode' --comment for all indexes \n" +
" union all\n" +
" SELECT 'ALTER TABLE ' + schema_name(fk.schema_id) + '.' + object_name(fk.parent_object_id)+ ' DROP CONSTRAINT ' + name + CHAR(13) + CHAR(10) + ' GO'\n" +
" from sys.foreign_keys fk\n" +
" where (object_name(fk.referenced_object_id) = @tableName)\n" +
" union all\n" +
" SELECT 'EXEC dbo.DropPrimaryKey '''+@tableName+''''+ CHAR(13) + CHAR(10) + ' GO' \n" +
" FROM sysobjects sysobjects_a, \n" +
" sysobjects sysobjects_b\n" +
" WHERE ( sysobjects_a.parent_obj = sysobjects_b.id) and \n" +
" ( sysobjects_a.xtype = 'PK' ) and \n" +
" ( sysobjects_b.name = @tableName )\n" +
" union all\n" +
" SELECT 'ALTER TABLE ' + schema_name(tb.schema_id) + '.' + tb. name + ' ADD CONSTRAINT pk_' + tb.name + ' primary key (' + \n" +
" ( select STUFF(( select ',' + col.name\n" +
" from sys.indexes ix \n" +
" inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id\n" +
" inner join sys.columns col on ixc.object_id =col.object_id and ixc.column_id=col.column_id\n" +
" where ix.type>0 and (ix.is_primary_key=1 or ix.is_unique_constraint=1)\n" +
" and object_name(ix.object_id) = tb.name\n" +
" ORDER BY ixc.key_ordinal\n" +
" FOR XML PATH('')), 1, 1, '' ) ) + ') ' + @fileGroupData + CHAR(13) + CHAR(10) + ' GO'\n" +
" from sys.tables tb\n" +
" where tb.name = @tableName and\n" +
" object_id in ( select object_id from sys.indexes ix where ix.is_primary_key=1 ) \n" +
" union all\n" +
" SELECT 'ALTER TABLE ' + schema_name(fk.schema_id) + '.' + object_name(fk.parent_object_id) + \n" +
" ' ADD CONSTRAINT ' + FK.NAME + ' FOREIGN KEY (' + \n" +
" (SELECT STUFF(( select ',' + c1.NAME \n" +
" from sys.foreign_key_columns fkc \n" +
" inner join sys.columns c1 on c1.object_id=fkc.parent_object_id and c1.column_id=fkc.parent_column_id \n" +
" where fkc.constraint_object_id = fk.OBJECT_ID \n" +
" ORDER by fkc.constraint_column_id\n" +
" FOR XML PATH('')), 1, 1, '' )) + \n" +
" ') REFERENCES ' + OBJECT_NAME(fk.referenced_object_id) + CHAR(13) + CHAR(10) + ' GO'\n" +
" from sys.foreign_keys fk\n" +
" where ( object_name(fk.referenced_object_id) = @tableName)\n" +
" union all\n" +
" select 'ALTER TABLE ' + + schema_name(tb.schema_id) + '.' + tb. name + ' ADD ID_PK_TEMP INT IDENTITY; ' + + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10) + \n" +
" 'ALTER TABLE ' + schema_name(tb.schema_id) + '.' + tb. name + ' ADD CONSTRAINT PK_' + tb. name + ' PRIMARY KEY(ID_PK_TEMP) ' + @fileGroupData + '; ' +\n" +
"CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10) + \n" +
" 'ALTER TABLE ' + schema_name(tb.schema_id) + '.' + tb. name + ' DROP CONSTRAINT PK_' + tb. name + ' ;' + CHAR(13) + CHAR(10) + 'GO'\n" +
" from sys.tables tb\n" +
" where object_id not in (\n" +
" select object_id\n" +
" from sys.indexes ix \n" +
" where ix.is_primary_key=1 ) and tb.name = @tableName\n" +
"\n" +
"\n" +
" OPEN crs_query \n" +
" FETCH NEXT FROM crs_query INTO @sqlText\n" +
" WHILE @@FETCH_STATUS = 0\n" +
" BEGIN\n" +
" if @fileName <> '' \n" +
" exec sp_writeFile @fileName, @sqlText, 'S' \n" +
" else \n" +
" select @sqlText\n" +
" \n" +
"\n" +
" FETCH NEXT FROM crs_query INTO @sqlText\n" +
" END\n" +
" CLOSE crs_query\n" +
" DEALLOCATE crs_query \n" +
"END");
}
@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.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251117142928 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("W_jriep_presenze_dip_disp", "SETUP", "SET_DATA_FINE", "N",
"imposta data fine = fine mese", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
if (isCustomer(IntegryCustomer.Integry))
updateSetupValue("W_jriep_presenze_dip_disp", "SETUP", "SET_DATA_FINE", "S");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,33 @@
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_20251117170957 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
executeStatement("update stb_gest_setup set value = 'S' where gest_name = 'DTB_ORDT' and key_section in ('NUOVA_PROCEDURA','DISABLE_TRIGGER_ORDL')");
executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'lord%'");
executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'pord%'");
executeStatement("insert into stb_abil \n" +
"select case when gest_name = 'lordi' then 'LG081' else 'AG031' end , user_name, 'S', case when gest_name = 'lordi' then 'lordi_tab' else 'pordi_tab' end from stb_abil \n" +
"where gest_name in ('lordi','pordi') and case when gest_name = 'lordi' then 'LG081' else 'AG031' end + user_name not in (select cod_opz + user_name from stb_abil where cod_opz in ('LG081','AG031'))");
executeStatement("update stb_abil set flag_abil = 'N' where gest_name in ('lordi','pordi')");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,64 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251118172320 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateTrigger("tr_changeTipoRiep", "CREATE TRIGGER [dbo].[tr_changeTipoRiep]\n" +
" ON [dbo].[ctb_cont]\n" +
" INSTEAD OF update\n" +
"AS\n" +
"BEGIN\n" +
" SET NOCOUNT ON;\n" +
" declare @cnt int = 0\n" +
"\n" +
"\n" +
" if Update(tipo_riep ) \n" +
" begin\n" +
" SELECT @cnt = COUNT(*) from ctb_movr inner join inserted on ctb_movr.cod_ccon = inserted.cod_ccon and \n" +
" ( (inserted.tipo_riep is null and ctb_movr.cod_anag is not null ) or (inserted.tipo_riep is null and ctb_movr.cod_anag is null ) )\n" +
" end\n" +
" \n" +
" \n" +
" IF @cnt > 0\n" +
" BEGIN\n" +
" THROW 50002, 'Update non consentito: esistono movimenti collegati.', 1;\n" +
" RETURN;\n" +
" END\n" +
" \n" +
" update ctb_cont \n" +
" set cod_cmas = inserted.cod_cmas,\n" +
" cod_cgrp = inserted.cod_cgrp,\n" +
" descrizione = inserted.descrizione,\n" +
" tipo_riep = inserted.tipo_riep,\n" +
" saldo_att = inserted.saldo_att,\n" +
" flag_cont_analit = inserted.flag_cont_analit,\n" +
" cod_biva = inserted.cod_biva,\n" +
" cod_jfas = inserted.cod_jfas,\n" +
" cod_csct = inserted.cod_csct,\n" +
" flag_risconto = inserted.flag_risconto,\n" +
" perc_ded = inserted.perc_ded,\n" +
" diacod = inserted.diacod,\n" +
" data_ins = inserted.data_ins,\n" +
" data_mod = inserted.data_mod\n" +
" from ctb_cont inner join inserted on ctb_cont.cod_ccon = inserted.cod_ccon\n" +
"\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251119084719 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table dtb_note_doc add flag_bio bit not null default 0");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251119170058 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("COD_PAGA_D", "Codice pagamento", " SELECT COD_PAGA + '|' + COD_PAGA + '-' + DESCRIZIONE FROM gtb_paga WHERE flag_attivo = 'S'");
executeStatement("UPDATE stb_gest_setup SET query_default = 'COD_PAGA_D'\n" +
"WHERE gest_name = 'CTB_SCAD'\n" +
"AND section ='COD_PAGA'",
"alter table ctb_caus add flag_paga_enasarco bit default 0 not null");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,61 @@
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_20251120123843 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table gtb_anag alter column citta varchar(60)");
createOrUpdateFunction("IntToBase36", "CREATE FUNCTION dbo.IntToBase36(@n bigint)\n" +
" RETURNS varchar(50)\n" +
" AS\n" +
" BEGIN\n" +
" DECLARE @chars varchar(36) = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n" +
" DECLARE @res varchar(50) = '';\n" +
" DECLARE @rem bigint;\n" +
" IF @n IS NULL RETURN NULL;\n" +
" IF @n = 0 RETURN '0';\n" +
" WHILE @n > 0\n" +
" BEGIN\n" +
" SET @rem = @n % 36;\n" +
" SET @res = SUBSTRING(@chars, @rem + 1, 1) + @res;\n" +
" SET @n = @n / 36;\n" +
" END\n" +
" RETURN @res;\n" +
" END;");
createOrUpdateFunction("Base36ToInt", "CREATE FUNCTION dbo.Base36ToInt(@s varchar(50))\n" +
" RETURNS bigint\n" +
" AS\n" +
" BEGIN\n" +
" DECLARE @chars varchar(36) = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n" +
" DECLARE @i int = 1;\n" +
" DECLARE @len int = LEN(@s);\n" +
" DECLARE @val bigint = 0;\n" +
" DECLARE @c char(1);\n" +
" IF @s IS NULL RETURN NULL;\n" +
" WHILE @i <= @len\n" +
" BEGIN\n" +
" SET @c = UPPER(SUBSTRING(@s, @i, 1));\n" +
" SET @val = @val * 36 + (CHARINDEX(@c, @chars) - 1);\n" +
" SET @i = @i + 1;\n" +
" END\n" +
" RETURN @val;\n" +
" END;");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251120153047 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table gtb_anag alter column rag_soc varchar(100)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,62 @@
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_20251120172527 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(!isCustomer(IntegryCustomer.CapelliMonelli)) return;
createOrUpdateFunction("[f_suggestCodeCodAnag]", "CREATE FUNCTION [dbo].[f_suggestCodeCodAnag](@partialCode varchar(5))\n" +
" \n" +
"RETURNS varchar(20) \n" +
"WITH INLINE = OFF\n" +
"AS\n" +
"BEGIN\n" +
" DECLARE @ls_codAnag VARCHAR(5), @codLen int, @condPartialCode varchar(10), @recuperaCodici varchar(1);\n" +
"\n" +
" SELECT @condPartialCode= ISNULL(@partialCode, '') + '[0-9]'\n" +
"\n" +
" SELECT @partialCode = ISNULL(@partialCode, '')\n" +
"\n" +
" SET @codLen = 5\n" +
" \n" +
" SELECT @recuperaCodici = dbo.getGestSetup('GTB_ANAG','SETUP','RECUPERA_CODICI')\n" +
"\n" +
" IF @recuperaCodici = 'S'\n" +
" BEGIN\n" +
" SELECT @ls_codAnag = (\n" +
" SELECT top 1 @partialCode + REPLICATE('0', 5 - len(@partialCode) - len(row_id)) + cast(row_id as varchar)\n" +
" from (\n" +
" select cast(SUBSTRING(cod_anag, len(@partialCode) + 1, len(cod_anag) - len(@partialCode) + 1) as int) as num_code, \n" +
" ROW_NUMBER() over (order by cast(SUBSTRING(cod_anag, len(@partialCode) + 1, len(cod_anag) - len(@partialCode) + 1) as int)) as row_id\n" +
" from gtb_anag\n" +
" where cod_anag like @condPartialCode+'%') tmp \n" +
" where tmp.num_code > tmp.row_id and tmp.num_code <> 0)\n" +
" END\n" +
"\n" +
" if @ls_codAnag is null \n" +
" begin \n" +
" SELECT @ls_codAnag = @partialCode + REPLICATE('0', @codLen - len(@partialCode) - len(dbo.IntToBase36(max_code.partial_code))) + Cast(dbo.IntToBase36(max_code.partial_code) as varchar)\n" +
" from ( \n" +
" SELECT cast(IsNull(max(try_cast(substring(cod_anag, len(@partialCode)+1, len(cod_anag) - len(@partialCode)) as numeric)), 0) + 1 as varchar) as partial_code\n" +
" FROM gtb_anag\n" +
" WHERE cod_anag like @partialCode + '%' ) max_code;\n" +
" end \n" +
" RETURN @ls_codAnag;\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,43 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251120181812 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateView("cvw_tipi_pdc", "CREATE VIEW cvw_tipi_pdc AS\n" +
"SELECT '1' AS codice, Upper('Attivo') descrizione, '1' as sezione\n" +
" UNION ALL\n" +
" SELECT '2', Upper('Passivo'), '1' as sezione\n" +
" UNION ALL\n" +
" SELECT '3', Upper('Netto'), '1' as sezione\n" +
" UNION ALL\n" +
" SELECT '4', Upper('Costi'), '2' as sezione\n" +
" UNION ALL\n" +
" SELECT '5', Upper('Ricavi'), '2' as sezione\n" +
" UNION ALL\n" +
" SELECT '6', Upper('D''ordine'), '3'\n" +
" UNION ALL\n" +
" SELECT '7', Upper('Epilogativi'), '3'");
createOrUpdateView("cvw_sezione_pdc", "CREATE VIEW cvw_sezione_pdc AS\n" +
"SELECT '1' AS codice, Upper('Stato Patrimoniale') AS descrizione\n" +
"UNION ALL\n" +
"SELECT '2', Upper('Conto Economico')\n" +
"UNION ALL\n" +
"SELECT '3', upper('Conti d''ordine e di Riepilogo')");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251121105212 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
addDefault("mtb_lisv", "add_ric_spese", 1);
addDefault("mtb_lisv", "add_sco_spese", 1);
addDefault("mtb_lisv", "add_val_spese", 1);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,28 @@
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_20251121132504 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("VTB_LIST", "SETUP", "GESTISCI_SPESE_LISTINO", "N",
"permette di gestire le spese di trasporto agganciate a listino", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
if (isCustomer(IntegryCustomer.RossoGargano))
updateSetupValue("VTB_LIST", "SETUP", "GESTISCI_SPESE_LISTINO", "S");
}
@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.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251121133310 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Carelli) || isCustomer(IntegryCustomer.SaporiVeri)) return;
updateSetupValue("W_VLISTDATA_RC", "SETUP", "FILTRO_ARTICOLI", "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.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251121140004 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("PICKING", "SPEDIZIONE", "FLAG_UNDERFLOW_QUANTITY_WARNING", "N",
"Avvisa l'operatore che sta prelevando una quantità inferiore rispetto a quella disponibile nel UL", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
if (isCustomer(IntegryCustomer.RossoGargano)) {
updateSetupValue("PICKING", "SPEDIZIONE", "FLAG_UNDERFLOW_QUANTITY_WARNING", "S");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,73 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251121150257 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getMaggiorazioneSpese", "CREATE FUNCTION [dbo].[getMaggiorazioneSpese](@dataValidita datetime, @codVlis varchar(5), @codSpes varchar(5)) \n" +
"RETURNS TABLE AS \n" +
" return \n" +
" select vtb_list.cod_vlis, \n" +
" vtb_list.descrizione, \n" +
" case when tmp_lisv_spese.max_lisv is null then null else Convert(datetime, left(tmp_lisv_spese.max_lisv, 10)) end as data_iniz, \n" +
" case when tmp_lisv_spese.max_lisv is null then null else Convert(int, right(tmp_lisv_spese.max_lisv, 4)) end as versione, \n" +
" vtb_list.cod_divi,\n" +
" tmp_lisv_spese.cod_spes as 'cod_spes', \n" +
" IsNull(mtb_lisv_data_spese.perc_ricarico, 0) as perc_ricarico, \n" +
" IsNull(mtb_lisv_data_spese.val_ricarico, 0) as val_ricarico,\n" +
" mtb_lisv_data_spese.da as da,\n" +
" mtb_lisv_data_spese.a as a,\n" +
" IsNull(mtb_lisv_data_spese.perc_sconto, 0) as perc_sconto,\n" +
" mtb_lisv_data_spese.id\n" +
" from ( SELECT vtb_list.cod_vlis as cod_vlis, \n" +
" mtb_lisv_data_spese.cod_spes, \n" +
" max(case when vtb_list_data.versione is null then null else Convert(varchar(10), vtb_list_data.data_iniz, 111) + ' ' + replicate('0', 4 - len(vtb_list_data.versione)) + Convert(varchar(5), vtb_list_data.versione) end ) as max_lisv,\n" +
" vtb_list.cod_vlis as 'cod_vlis_rif'\n" +
" FROM vtb_list, \n" +
" mtb_lisv_data_spese LEFT OUTER JOIN vtb_list_data ON mtb_lisv_data_spese.cod_vlis = vtb_list_data.cod_vlis AND \n" +
" mtb_lisv_data_spese.versione = vtb_list_data.versione and \n" +
" vtb_list_data.cod_promo is null AND\n" +
" vtb_list_data.data_iniz <= IsNull(@dataValidita, GetDate())\n" +
" WHERE vtb_list.cod_vlis = mtb_lisv_data_spese.cod_vlis and vtb_list.cod_vlis_rif is null\n" +
" GROUP BY vtb_list.cod_vlis,\n" +
" mtb_lisv_data_spese.cod_spes\n" +
" union\n" +
" SELECT vtb_list.cod_vlis as cod_vlis, \n" +
" mtb_lisv_data_spese.cod_spes, \n" +
" max(case when vtb_list_data.versione is null then null else Convert(varchar(10), vtb_list_data.data_iniz, 111) + ' ' + replicate('0', 4 - len(vtb_list_data.versione)) + Convert(varchar(5), vtb_list_data.versione) end ) as max_lisv,\n" +
" vtb_list.cod_vlis_rif as 'cod_vlis_rif'\n" +
" FROM vtb_list, \n" +
" mtb_lisv_data_spese \n" +
" LEFT OUTER JOIN vtb_list_data ON mtb_lisv_data_spese.cod_vlis = vtb_list_data.cod_vlis AND \n" +
" mtb_lisv_data_spese.versione = vtb_list_data.versione and \n" +
" vtb_list_data.cod_promo is null AND\n" +
" vtb_list_data.data_iniz <= IsNull(@dataValidita, GetDate())\n" +
" WHERE vtb_list.cod_vlis_rif = mtb_lisv_data_spese.cod_vlis and vtb_list.cod_vlis_rif is not null\n" +
" GROUP BY vtb_list.cod_vlis,\n" +
" mtb_lisv_data_spese.cod_spes, \n" +
" vtb_list.cod_vlis_rif ) tmp_lisv_spese LEFT OUTER JOIN mtb_lisv_data_spese ON tmp_lisv_spese.cod_vlis_rif = mtb_lisv_data_spese.cod_vlis AND \n" +
" tmp_lisv_spese.cod_spes = mtb_lisv_data_spese.cod_spes AND\n" +
" Convert(int, right( tmp_lisv_spese.max_lisv, 4)) = mtb_lisv_data_spese.versione, \n" +
" vtb_list,\n" +
" gtb_spes\n" +
" WHERE vtb_list.cod_vlis = tmp_lisv_spese.cod_vlis and \n" +
" ( @codSpes is null or tmp_lisv_spese.cod_spes = @codSpes ) and\n" +
" ( @codVlis is null or tmp_lisv_spese.cod_vlis = @codVlis) and\n" +
" tmp_lisv_spese.cod_spes = gtb_spes.cod_spes");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,288 @@
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_20251121165211 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isCustomer(IntegryCustomer.Biolevante)) {
createOrUpdateFunction("[getSchedaCosti]", "CREATE FUNCTION [dbo].[getSchedaCosti](@CodProd VARCHAR(15), @DataCosto DATETIME, @codVlis VARCHAR(5),\n" +
" @tipoCosto VARCHAR(2))\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN\n" +
" (\n" +
"/*\n" +
"\n" +
"declare @CodProd VARCHAR(15), @DataCosto DATETIME, @codVlis VARCHAR(5), @tipoCosto varchar(2)\n" +
"\n" +
"set @codProd = 'ccondib1lev'\n" +
"set @dataCosto = Cast(getDAte() as date)\n" +
"set @tipoCosto = 'UC';\n" +
"set @codVlis = '0036';\n" +
"*/\n" +
"/*tipoCosto: \n" +
" UC = Ultimo costo\n" +
" CM = Costo di mercato */\n" +
" WITH gruppi_merc AS (SELECT cod_mgrp,\n" +
" descrizione,\n" +
" tipo_mgrp,\n" +
" CASE tipo_mgrp\n" +
" WHEN 'MP' THEN '01'\n" +
" WHEN 'IMB' THEN '02'\n" +
" WHEN 'ACC' THEN '03'\n" +
" WHEN 'SL' THEN '04'\n" +
" WHEN 'PF' THEN '04'\n" +
" ELSE 11 END AS sort_categ,\n" +
" CASE tipo_mgrp\n" +
" WHEN 'MP' THEN 'MATERIE PRIME'\n" +
" WHEN 'IMB' THEN 'IMBALLAGGI'\n" +
" WHEN 'ACC' THEN 'MATERIALE ACCESSORIO'\n" +
" WHEN 'SL' THEN 'COSTO LAVORAZIONI'\n" +
" WHEN 'PF' THEN 'COSTO LAVORAZIONI'\n" +
" ELSE tipo_mgrp\n" +
" END AS categoria,\n" +
" CASE WHEN tipo_mgrp IN ('MP', 'IMB', 'ACC') THEN 1 ELSE 0 END AS isMateriaPrima\n" +
" from mtb_grup)\n" +
" ,explode_dist AS (\n" +
" SELECT CASE WHEN sfuso.cod_mart IS NOT NULL THEN 1 ELSE 0 END AS isSfuso,\n" +
" ISNULL(ISNULL(sfuso.cod_mart, dist.cod_prod), mtb_aart.cod_mart) AS cod_mart,\n" +
" dist.flag_foglia,\n" +
" dist.unt_mis_prod AS unt_mis_art,\n" +
" mtb_aart.unt_mis AS unt_mis_prod,\n" +
" dist.qta_prod * ISNULL(sfuso.PercProd, 1) AS qta_prod,\n" +
" case when sfuso.cod_mart IS not null \n" +
" then\n" +
" /*se si tratta di un mix pendiamo il costo dei materiali dalla mtb_aart*/\n" +
" sfuso_art.val_ult_car\n" +
" else\n" +
" ROUND(ISNULL(dist.costo_materiali, 0) / dist.qta_prod *\n" +
" ISNULL(sfuso.PercProd, 1),\n" +
" 5) end AS costo_unt,\n" +
" ISNULL( (case \n" +
" when sfuso.cod_mart IS not null \n" +
" then sfuso_art.val_ult_car * dist.qta_prod \n" +
" else dist.costo_materiali end ) \n" +
" * ISNULL(sfuso.PercProd, 1), 0) AS costo_materiali,\n" +
" \n" +
" ISNULL(dist.costo_manodopera, 0) +\n" +
" ISNULL(dist.costo_manodopera_magaz, 0) +\n" +
" ISNULL(dist.costo_servizi, 0) \n" +
" AS altri_costi\n" +
" FROM dbo.f_explodedist(@codprod, 1, 'U', @datacosto, 'S', 'S') dist\n" +
" INNER JOIN mtb_aart\n" +
" ON mtb_aart.cod_mart = ISNULL(dist.cod_prod_pri, dist.cod_prod) \n" +
" LEFT OUTER JOIN olvw_miscele_olio miscele ON dist.cod_prod = miscele.cod_mart\n" +
" LEFT OUTER JOIN olvw_distinta_sfuso sfuso\n" +
" ON dist.cod_prod_pri = sfuso.cod_prod AND\n" +
" dist.cod_prod = miscele.cod_mart\n" +
" LEFT OUTER JOIN mtb_aart sfuso_art on sfuso.cod_mart = sfuso_art.cod_mart\n" +
"\n" +
" )\n" +
" , distinta_base AS (\n" +
" SELECT 1 AS sort,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 THEN gruppi_merc.sort_categ ELSE '4' END as sort_categ,\n" +
" gruppi_merc.tipo_mgrp,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 THEN gruppi_merc.categoria ELSE 'COSTO LAVORAZIONI' END as categoria,\n" +
" mtb_aart.cod_msgr, \n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
" THEN mtb_aart.descrizione\n" +
" ELSE 'MANO DOPERA E ALTRI COSTI DI PRODUZIONE (' + gruppi_merc.tipo_mgrp + ')' END AS descr_costo,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
" THEN explode_dist.cod_mart\n" +
" END AS cod_mart,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
" THEN explode_dist.unt_mis_art\n" +
" ELSE explode_dist.unt_mis_prod END AS unt_mis,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1\n" +
" THEN explode_dist.qta_prod\n" +
" ELSE 1 END AS qta_prod,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 --OR gruppi_merc.isMateriaPrima = 1 \n" +
" THEN\n" +
" CASE\n" +
" WHEN @tipoCosto = 'CM' THEN ISNULL(lisa.costo_mercato, 0)\n" +
" ELSE explode_dist.costo_unt END\n" +
" ELSE explode_dist.altri_costi END AS costo_unit,\n" +
" CASE\n" +
" WHEN explode_dist.flag_foglia = 1 THEN\n" +
" CASE\n" +
" WHEN @tipoCosto = 'CM'\n" +
" THEN ISNULL(lisa.costo_mercato, 0) * explode_dist.qta_prod\n" +
" ELSE explode_dist.costo_materiali END +\n" +
" --ISNULL(oneri_acq.costo_kg * explode_dist.qta_prod, 0)\n" +
" CASE WHEN @tipoCosto = 'CM'\n" +
" THEN ISNULL(oneri_acq.costo_kg * explode_dist.qta_prod, 0)\n" +
" ELSE 0 END\n" +
" ELSE explode_dist.altri_costi END costo_materiali,\n" +
" CONVERT(VARCHAR(4), 'VAL') AS qualificatore,\n" +
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
" dati_listino.dati AS dati_listino\n" +
" FROM explode_dist\n" +
" INNER JOIN mtb_aart ON explode_dist.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN gruppi_merc ON mtb_aart.cod_mgrp = gruppi_merc.cod_mgrp\n" +
" OUTER APPLY (SELECT LISA.COD_MART,\n" +
" AVG(prz_acq_netto_um) AS costo_mercato\n" +
" FROM dbo.getListinoAcquisto(DATEADD(MONTH, 1, @DataCosto),\n" +
" NULL, NULL, mtb_aart.cod_mart,\n" +
" 'S', NULL) lisa\n" +
" WHERE ( Lisa.tipo_variazione is null OR lisa.tipo_variazione <> 'D' )\n" +
" AND lisa.flag_attivo = 'S'\n" +
" AND lisa.flag_forn_pref = 'S'\n" +
" AND @tipoCosto = 'CM'\n" +
" GROUP BY lisa.cod_mart) lisa\n" +
" OUTER APPLY (SELECT STUFF((SELECT '~' + lisa.cod_alis + ' - ' +\n" +
" lisa.descrizione + ' DEL ' +\n" +
" CONVERT(VARCHAR(10), lisa.data_iniz, 103) +\n" +
" ' PREZZO: ' +\n" +
" FORMAT(prz_acq_netto_um, '#,##0.00###') +\n" +
" '€' AS [text()]\n" +
" FROM dbo.getListinoAcquisto(\n" +
" DATEADD(WEEK, 1, @DataCosto),\n" +
" NULL, NULL, mtb_aart.cod_mart,\n" +
" 'S', NULL) lisa\n" +
" WHERE lisa.tipo_variazione <> 'D'\n" +
" AND lisa.flag_attivo = 'S'\n" +
" AND lisa.flag_forn_pref = 'S'\n" +
" AND @tipoCosto = 'CM'\n" +
" FOR XML PATH('')), 1, 1,\n" +
" '') AS dati) dati_listino\n" +
" OUTER APPLY (SELECT SUM(conai.costo_kg * mtb_spes.qta_spes) AS costo_kg\n" +
" FROM mtb_aart arti\n" +
" INNER JOIN mtb_spes ON arti.cod_mart = mtb_spes.cod_mart\n" +
" LEFT OUTER JOIN (SELECT cod_conai,\n" +
" da_data,\n" +
" LEAD(\n" +
" DATEADD(DAY, -1, da_data),\n" +
" 1,\n" +
" CAST(GETDATE() AS DATE))\n" +
" OVER (PARTITION BY cod_conai ORDER BY da_data) AS a_data,\n" +
" costo_kg\n" +
" FROM gtb_conai_costi) conai\n" +
" ON mtb_spes.cod_spes =\n" +
" conai.cod_conai AND\n" +
" CAST(GETDATE() AS DATE) BETWEEN da_data AND a_data\n" +
" WHERE arti.cod_mart = mtb_aart.cod_mart) AS oneri_acq )\n" +
"\n" +
"\n" +
" SELECT sort,\n" +
" sort_categ AS group_categ,\n" +
" sort_categ,\n" +
" tipo_mgrp,\n" +
" categoria,\n" +
" cod_msgr,\n" +
" descr_costo,\n" +
" cod_mart,\n" +
" unt_mis,\n" +
" ROUND(qta_prod, 4) AS qta_prod,\n" +
" /*costo_unit,*/\n" +
" CASE\n" +
" WHEN qta_prod > 0 THEN ROUND(ISNULL(costo_materiali, 0) / qta_prod, 5)\n" +
" ELSE 0 END AS costo_unit,\n" +
" ROUND(ISNULL(costo_materiali, 0), 5) AS valore,\n" +
" qualificatore,\n" +
" tipo_calcolo,\n" +
" dati_listino\n" +
" FROM distinta_base\n" +
" UNION ALL\n" +
" SELECT CASE WHEN tipo_calcolo = 'LAVORAZIONE' THEN 1 ELSE 2 END AS sort,\n" +
" CASE WHEN tipo_calcolo = 'LAVORAZIONE' THEN 4 ELSE 5 END AS group_categ,\n" +
" 20,\n" +
" NULL,\n" +
" CASE\n" +
" WHEN tipo_calcolo = 'LAVORAZIONE' THEN 'COSTO LAVORAZIONI'\n" +
" ELSE 'COSTI DIRETTI COMMERCIALI E CONSEGNA' END,\n" +
" NULL,\n" +
" jtb_dist_clav_dir.descrizione,\n" +
" jtb_dist_clav_dir.cod_prod,\n" +
" jtb_dist_clav_dir.unt_mis,\n" +
" jtb_dist_clav_dir.qta_lav / jtb_cicl.qta_prod / jtb_cicl.rap_conv_prod AS qta_lav,\n" +
" jtb_dist_clav_dir.val_unt,\n" +
" (jtb_dist_clav_dir.qta_lav * jtb_dist_clav_dir.val_unt / jtb_cicl.qta_prod /\n" +
" jtb_cicl.rap_conv_prod),\n" +
" CONVERT(VARCHAR(4), 'VAL') AS qualificatore,\n" +
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
" NULL AS dati_listino\n" +
" FROM jtb_dist_clav_dir\n" +
" INNER JOIN jtb_cicl ON jtb_cicl.cod_prod = jtb_dist_clav_dir.cod_prod\n" +
" INNER JOIN gtb_spes ON jtb_dist_clav_dir.cod_jcos_dir = gtb_spes.cod_spes\n" +
" WHERE jtb_dist_clav_dir.cod_prod = (@codprod)\n" +
" AND gtb_spes.tipo_calcolo IN ('TRASPORTO PER KG', 'TRASPORTO PER COLLO', 'COMMERCIALI', 'LAVORAZIONE')\n" +
" AND jtb_dist_clav_dir.flag_fase_pref = 'S'\n" +
" UNION ALL\n" +
" SELECT 2,\n" +
" 5 AS group_categ,\n" +
" 21,\n" +
" NULL,\n" +
" 'COSTI DIRETTI COMMERCIALI E CONSEGNA',\n" +
" NULL,\n" +
" jtb_clav_ind.descrizione,\n" +
" NULL,\n" +
" NULL,\n" +
" NULL,\n" +
" NULL,\n" +
" jtb_dist_clav_ind.perc_cost,\n" +
" CONVERT(VARCHAR(4), 'PERC') AS qualificatore,\n" +
" jtb_clav_ind.tipo_calcolo AS tipo_calcolo,\n" +
" NULL AS dati_listino\n" +
" FROM jtb_dist_clav_ind\n" +
" INNER JOIN jtb_clav_ind ON jtb_clav_ind.cod_jcos_ind = jtb_dist_clav_ind.cod_jcos_ind\n" +
" WHERE jtb_dist_clav_ind.cod_prod = (@codprod)\n" +
" UNION ALL\n" +
" SELECT sort,\n" +
" group_categ,\n" +
" sort_categ,\n" +
" tipo_mgrp,\n" +
" categoria,\n" +
" cod_msgr,\n" +
" descr_costo,\n" +
" cod_mart,\n" +
" unt_mis,\n" +
" ROUND(qta_prod, 4) AS qta_prod,\n" +
" costo_unit,\n" +
" valore,\n" +
" qualificatore,\n" +
" tipo_calcolo,\n" +
" dati_listino\n" +
" FROM dbo.getSchedaCosti_DatiCommerciali(@codprod, @DataCosto, @codvlis) AS dati_commerciali\n" +
" UNION ALL\n" +
" SELECT 3,\n" +
" 6 AS group_categ,\n" +
" 31,\n" +
" NULL,\n" +
" 'COSTI INDIRETTI',\n" +
" NULL,\n" +
" 'COSTI GENERALI INCIDENZA A PERCENTUALE',\n" +
" jtb_cicl.cod_mart,\n" +
" NULL,\n" +
" NULL,\n" +
" NULL,\n" +
" ISNULL(jtb_cicl.perc_cost_gen, 0) AS perc_costi_gen,\n" +
" CONVERT(VARCHAR(4), 'PERC') AS qualificatore,\n" +
" CONVERT(VARCHAR(1), 'V') AS tipo_calcolo,\n" +
" NULL AS dati_listino\n" +
" FROM mtb_aart\n" +
" INNER JOIN jtb_cicl ON mtb_aart.cod_mart = jtb_cicl.cod_prod \n" +
" WHERE mtb_aart.cod_mart = (@codprod) \n" +
" )");
}
}
@Override
public void down() throws Exception {
}
}

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