Compare commits

...

328 Commits

Author SHA1 Message Date
jenkins
d77ca19cb1 20240414_074306 2024-04-14 07:43:06 +02:00
4b625ab9ea Personalizzazione stampa report ordine di produzione di default 2024-04-12 17:57:07 +02:00
9f76cf6762 Passare parametri obbligatori 2024-04-12 12:52:35 +02:00
427839fe52 Merge remote-tracking branch 'origin/develop' into develop 2024-04-12 09:58:32 +02:00
6146eb074b aggiunta migration 2024-04-12 09:58:30 +02:00
69309bf40b Merge branch 'master' into develop 2024-04-11 17:04:18 +02:00
8a48701cbf Finish Hotfix-56 2024-04-11 17:04:18 +02:00
a369bf0297 Fix localdate 2024-04-11 17:04:09 +02:00
d863468175 cancellata migration 2024-04-11 16:36:12 +02:00
abf19e0c0d sistemata migration 2024-04-11 16:27:39 +02:00
4d6998371f Varie migration 2024-04-11 16:04:43 +02:00
ce600f5bd0 PIG-UP: sistemato problema righe duplicate 2024-04-11 11:25:41 +02:00
912a208dfe gestito correttamente il cambio del tipo documento nella generazione dell'autofattura 2024-04-11 10:19:26 +02:00
cf5f52e696 inserimenti setup 2024-04-10 19:18:44 +02:00
af40f38ca3 Finish Hotfix-56 2024-04-10 17:51:07 +02:00
bc9de1344d Merge branch 'master' into develop 2024-04-10 17:51:07 +02:00
5c33542b35 Sistemare val premio nell'importazione dei listini di apulia e aggiunta possibilità di importare la percentuale del premio 2024-04-10 17:50:59 +02:00
64d077df8b Sistemare val premio nell'importazione dei listini di apulia e aggiunta possibilità di importare la percentuale del premio 2024-04-10 17:48:57 +02:00
5c7254a827 migliorato messaggio d'errore 2024-04-10 16:02:01 +02:00
10508da2f4 Merge remote-tracking branch 'origin/develop' into develop 2024-04-10 15:10:18 +02:00
248ecaf778 [WMSGenericService]
- Se presente viene presa la maxDataCollo dei colli di carico, altrimenti la data odierna, come data_collo degli ordini di scarico
2024-04-10 15:10:07 +02:00
d42c139490 Merge branch 'master' into develop 2024-04-10 13:14:32 +02:00
051f3b5ce5 Finish Hotfix-56 2024-04-10 13:14:31 +02:00
4d1b79b1b5 Fix numIreg da short a int 2024-04-10 13:14:26 +02:00
446a57b1e2 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240408151803.java
2024-04-10 10:45:43 +02:00
22d812a305 Migration per AnsiPadding 2024-04-10 10:45:09 +02:00
21cc84f7a1 Migration per AnsiPadding 2024-04-10 10:45:00 +02:00
7604bd0b4a Merge branch 'master' into develop 2024-04-10 10:34:31 +02:00
f88d409265 Finish Hotfix-56 2024-04-10 10:34:30 +02:00
3d394e7591 Fix date 2024-04-10 10:34:25 +02:00
d8e4f45827 Piccola utility db 2024-04-10 10:30:17 +02:00
9a75993848 cvw_mov_black_list 2024-04-09 18:44:34 +02:00
daf4bc347e Sistemati controlli su anno contabile a cavallo, aggiunga migration per setupGest, importazione Rosso gargano 2024-04-09 18:12:45 +02:00
840805f39f Merge remote-tracking branch 'origin/develop' into develop 2024-04-09 18:12:01 +02:00
4c4a3a99c2 Sistemato problema codice EAN imballo su EAN 128 della funzione f_getEAN128UL 2024-04-09 17:02:18 +02:00
6f0ec7ad47 Sistemato problema codice EAN imballo su EAN 128 della funzione f_getEAN128UL 2024-04-09 17:02:01 +02:00
92c10d50c8 [UtilityService]
- Fix se il currentObject è null
2024-04-09 15:39:42 +02:00
44e78b336f aggiornamento vista 2024-04-09 14:45:45 +02:00
688af6c815 Refactor UtilityController 2024-04-09 13:19:57 +02:00
5629a09ab8 Finish Hotfix-56 2024-04-09 12:07:31 +02:00
19bdd5e160 Merge branch 'master' into develop 2024-04-09 12:07:31 +02:00
338da4bbdb Migration per AnsiPadding 2024-04-09 12:07:21 +02:00
5ae6961b2f Aumentata dimensione descrizione CTB_BENI 2024-04-09 10:40:18 +02:00
b2f7dd77bb Merge remote-tracking branch 'origin/develop' into develop 2024-04-09 10:38:17 +02:00
1ebb61c1b4 Aumentata dimensione descrizione CTB_BENI 2024-04-09 10:38:08 +02:00
ea4d196ca2 Aumentata dimensione descrizione CTB_BENI 2024-04-09 10:37:52 +02:00
caad874c62 Merge remote-tracking branch 'origin/develop' into develop 2024-04-09 09:57:30 +02:00
bd8942617f Aggiunto servizio per permettere all'utente di registrarsi da task 2024-04-09 09:57:24 +02:00
033dee9393 Merge remote-tracking branch 'origin/develop' into develop 2024-04-08 17:39:29 +02:00
bdafc2ad36 allineamento query setup 2024-04-08 17:39:25 +02:00
e0e233b50e Fix user service 2024-04-08 15:30:45 +02:00
e448d220a0 Finish Hotfix-56 2024-04-08 15:22:13 +02:00
79022c1612 Merge branch 'master' into develop 2024-04-08 15:22:13 +02:00
23f34e4846 Mmigration per AnsiPadding 2024-04-08 15:21:38 +02:00
961a7bd278 allineamento query setup 2024-04-08 15:19:00 +02:00
efd595f45b Merge remote-tracking branch 'origin/develop' into develop 2024-04-08 12:25:14 +02:00
d683d75924 modifiche per permettere all'utene di accedere a task 2024-04-08 12:13:14 +02:00
119bcd82bf Attivata paginazione in tabella migrazioni 2024-04-08 12:05:33 +02:00
4fa27e5ec0 Modifica gitignore 2024-04-08 09:42:36 +02:00
ec507dc606 Merge branch 'master' into develop 2024-04-05 18:20:05 +02:00
14871e6175 Finish Hotfix-56 2024-04-05 18:20:05 +02:00
5f4ace9e96 [VGALIMENTI - CONTROLLO GIACENZE]
Corretta conversione LocalDate in Date per dataColloRif
2024-04-05 18:19:57 +02:00
410e2f272c Modifica gitignore 2024-04-05 13:28:18 +02:00
23df2f7bb2 Merge remote-tracking branch 'origin/develop' into develop 2024-04-05 13:25:40 +02:00
107e5cefca Aggiunto servizio per estrarre descrizioni attività 2024-04-05 13:25:29 +02:00
c49b5ac309 Aggiunta gestione imballi WMS 2024-04-05 13:24:13 +02:00
f69f9cd94a Aggiornato gitignore 2024-04-05 10:32:27 +02:00
f1e5a1cb25 Controllo data documento futura 2024-04-04 17:56:35 +02:00
cb0b718e84 Controllo data documento futura 2024-04-04 17:56:21 +02:00
7f35e6782e Controllo annullamento serie su duplicazione ordine di vendita 2024-04-04 17:33:02 +02:00
9445b1f468 Controllo annullamento serie su duplicazione ordine di vendita 2024-04-04 17:32:48 +02:00
7b65dce59e Merge branch 'master' into develop 2024-04-04 15:23:04 +02:00
cf4fc241ab Finish Hotfix-56 2024-04-04 15:23:03 +02:00
b200eeb8ed modifica per importazione listini format 2024-04-04 15:22:55 +02:00
b10cb1d551 Merge branch 'master' into develop 2024-04-04 15:16:48 +02:00
1d97a93b87 Finish Hotfix-56 2024-04-04 15:16:47 +02:00
a1f23f4fc5 ISCC 2024-04-04 15:16:40 +02:00
5860943104 corretta query 2024-04-04 15:09:40 +02:00
9063db3fd0 Merge branch 'master' into develop 2024-04-04 15:08:42 +02:00
884a279a4a Finish Hotfix-57 2024-04-04 15:08:42 +02:00
8ab0cd5465 Fix 2024-04-04 15:08:36 +02:00
fe5f517c25 Merge branch 'master' into develop 2024-04-04 14:58:05 +02:00
2b14a047a3 Finish Hotfix-56 2024-04-04 14:58:05 +02:00
af17a976a8 Merge remote-tracking branch 'origin/develop' into develop 2024-04-04 14:57:51 +02:00
925bc99566 Merge branch 'master' into hotfix/Hotfix-56 2024-04-04 14:57:07 +02:00
bd82ff80c1 ISCC 2024-04-04 14:56:35 +02:00
104b537177 ISCC 2024-04-04 14:55:39 +02:00
6dcb21a301 Rossogargano 2024-04-04 14:53:08 +02:00
9cfb59d501 Merge remote-tracking branch 'origin/develop' into develop 2024-04-04 13:41:07 +02:00
141e7ace37 Merge branch 'master' into develop 2024-04-04 13:40:32 +02:00
0df3fc3349 controllo su scadenze con data documento errata, modifiche per rossogargano 2024-04-04 13:39:39 +02:00
414a8bb1c3 Finish Hotfix-56 2024-04-04 13:21:38 +02:00
71fd011c65 Migration Ansi padding 2024-04-04 13:21:33 +02:00
b1cf1de005 Migration Ansi padding 2024-04-04 13:20:18 +02:00
54a7597709 Merge branch 'master' into develop 2024-04-04 12:48:17 +02:00
a424adb64b Finish Hotfix-56 2024-04-04 12:48:17 +02:00
0ae6cc1dd2 Fix su date 2024-04-04 12:48:11 +02:00
351184cda2 Fix codJflav in getRicorrenze 2024-04-04 12:09:58 +02:00
582e67ea3d Merge branch 'master' into develop 2024-04-04 11:08:42 +02:00
d649fb5651 Finish Hotfix-56 2024-04-04 11:08:03 +02:00
3e7f7d2bff corretta insert previsioni meteo con prepared statement 2024-04-04 11:07:24 +02:00
e4ac77e77b Merge remote-tracking branch 'origin/develop' into develop 2024-04-04 11:04:33 +02:00
f3eedecfec corretta insert previsioni meteo con prepared statement 2024-04-04 11:04:14 +02:00
eee2e9f893 Finish Hotfix-56 2024-04-04 10:58:55 +02:00
fd069a68e7 Merge branch 'master' into develop 2024-04-04 10:58:55 +02:00
f81cf7e3e1 Fix date 2024-04-04 10:58:32 +02:00
57bcedf022 Finish Hotfix-56 2024-04-03 14:12:01 +02:00
e03f1aaef8 Merge branch 'master' into develop 2024-04-03 14:12:01 +02:00
587f62bc15 modifiche a procedura di gelorent per poterla utilizzare su format 2024-04-03 14:11:49 +02:00
27627e2821 Merge branch 'master' into develop 2024-04-03 12:16:28 +02:00
50e59c7217 Finish Hotfix-56 2024-04-03 12:16:28 +02:00
22f8f09c56 Fix su menu e date 2024-04-03 12:16:23 +02:00
a0358d356d Merge branch 'master' into develop 2024-04-03 10:51:38 +02:00
09e77e0eff Finish Hotfix-56 2024-04-03 10:51:37 +02:00
44989dea5a Fix su date mtbcolt 2024-04-03 10:51:32 +02:00
a58a583652 Merge branch 'master' into develop 2024-04-03 10:18:49 +02:00
761f0e6a46 Finish Hotfix-56 2024-04-03 10:18:48 +02:00
6783b2b7a8 Fix sull'autocomplete della data collo 2024-04-03 10:18:42 +02:00
81720caad7 Merge branch 'master' into develop 2024-04-02 18:44:50 +02:00
b48f6275d7 Finish Hotfix-56 2024-04-02 18:44:49 +02:00
e9bbd723de corretto controllo su nomeazienda ordini follie
corretta conversione date da sql a localDate
2024-04-02 18:43:49 +02:00
db58dc9ac9 Merge branch 'master' into develop 2024-04-02 16:20:52 +02:00
1b05113975 Finish Hotfix-56 2024-04-02 16:20:52 +02:00
18184b447a Vario 2024-04-02 16:20:44 +02:00
75b1da5144 Vario 2024-04-02 16:20:04 +02:00
e5259ea78f Creata setup ABILITA_SCONTO in Ordify > Setup 2024-04-02 15:11:21 +02:00
19e64aadfe Aggiustati file templates 2024-04-02 10:51:36 +02:00
1a00d3653f Finish Licor_ContrattiDiAcquisto_FixDataOff 2024-03-29 16:03:42 +01:00
17633ccda7 [ContrattoDiAcquistoService]
- Se nuovo contratto, setto la dataOff se non presente
2024-03-29 16:03:35 +01:00
457d216a0b Cambiata condizione su date pianificazione 2024-03-29 09:38:12 +01:00
cbdff104e9 Cambiata condizione su date pianificazione 2024-03-29 09:25:16 +01:00
83eaa1b8f6 Leggere la qta cnf dal listino di acquisto 2024-03-28 17:14:39 +01:00
e796c9e803 Fix migrations 2024-03-28 14:58:41 +01:00
4d2d98774c Correzione tabella migrations ims webui 2024-03-28 12:03:16 +01:00
7220f525d3 Migrato IPR in .idea folder 2024-03-28 10:28:35 +01:00
7ccd45159f Merge remote-tracking branch 'origin/develop' into develop 2024-03-28 10:10:16 +01:00
6357cc17de Aggiunto servizio per estrarre le aziende a cui non si installa da più di un mese 2024-03-28 10:10:03 +01:00
d3046994c7 Varie ed eventiali 2024-03-28 09:49:41 +01:00
f799ff947a Merge remote-tracking branch 'origin/develop' into develop 2024-03-28 09:07:23 +01:00
d822ecd017 Gestito Num.Conf su importazione documenti DIALOGO 2024-03-28 09:07:18 +01:00
95ed2de093 Modifiche per salvataggio attività 2024-03-27 17:47:59 +01:00
3ec11a877f Merge remote-tracking branch 'origin/develop' into develop 2024-03-27 17:41:09 +01:00
0714023504 Modifiche per salvataggio attività 2024-03-27 17:41:05 +01:00
9423bbd30a - Migration GRUPPI_CONTROLLO_DATI_SCHEDATECNICA 2024-03-27 17:31:03 +01:00
a6f304c527 Fix LocalDate su MtbCols 2024-03-27 16:32:34 +01:00
bff1705c5b Merge branch 'master' into develop 2024-03-27 10:13:34 +01:00
d4407e1f50 Finish Hotfix-56 2024-03-27 10:13:33 +01:00
2327be0f5d Modificati parametri connessione db per alcuni clienti 2024-03-27 10:13:28 +01:00
914bd5996c Corretta deserializzazione delle LocalDate in presenza dei dati di timezone 2024-03-27 09:45:02 +01:00
9e92c26926 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	ems-core/src/main/java/it/integry/ems_model/entity/StbGestSetup.java
2024-03-27 09:44:21 +01:00
4aa69f081d Merge remote-tracking branch 'origin/develop' into develop 2024-03-27 09:36:40 +01:00
3f01ab6502 importazione listini apulia gestione premi, verifica resi aggiunte wdtb_doct e range date configurabile 2024-03-26 23:03:49 +01:00
6558af7968 Aggionto campo in Azienda 2024-03-26 19:12:13 +01:00
7c0077e4a6 correzione registrazione movimento contabile e importazione rosso gargano 2024-03-26 18:12:57 +01:00
e090363418 aggiunto esito attività 2024-03-26 18:10:53 +01:00
3fab54e2e7 Fix regole dopo aver modificato i campi dataCollo da Date a LocalDate in MtbColr e MtbColt 2024-03-26 13:41:27 +01:00
4208c4a73d Gestione plafond reso 2024-03-26 13:27:36 +01:00
14b841d002 Merge remote-tracking branch 'origin/develop' into develop 2024-03-26 13:27:21 +01:00
eb9ca71fcd Gestione plafond reso 2024-03-26 13:27:16 +01:00
eaa448ccdd Modificati campi dataCollo da Date a LocalDate in MtbColr e MtbColt 2024-03-26 13:27:05 +01:00
7305bbb207 Modificati campi dataCollo da Date a LocalDate in MtbColr e MtbColt 2024-03-26 13:24:31 +01:00
dfb90e6de0 Merge remote-tracking branch 'origin/develop' into develop 2024-03-26 13:02:20 +01:00
b1b6d7edf1 Aggiunta campo flag_tipologia in vtb_agen_budget 2024-03-26 13:02:13 +01:00
f04f35dffd Merge remote-tracking branch 'origin/develop' into develop 2024-03-26 12:38:00 +01:00
3bf17e5415 Aggiornamento funzione ordify 2024-03-26 12:37:54 +01:00
818297e96d Finish Hotfix-56 2024-03-26 11:25:33 +01:00
1ae61bd48c Merge branch 'master' into develop 2024-03-26 11:25:33 +01:00
0315f9966a Merge remote-tracking branch 'origin/develop' into develop 2024-03-26 11:25:22 +01:00
1e3fb75a4f Fix su sysdate in mtb_colr 2024-03-26 11:25:04 +01:00
e521c73720 IPR 2024-03-26 11:24:38 +01:00
05b7707b39 Modifica servizio importazione sinfoOne scadenze 2024-03-26 09:52:27 +01:00
9d6c742298 Merge remote-tracking branch 'origin/develop' into develop 2024-03-25 15:54:11 +01:00
668d5c42c4 Modificato controllo inserimento subActivity 2024-03-25 15:54:01 +01:00
086bf3dbd2 Merge branch 'master' into develop 2024-03-25 15:03:44 +01:00
b735454d05 Finish Hotfix-56 2024-03-25 15:03:43 +01:00
bedc3edbad aggiunta qta proposta 2024-03-25 15:03:38 +01:00
ee37de67a2 Merge remote-tracking branch 'origin/develop' into develop 2024-03-25 14:41:21 +01:00
d1638842e7 aumentata la dimensione del campo annotazioni 2024-03-25 14:41:18 +01:00
2ed0767515 Merge branch 'master' into develop 2024-03-25 11:59:28 +01:00
3eb61b3aec Finish FixDupListiniVen 2024-03-25 11:59:27 +01:00
e3866a6dcb Fix clonazione listino di vendita 2024-03-25 11:59:19 +01:00
e6074d2b14 Rimossa repo Aspose non utilizzata 2024-03-25 10:49:56 +01:00
dc773b1960 Finish Hotfix-56 2024-03-25 10:04:57 +01:00
96c7df5fff Merge branch 'master' into develop 2024-03-25 10:04:57 +01:00
1f50317d5c aggiornamento menu e tabelle azienda 2024-03-25 10:04:48 +01:00
93d881e8d2 Ripristinato Run Tomcat 2024-03-25 09:41:41 +01:00
6bd3f4ade5 Merge remote-tracking branch 'origin/develop' into develop 2024-03-22 19:18:37 +01:00
a7bfe53d37 Fix nullPoint effectiveDate in inSubActivity 2024-03-22 19:18:28 +01:00
9ba82f6cbe - Aggiunte migration
- Creazione setupuser
2024-03-22 18:17:35 +01:00
1f3e3fbc93 Merge remote-tracking branch 'origin/develop' into develop 2024-03-22 15:27:12 +01:00
20bb73d391 Merge remote-tracking branch 'origin/develop' into develop 2024-03-22 15:10:19 +01:00
354a1b8503 Aggiunto scelta tipo attività in pianificazione 2024-03-22 15:10:00 +01:00
bfadf56470 [ROSSOGARGANO]
aggiunto controller per servizio cambio lotto di produzione
2024-03-22 13:10:00 +01:00
a84a43649b Merge branch 'master' into develop 2024-03-22 10:50:31 +01:00
d48c7c9de1 Finish Hotfix-56 2024-03-22 10:50:30 +01:00
3b83dc0c24 Fix sync 2024-03-22 10:50:23 +01:00
6d43b82170 Merge branch 'master' into develop 2024-03-21 19:12:32 +01:00
c2eaec7d39 Finish Hotfix-56 2024-03-21 19:12:31 +01:00
3383ea3da8 [TOSCA]
Aggiunta migration per inserire data inizio produzione negli stabilimenti
2024-03-21 19:12:24 +01:00
b54027c46f Aggiunto throw exception in fase di salvataggio fatture passive 2024-03-21 18:12:21 +01:00
1668bdbeb8 Merge remote-tracking branch 'origin/develop' into develop 2024-03-21 15:53:48 +01:00
96b9ece8aa Query textiles 2024-03-21 15:53:42 +01:00
d157988850 Finish Hotfix-56 2024-03-21 11:53:55 +01:00
40bda3ce1e Merge branch 'master' into develop 2024-03-21 11:53:55 +01:00
f92d545f80 Aggiunto servizio per ricevere e riservare prossimo numero collo 2024-03-21 11:53:45 +01:00
42d6867be5 Implementata esportazione dati zucchetti 2024-03-21 10:05:13 +01:00
e1cdf4ed93 Merge remote-tracking branch 'origin/develop' into develop 2024-03-21 09:45:26 +01:00
6788447088 Fix importazione dati SinfoOne 2024-03-21 09:44:50 +01:00
3da77518ec modifiche menu' 2024-03-20 17:31:49 +01:00
f800ac1e92 Fix migrations 2024-03-20 12:55:10 +01:00
b6cf51ba08 Finish Hotfix-56 2024-03-20 12:54:50 +01:00
d1f5cfc441 Merge branch 'master' into develop 2024-03-20 12:54:50 +01:00
d701547928 Fix migrations 2024-03-20 12:54:45 +01:00
f7eaa877c8 Merge tag 'Hotfix-55' into develop
Finish Hotfix-55
2024-03-20 12:29:47 +01:00
b2af609989 Finish Hotfix-55 2024-03-20 12:29:46 +01:00
dae51b99e2 Controllo tabella vuota migration_status e modifica campo numero a 40 caratteri 2024-03-20 12:29:30 +01:00
3906f03b21 Controllo tabella vuota migration_status e modifica campo numero a 40 caratteri 2024-03-20 12:29:13 +01:00
5aa90e3533 Merge tag 'Hotfix-54' into develop
Finish Hotfix-54
2024-03-20 12:00:37 +01:00
198d03d9ec Finish Hotfix-54 2024-03-20 12:00:37 +01:00
1b205afa5d Aumentata lunghezza campo numero della dtb_fatture_passive_ddt a 40 caratteri 2024-03-20 12:00:21 +01:00
fcf939a4c8 Merge remote-tracking branch 'origin/develop' into develop 2024-03-20 11:47:06 +01:00
f65b8d732f Gestione scarico materiali opzionali 2024-03-20 11:46:58 +01:00
cfaddcd249 Menu 2024-03-20 10:24:39 +01:00
9747759e32 Merge branch 'master' into develop 2024-03-19 16:02:35 +01:00
575b7bf1a6 Finish Hotfix-54 2024-03-19 16:02:35 +01:00
24c4344ac3 Fix su import from parent identity 2024-03-19 16:02:30 +01:00
04ab30e4ae Merge remote-tracking branch 'origin/develop' into develop 2024-03-19 15:44:52 +01:00
20494a5621 Creata procedura di importazione dati SinfoOne 2024-03-19 15:44:48 +01:00
e7fee71255 Merge tag 'Hotfix-53' into develop
Finish Hotfix-53
2024-03-19 11:59:43 +01:00
89c2113d96 Finish Hotfix-53 2024-03-19 11:59:43 +01:00
bdc2230d17 Sistemato problema aliquota iva su kit vendita 2024-03-19 11:59:24 +01:00
515fcf1ee7 Gestita duplicazione listino di vendita 2024-03-18 18:15:34 +01:00
1c6f629b24 Fix codifica menu JSON 2024-03-18 13:36:33 +01:00
c0fbbd854a Rimossa dipendenza duplicata maven 2024-03-18 13:30:14 +01:00
4eb2235351 Implementato servizio di generazione del JSON del menù 2024-03-18 13:10:50 +01:00
902bde4637 aggiunto controllo resi sui kit, modificata query per i menu 2024-03-15 18:16:37 +01:00
1e2ac8ab13 Fix in BaseMigration 2024-03-15 13:28:21 +01:00
c637c776af Finish Biolevante_MRP_FiltroDescrizioneEstesa 2024-03-15 13:03:27 +01:00
b48e2ee6c9 [MRP V2]
- Nel campo "articolo" utilizzato nella ricerca da MRP, se presente viene utilizzata la descrizione estesa, altrimenti la descrizione
2024-03-15 13:03:20 +01:00
20558ddfb1 Finish Carelli_Inventari_ModificaDataOraInv 2024-03-15 12:58:13 +01:00
8d5428dc16 [Inventari]
- Aggiunto nella query data_ora_inv necessaria per abilitare la modifica su PVM
- Aggiunto DataOraInv al RowInventarioDTO
2024-03-15 12:57:58 +01:00
74adf88692 Merge remote-tracking branch 'origin/develop' into develop 2024-03-15 12:43:09 +01:00
a7a492b050 Fix calcolo pedane in arrivo in retrieveArtsInGiacenzaByPositions 2024-03-15 12:42:50 +01:00
110c61e4aa Importazione Rosso Gargano, importazione listini di Apulia 2024-03-15 10:51:43 +01:00
b6b5b5eaae Merge remote-tracking branch 'origin/develop' into develop 2024-03-15 10:25:16 +01:00
9708b36438 disabilitato download anagrafiche 2024-03-15 10:25:12 +01:00
9e7b299a09 Fix deserializzazione WtbJreptSetup, rimozione utilityImage ed aggiornamento utility 2024-03-14 17:17:06 +01:00
8de9774813 Merge remote-tracking branch 'origin/develop' into develop 2024-03-14 16:52:20 +01:00
4113f57a3d sistemata stb_gest_setup 2024-03-14 16:52:12 +01:00
7bf6f0d0c2 Rinominata classe StbDevice in StbDevices 2024-03-14 16:22:34 +01:00
7d9c2822e8 Completato sistema di creazione automatica entity da DB 2024-03-14 16:22:08 +01:00
5c166b72c2 eliminato controllo su debug 2024-03-14 14:04:12 +01:00
d8c154ce19 Aggiunta nuova setup 2024-03-14 14:03:59 +01:00
dd4e274579 Inserito valore default su stbGEstsetup 2024-03-14 14:03:39 +01:00
e29b5cb005 Merge branch 'master' into develop 2024-03-14 13:22:00 +01:00
f117350095 Finish Hotfix-53 2024-03-14 13:21:59 +01:00
e592e3e071 Fix sul salvataggio dei blob in EntityBase 2024-03-14 13:21:43 +01:00
cc4f3eb826 Merge remote-tracking branch 'origin/develop' into develop 2024-03-14 13:21:03 +01:00
3fc0f5dcc6 Implementato sistema di generazione Entity 2024-03-14 13:20:54 +01:00
636653be5b Aggiunta query per estrarre stato artivolo in retrieveArtsInGiacenzaByPositions 2024-03-14 13:02:09 +01:00
a48ff9a4fe Rimossi checkPreSave vuoti dalle entity 2024-03-13 18:22:07 +01:00
67e49df1c7 Migliorie in BaseMigration 2024-03-13 17:51:28 +01:00
155adef231 Aggiunto campo flag_multi_value in setup per setup con array di valori 2024-03-13 17:25:18 +01:00
d8df7edaa3 Migliorie in BaseMigration 2024-03-13 17:18:05 +01:00
66612aae14 cambiato filtro data 2024-03-13 16:36:25 +01:00
66f82f5dfa Importazione rosso gargano e varie modifiche a registrazione movimenti contabilit 2024-03-13 16:35:47 +01:00
9ab03280b3 Merge remote-tracking branch 'origin/develop' into develop 2024-03-13 16:35:08 +01:00
238927a736 ctbPagheIntercode 2024-03-13 16:35:01 +01:00
e4efb0d485 Renaming 2024-03-13 15:59:50 +01:00
a506023585 Implementati metodi isWingest / isTextiles in BaseMigration 2024-03-13 15:56:15 +01:00
ac14569c1d ctbPagheIntercode 2024-03-13 15:42:21 +01:00
25511f25b1 Finish Hotfix-53 2024-03-13 15:37:11 +01:00
d169443340 Merge branch 'master' into develop 2024-03-13 15:37:11 +01:00
9c3cdf5a7c Fix su import from parent delle entity 2024-03-13 15:36:57 +01:00
067058190e Merge branch 'master' into develop 2024-03-13 15:14:02 +01:00
a2ec93afb3 Finish Hotfix-53 2024-03-13 15:14:01 +01:00
251a2d3239 sistemato controllo su qta_acquistata nei resi 2024-03-13 15:13:55 +01:00
63cde0d928 Fix sync 2024-03-13 13:27:42 +01:00
821b4a8260 Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	ems-core/src/main/java/it/integry/ems/dynamic_cache/DynamicCacheService.java
#	ems-core/src/main/java/it/integry/ems/sync/SyncManager.java
2024-03-13 13:21:57 +01:00
0b7d0cd4b0 Refactoring + Caching in sincronizzazioni online 2024-03-13 13:21:30 +01:00
859a61621b Refactoring + Caching in sincronizzazioni online 2024-03-13 13:20:23 +01:00
0a7191267b Merge remote-tracking branch 'origin/develop' into develop 2024-03-13 11:05:36 +01:00
fc1477979b Aggiunto AvailableClassMercDTO in OrdiniDiLavorazione 2024-03-13 11:05:32 +01:00
d3e66e3743 Merge branch 'master' into develop 2024-03-12 18:49:45 +01:00
1a62062356 Finish Hotfix-53 2024-03-12 18:49:44 +01:00
a67b0ad517 ottimizzazione importazione listini apulia 2024-03-12 18:49:10 +01:00
9f695f742d Merge branch 'master' into develop 2024-03-12 18:42:02 +01:00
b54dfcefdb Finish Hotfix-53 2024-03-12 18:42:01 +01:00
0b3ff4bd05 Fix su salvataggio Date nelle Entity 2024-03-12 18:41:55 +01:00
fa59da6630 Merge remote-tracking branch 'origin/develop' into develop 2024-03-12 18:10:35 +01:00
65c31627e7 Fix su vista che restituisce gli stati macchina 2024-03-12 18:10:28 +01:00
77a8827fbe Aggiunto metodo retrievePartitaMag 2024-03-12 16:42:13 +01:00
7a9eef46b1 Merge branch 'master' into develop 2024-03-12 15:29:18 +01:00
561f26f795 Finish Hotfix-53 2024-03-12 15:29:17 +01:00
f989812bfd Divise le righe in gruppi 2024-03-12 15:29:06 +01:00
831b1b38b9 Merge branch 'master' into develop 2024-03-12 15:20:45 +01:00
8af9d93cff Finish Hotfix-53 2024-03-12 15:20:45 +01:00
9c906bdd17 Divise le righe in gruppi 2024-03-12 15:20:26 +01:00
afb53e4f63 Merge tag 'Follies_OrdiniWebOrdikids_NazioneNullAlert' into develop
Finish Follies_OrdiniWebOrdikids_NazioneNullAlert
2024-03-12 13:09:09 +01:00
6e784624dd Finish Follies_OrdiniWebOrdikids_NazioneNullAlert 2024-03-12 13:09:08 +01:00
9523fde5fc - Aggiunto alert per nazione nulla 2024-03-12 13:09:01 +01:00
390be5333c Merge branch 'master' into develop 2024-03-12 12:35:45 +01:00
eb1e3c5efc Finish Hotfix-53 2024-03-12 12:35:44 +01:00
8753f6c84a Fare in modo che la procedura di importazione dei listini di apulia committi ogni listino salvato 2024-03-12 12:35:37 +01:00
848973c168 Implementati customer di Integry.
Migliorati metodi in BaseMigration.
2024-03-12 12:21:52 +01:00
954b3ed43d Merge branch 'master' into develop 2024-03-12 12:00:00 +01:00
ccd705d863 Finish Hotfix-53 2024-03-12 11:59:59 +01:00
d805ed379b Corretti JsonIgnore in EntityBase per problemi su SUBSTITUTE 2024-03-12 11:59:51 +01:00
9c68fe0eaf Merge branch 'master' into develop 2024-03-11 19:13:47 +01:00
12e05c60d1 Finish Hotfix-53 2024-03-11 19:13:46 +01:00
548d9d17a1 Rimossi campi da non serializzare nel json 2024-03-11 19:13:41 +01:00
fdb9bd07f8 Merge branch 'master' into develop 2024-03-11 18:15:53 +01:00
5a803989c5 Finish Hotfix-53 2024-03-11 18:15:53 +01:00
315c45a938 Fix password 2024-03-11 18:15:48 +01:00
376ecf5161 Merge branch 'master' into develop 2024-03-11 18:00:54 +01:00
95d0d0cf63 Finish Hotfix-53 2024-03-11 18:00:53 +01:00
6826110fa0 Aggiunta password default per backend servizi 2024-03-11 18:00:46 +01:00
2ac011c47c Merge branch 'master' into develop 2024-03-11 17:49:36 +01:00
09be88a375 Finish Hotfix-53 2024-03-11 17:49:36 +01:00
edafed5d4e modificata la creazione del resultset 2024-03-11 17:49:29 +01:00
e2029ede7a Merge remote-tracking branch 'origin/develop' into develop
# Conflicts:
#	ems-engine/src/main/java/it/integry/ems/system/controller/SystemMigrationController.java
2024-03-11 16:25:17 +01:00
13301ae17f Migliorati controlli per creazione query update 2024-03-11 16:24:51 +01:00
ef3e117632 Migliorati controlli per creazione query update 2024-03-11 16:24:31 +01:00
708962fb1d Merge remote-tracking branch 'origin/develop' into develop 2024-03-11 16:15:51 +01:00
1d59b05dc8 Fix encoding su creazione migration per viste, funzioni, trigger, procedure 2024-03-11 16:15:43 +01:00
5addd95c75 modificata condizione per invio dati dall'autofattura 2024-03-11 15:44:10 +01:00
995455e12c Implementato sistema di auto creazione delle migration per Viste, Funzioni, Procedure e Trigger 2024-03-11 13:21:49 +01:00
218ba0eee9 WMS 2024-03-11 10:01:20 +01:00
721 changed files with 12571 additions and 11328 deletions

117
.gitignore vendored
View File

@@ -1,39 +1,60 @@
# Created by https://www.gitignore.io/api/intellij
# Created by https://www.toptal.com/developers/gitignore/api/intellij
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
.shelf/*
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
# AWS User-specific
.idea/**/aws.xml
# Gradle:
.idea/gradle.xml
.idea/libraries
# Generated files
.idea/**/contentModel.xml
# Mongo Explorer plugin:
.idea/mongoSettings.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
## File-based project format:
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
.idea/artifacts
.idea/compiler.xml
.idea/jarRepositories.xml
.idea/modules.xml
.idea/*.iml
.idea/modules
*.iml
*.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
## Plugin-specific files:
# IntelliJ
/out/
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
@@ -41,20 +62,62 @@
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
*.iml
modules.xml
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
# End of https://www.toptal.com/developers/gitignore/api/intellij
# Integry
*/target/*
*.ckie
/ts
/temp

8
.idea/.gitignore generated vendored
View File

@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

17
.idea/compiler.xml generated
View File

@@ -6,24 +6,9 @@
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="ems-core" />
<module name="ems-engine" />
<module name="ems-core" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="ems-activity" target="1.8" />
<module name="ems-contabil" target="1.8" />
<module name="ems-document" target="1.8" />
<module name="ems-engine-customizations" target="1.8" />
<module name="ems-logistic" target="1.8" />
<module name="ems-offer" target="1.8" />
<module name="ems-order" target="1.8" />
<module name="ems-ordikids" target="1.8" />
<module name="ems-product" target="1.8" />
<module name="ems-production" target="1.8" />
<module name="ems-retail" target="1.8" />
<module name="ems-system" target="1.8" />
<module name="ems-utility" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

26
.idea/encodings.xml generated
View File

@@ -1,36 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/ems-activity/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-activity/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-contabil/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-contabil/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-core/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-core/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-document/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-document/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-engine-customizations/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-engine-customizations/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-engine/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-engine/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-logistic/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-logistic/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-offer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-offer/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-order/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-order/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-ordikids/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-ordikids/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-product/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-product/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-production/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-production/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-retail/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-retail/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-system/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-system/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-utility/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ems-utility/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>

8
.idea/file.template.settings.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExportableFileTemplateSettings">
<default_templates>
<template name="IntegryMigrationClass.java" file-name="Migration_${YEAR}${MONTH}${DAY}${HOUR}${MINUTE}${SECOND}" reformat="true" live-template-enabled="false" />
</default_templates>
</component>
</project>

View File

@@ -16,4 +16,4 @@ public class ${NAME} extends EntityBase {
private static final long serialVerionUID = 1L;
}
}

View File

@@ -13,4 +13,4 @@ public class ${NAME} extends EntityBase {
public static final String ENTITY = "${TABLE}";
#[[$END$]]#
}
}

View File

@@ -16,4 +16,4 @@ public class ${NAME} extends BaseMigration implements MigrationModelInterface{
}
}
}

15
.idea/git_toolbox_prj.xml generated Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>

View File

@@ -1,8 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
<option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.io.PrintStream,printf,org.apache.http.impl.client.HttpClientBuilder,build,org.apache.http.impl.client.HttpClients,createDefault,com.annimon.stream.Stream,of" />
</inspection_tool>
</profile>
</component>

View File

@@ -1,31 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="repo-sqlserver" />
<option name="name" value="repo-sqlserver" />
<option name="url" value="http://maven.lib.umd.edu/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central-http" />
<option name="name" value="central-http" />
<option name="url" value="http://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="AsposeJavaAPI" />
<option name="name" value="Aspose Java API" />
<option name="url" value="https://releases.aspose.com/java/repo/" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />

1
.idea/misc.xml generated
View File

@@ -7,7 +7,6 @@
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
<option name="workspaceImportForciblyTurnedOn" value="true" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

View File

@@ -0,0 +1,15 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="MenuStaticCreator" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="it.integry.ems.menu.MenuStaticCreator" />
<module name="ems-core" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="it.integry.ems.menu.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>

107
.idea/runConfigurations/Tomcat.xml generated Normal file
View File

@@ -0,0 +1,107 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat" ALTERNATIVE_JRE_ENABLED="false" ALTERNATIVE_JRE_PATH="1.8" nameIsGenerated="true">
<option name="COMMON_VM_ARGUMENTS" value="-Xms512m -Xmx2048m" />
<deployment>
<artifact name="ems-engine:war exploded">
<settings>
<option name="CONTEXT_PATH" value="/ems-api" />
</settings>
</artifact>
</deployment>
<server-settings>
<option name="BASE_DIRECTORY_NAME" value="a89fc2ca-88f5-402a-95b3-33bd03a9c1ac" />
</server-settings>
<log_file alias="Tomcat Manager Log" path="%IDEA_RUN:CATALINA_BASE%/logs/manager.*" />
<log_file alias="Tomcat Host Manager Log" path="%IDEA_RUN:CATALINA_BASE%/logs/host-manager.*" />
<log_file alias="Tomcat Localhost Access Log" path="%IDEA_RUN:CATALINA_BASE%/logs/localhost_access_log.*" />
<predefined_log_file enabled="true" id="Tomcat" />
<predefined_log_file enabled="true" id="Tomcat Catalina" />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="javadebug" />
</RunnerSettings>
<RunnerSettings RunnerId="JProfiler">
<option name="jreHome" value="$USER_HOME$/.jdks/openjdk-21.0.2" />
</RunnerSettings>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Cover">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Debug">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="JProfiler">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Run">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<method v="2">
<option name="Make" enabled="true" />
<option name="BuildArtifacts" enabled="true">
<artifact name="ems-engine:war exploded" />
</option>
</method>
</configuration>
</component>

View File

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

View File

@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat 9 #2 (ServerDev)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="serverdev" />
<option name="PORT" value="8002" />
<option name="AUTO_RESTART" value="false" />
<method v="2" />
</configuration>
</component>

View File

@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat #1 (ServerTomcat)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="localhost" />
<option name="PORT" value="8000" />
<option name="AUTO_RESTART" value="false" />
<method v="2" />
</configuration>
</component>

107
.idea/runConfigurations/Tomcat__FAST_.xml generated Normal file
View File

@@ -0,0 +1,107 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat (FAST)" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat" ALTERNATIVE_JRE_ENABLED="false">
<option name="COMMON_VM_ARGUMENTS" value="-DDISABLE_DROOLS_COMPILE=TRUE -Xms512m -Xmx2048m" />
<deployment>
<artifact name="ems-engine:war exploded">
<settings>
<option name="CONTEXT_PATH" value="/ems-api" />
</settings>
</artifact>
</deployment>
<server-settings>
<option name="BASE_DIRECTORY_NAME" value="00c7852d-22fb-44e1-9140-8ae73b4192fd" />
</server-settings>
<log_file alias="Tomcat Manager Log" path="%IDEA_RUN:CATALINA_BASE%/logs/manager.*" />
<log_file alias="Tomcat Host Manager Log" path="%IDEA_RUN:CATALINA_BASE%/logs/host-manager.*" />
<log_file alias="Tomcat Localhost Access Log" path="%IDEA_RUN:CATALINA_BASE%/logs/localhost_access_log.*" />
<predefined_log_file enabled="true" id="Tomcat" />
<predefined_log_file enabled="true" id="Tomcat Catalina" />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="javadebug" />
</RunnerSettings>
<RunnerSettings RunnerId="JProfiler">
<option name="jreHome" value="$PROJECT_DIR$/../../../Program Files/Java/jdk1.8.0_202" />
</RunnerSettings>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Cover">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Debug">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="JProfiler">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Profile">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Run">
<option name="USE_ENV_VARIABLES" value="true" />
<STARTUP>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</STARTUP>
<SHUTDOWN>
<option name="USE_DEFAULT" value="true" />
<option name="SCRIPT" value="" />
<option name="VM_PARAMETERS" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
</SHUTDOWN>
</ConfigurationWrapper>
<method v="2">
<option name="Make" enabled="true" />
<option name="BuildArtifacts" enabled="true">
<artifact name="ems-engine:war exploded" />
</option>
</method>
</configuration>
</component>

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

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -19,11 +19,6 @@
<id>maven-public</id>
<url>https://maven.studioml.it/repository/maven-public/</url>
</repository>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
</repositories>
<properties>
@@ -394,18 +389,13 @@
<artifactId>utility-barcode</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>it.integry</groupId>
<artifactId>utilityImage</artifactId>
<version>1.0</version>
</dependency>
<!-- IntegryUtility (Barcodes, ecc) -->
<dependency>
<groupId>it.integry</groupId>
<artifactId>Utility</artifactId>
<version>1.4</version>
<version>1.5</version>
</dependency>
@@ -711,12 +701,6 @@
<artifactId>jcodec-javase</artifactId>
<version>0.2.5</version>
</dependency>
<dependency>
<groupId>com.annimon</groupId>
<artifactId>stream</artifactId>
<version>1.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.docx4j</groupId>
@@ -730,5 +714,11 @@
<version>0.27.0</version>
</dependency>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-symbol-solver-core</artifactId>
<version>3.25.9</version>
</dependency>
</dependencies>
</project>

View File

@@ -38,7 +38,10 @@ public class CommonConstants {
public static final DateTimeFormatter TIMESTAMP_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss")
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATESTAMP_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd")
public static final DateTimeFormatter DATESTAMP_YMD_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd")
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATESTAMP_DMY_FORMATTER = DateTimeFormatter.ofPattern("ddMMyy")
.withZone(ZoneId.systemDefault());

View File

@@ -9,21 +9,21 @@ import java.util.HashMap;
public class EmsDBConst {
private HashMap<String, Const> typesBindingTable = new HashMap<String, Const>() {{
private HashMap<String, Const> datiAziendaBindingTable = new HashMap<String, Const>() {{
}};
public Const getConsts(String azienda) {
String aziendaUp = azienda.toUpperCase();
public Const getConsts(String profileDb) {
String aziendaUp = profileDb.toUpperCase();
if (!typesBindingTable.containsKey(aziendaUp)) {
typesBindingTable.put(aziendaUp, new Const());
if (!datiAziendaBindingTable.containsKey(aziendaUp)) {
datiAziendaBindingTable.put(aziendaUp, new Const());
}
return typesBindingTable.get(aziendaUp);
return datiAziendaBindingTable.get(aziendaUp);
}
public void destroyAll() {
typesBindingTable = new HashMap<String, Const>();
datiAziendaBindingTable = new HashMap<String, Const>();
}

View File

@@ -108,6 +108,7 @@ public class EmsCoreContext implements ApplicationListener<ContextRefreshedEvent
dispatchPostWebServerConstruct(multiDBTransactionManager);
} catch (Exception e) {
e.printStackTrace();
logger.error("EmsCoreContext.onPostDBLoaded", e);
}
}

View File

@@ -859,7 +859,7 @@ public class EmsController {
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET)
public byte[] downloadDtbDocPdf(HttpServletRequest request, HttpServletResponse response,
public byte[] downloadDtbDocPdf(HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String dataDoc,
@RequestParam String serDoc,
@@ -1147,8 +1147,7 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_CLEAN_DIRECTORIES, method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse cleanDirectories(HttpServletRequest httpRequest, HttpServletResponse httpResponse,
@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
ServiceRestResponse cleanDirectories(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
try {
emsServices.cleanDirectories();
return ServiceRestResponse.createPositiveResponse();
@@ -1167,9 +1166,7 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_GET_ENTITY_MAPPING, method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse getEntityMapping(HttpServletRequest httpRequest,
HttpServletResponse httpResponse,
@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
ServiceRestResponse getEntityMapping(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
try {
List<EntityHierarchyDTO> mapping = emsServices.getEntityMapping();
return ServiceRestResponse.createPositiveResponse(mapping);
@@ -1181,9 +1178,7 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_GET_HISTORY_PROFILE_DB, method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse getHistoryProfileDb(HttpServletRequest httpRequest,
HttpServletResponse httpResponse,
@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
ServiceRestResponse getHistoryProfileDb(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
try {
String historyProfileDb = settingsController.getHistoryProfileDb();
return ServiceRestResponse.createPositiveResponse(historyProfileDb);
@@ -1195,9 +1190,7 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_GET_ENTITY_DETAILS, method = RequestMethod.GET)
public @ResponseBody
ServiceRestResponse getEntityDetails(HttpServletRequest httpRequest,
HttpServletResponse httpResponse,
@RequestParam("entityName") String entityName,
ServiceRestResponse getEntityDetails(@RequestParam("entityName") String entityName,
@RequestParam(CommonConstants.PROFILE_DB) String config
) throws Exception {
try {

View File

@@ -30,6 +30,6 @@ public class EmsResponseEntityExceptionHandler extends ResponseEntityExceptionHa
logger.error("Eccezione non gestita", ex);
ServiceRestResponse serviceRestResponse = ServiceRestResponse.createNegativeResponse(ex);
return new ResponseEntity(serviceRestResponse, headers, status);
return new ResponseEntity<>(serviceRestResponse, headers, status);
}
}

View File

@@ -4,26 +4,17 @@ package it.integry.ems.devices;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.user.UserSession;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.entity.StbDevice;
import it.integry.ems_model.entity.StbDevices;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityLocalDate;
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.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.annotation.PostConstruct;
import javax.naming.Context;
import javax.servlet.http.HttpServletRequest;
import java.sql.Connection;
import java.util.Date;
@@ -57,14 +48,14 @@ public class DevicesService {
UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), selectSql);
if(!exists) {
StbDevice stbDevice = new StbDevice()
StbDevices stbDevices = new StbDevices()
.setName(appName)
.setIdentificationId(deviceId)
.setCreatedAt(new Date())
.setLastUse(new Date());
stbDevice.setOperation(OperationType.INSERT_OR_UPDATE);
entityProcessor.processEntity(stbDevice, multiDBTransactionManager);
stbDevices.setOperation(OperationType.INSERT_OR_UPDATE);
entityProcessor.processEntity(stbDevices, multiDBTransactionManager);
}
}

View File

@@ -12,6 +12,10 @@ public class ApplicationInfoDTO {
private String loadMenuPvm;
private List<String> salvataggiSoap;
private boolean delimitedIdentifier;
private boolean ansiPadding;
private boolean concatNullYieldsNull;
public String getName() {
return name;
}
@@ -74,4 +78,31 @@ public class ApplicationInfoDTO {
this.salvataggiSoap = salvataggiSoap;
return this;
}
public boolean isConcatNullYieldsNull() {
return concatNullYieldsNull;
}
public ApplicationInfoDTO setConcatNullYieldsNull(boolean concatNullYieldNulls) {
this.concatNullYieldsNull = concatNullYieldNulls;
return this;
}
public boolean isAnsiPadding() {
return ansiPadding;
}
public ApplicationInfoDTO setAnsiPadding(boolean ansiPadding) {
this.ansiPadding = ansiPadding;
return this;
}
public boolean isDelimitedIdentifier() {
return delimitedIdentifier;
}
public ApplicationInfoDTO setDelimitedIdentifier(boolean delimitedIdentifier) {
this.delimitedIdentifier = delimitedIdentifier;
return this;
}
}

View File

@@ -1,5 +1,6 @@
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;
@@ -12,6 +13,7 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -34,17 +36,46 @@ public class DynamicCacheService {
public enum Keys {
DATI_AZIENDA_KEY,
ENTITY_LOGGER_SETUP,
GRIGLIA_ACQUISTO_KEY
GRIGLIA_ACQUISTO_KEY,
ENTITY_SYNC_KEY
}
public void addItem(Keys key, int invalidateTimeInMins, RunnableWithReturn<Object> refreshAction) {
//cacheData.put(key, refreshAction.run());
this.looperService.add(() -> {
cacheData.put(key, refreshAction.run());
}, invalidateTimeInMins * 60 * 1000, "dynamic-cache-" + key);
}
public <T>void addDbItem(Keys key, int invalidateTimeInMins, RunnableArgsWithReturn<Connection, T> refreshAction, List<String> dbNames) {
List<String> finalDbNames = dbNames.stream().map(String::toLowerCase).collect(Collectors.toList());
RunnableWithReturn<Object> internalRefreshAction = () -> {
Map<String, List<AvailableConnectionsModel>> databases = settingsModel.getAvailableConnections()
.stream()
.filter(AvailableConnectionsModel::getInternalDb)
.filter(x -> finalDbNames.contains(x.getDbName().toLowerCase()))
.collect(Collectors.groupingBy(AvailableConnectionsModel::getDbName));
final HashMap<String, T> cachedDataByDB = new HashMap<>();
for (String dbName : databases.keySet()) {
String profileName = databases.get(dbName).get(0).getProfileName();
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false)) {
T data = refreshAction.run(multiDBTransactionManager.getPrimaryConnection());
cachedDataByDB.putIfAbsent(dbName.toLowerCase(), data);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
}
return cachedDataByDB;
};
addItem(key, invalidateTimeInMins, internalRefreshAction);
}
public void addEntity(Keys key, int invalidateTimeInMins, Class<? extends EntityBase> clazz, List<String> dbNames) {
List<String> finalDbNames = dbNames.stream().map(String::toLowerCase).collect(Collectors.toList());
@@ -92,16 +123,12 @@ public class DynamicCacheService {
}
private void cacheEntityByDB(String dbName, String profileName, Class<? extends EntityBase> clazz, HashMap<String, List<? extends EntityBase>> cachedEntitiesByDB) throws Exception {
MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false);
try {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(profileName, false)) {
String tableName = clazz.newInstance().getTableName();
String sql = "SELECT * FROM " + tableName;
List<? extends EntityBase> entities = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, clazz);
cachedEntitiesByDB.putIfAbsent(dbName.toLowerCase(), entities);
} finally {
multiDBTransactionManager.closeAll();
}
}
@@ -155,4 +182,13 @@ public class DynamicCacheService {
return cachedEntityList;
}
public <T>T getDbItem(Keys key, String dbName) {
dbName = dbName.toLowerCase();
final HashMap<String, T> cacheObjectByDB = (HashMap<String, T>) cacheData.getOrDefault(key, null);
if (cacheObjectByDB == null) return null;
final T cachedEntityValue = cacheObjectByDB.getOrDefault(dbName, null);
return cachedEntityValue;
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.ems.ecedi.dto;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.entity.MtbColt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
import java.math.BigDecimal;
@@ -508,7 +509,7 @@ public class EuritmoTestata {
// Chiave collo
mtbColt.setGestione("A");
mtbColt.setDataCollo(this.dataDoc);
mtbColt.setDataCollo(UtilityLocalDate.localDateFromDate(this.dataDoc));
mtbColt.setRifOrd(String.format("%s_%s", dataDocString, this.numDoc));
mtbColt.setAnnotazioni(annotazioni);

View File

@@ -0,0 +1,38 @@
package it.integry.ems.entity_development;
import it.integry.common.var.CommonConstants;
import it.integry.ems.devices.DevicesService;
import it.integry.ems.devices.dto.RegisterDeviceRequestDTO;
import it.integry.ems.entity_development.dto.CreateEntityItemRequestDTO;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.utility.UtilityDebug;
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.web.bind.annotation.*;
@RestController
@Scope("request")
@RequestMapping("entity-development")
public class EntityDevelopmentController {
private final Logger logger = LogManager.getLogger();
@Autowired
private EntityDevelopmentService entityDevelopmentService;
@RequestMapping(value = "create", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse create(@RequestBody CreateEntityItemRequestDTO[] createEntityItemRequestList) throws Exception {
if (!UtilityDebug.isDebugExecution())
throw new Exception("Puoi eseguire questa procedura solo in ambiente DEBUG!");
if (UtilityDebug.isIntegryServerDev())
throw new Exception("Non puoi eseguire questa azione su SERVERDEV!");
entityDevelopmentService.create(createEntityItemRequestList);
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -0,0 +1,240 @@
package it.integry.ems.entity_development;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.body.*;
import com.github.javaparser.ast.expr.*;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.ExpressionStmt;
import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.type.ClassOrInterfaceType;
import it.integry.ems.entity_development.dto.CreateEntityItemRequestDTO;
import it.integry.ems.entity_logger.db_schema_manager.component.SQLServerDBSchemaManager;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseForeignKey;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTable;
import it.integry.ems.entity_logger.db_schema_manager.dto.DatabaseTableColumn;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import org.kie.api.definition.type.PropertyReactive;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
import static com.github.javaparser.ast.Modifier.Keyword.*;
@Service
@Scope("request")
public class EntityDevelopmentService {
@Autowired
private MultiDBTransactionManager multiDBTransactionManager;
public void create(CreateEntityItemRequestDTO[] createEntityItemRequestList) throws Exception {
SQLServerDBSchemaManager sourceDBSchema = new SQLServerDBSchemaManager(multiDBTransactionManager.getPrimaryConnection());
List<AbstractMap.SimpleEntry<Boolean, CompilationUnit>> masterDetailClassesDeclaration = new ArrayList<>();
final List<CreateEntityItemRequestDTO> entityChilds = Arrays.stream(createEntityItemRequestList)
.filter(x -> !x.isMaster())
.collect(Collectors.toList());
for (CreateEntityItemRequestDTO createEntityItemRequestDTO : createEntityItemRequestList) {
final DatabaseTable tableData = sourceDBSchema.getTable(createEntityItemRequestDTO.getTableName());
final CompilationUnit javaClassDeclaration =
createJavaClassDeclaration(createEntityItemRequestDTO, tableData, createEntityItemRequestDTO.isMaster() ? entityChilds : null);
masterDetailClassesDeclaration.add(new AbstractMap.SimpleEntry<>(createEntityItemRequestDTO.isMaster(), javaClassDeclaration));
}
final String entitiesJavaPath = UtilityDirs.getDevelopmentJavaBaseFolder() + "it\\integry\\ems_model\\entity\\";
for (AbstractMap.SimpleEntry<Boolean, CompilationUnit> booleanClassOrInterfaceDeclarationSimpleEntry : masterDetailClassesDeclaration) {
final TypeDeclaration<?> classDeclaration = booleanClassOrInterfaceDeclarationSimpleEntry.getValue().getType(0);
writeJavaClassToFile(booleanClassOrInterfaceDeclarationSimpleEntry.getValue(), entitiesJavaPath, classDeclaration.getNameAsString());
}
}
private CompilationUnit createJavaClassDeclaration(CreateEntityItemRequestDTO createEntityItemRequestDTO, final DatabaseTable databaseTable, final List<CreateEntityItemRequestDTO> childEntities) throws Exception {
CompilationUnit javaClassCompilation = new CompilationUnit();
// addImportInstructions(javaClassCompilation);
String javaClassName = UtilityString.sqlToCamelCase(databaseTable.getTableName());
javaClassName = javaClassName.substring(0, 1).toUpperCase() + javaClassName.substring(1);
ClassOrInterfaceDeclaration javaClass = javaClassCompilation
.addClass(javaClassName)
.addExtendedType(EntityBase.class)
.setPublic(true);
if (createEntityItemRequestDTO.isMaster())
javaClass.addAnnotation(Master.class);
javaClass
.addAnnotation(PropertyReactive.class);
javaClass.addAndGetAnnotation(Table.class)
.addPair("value", new FieldAccessExpr(new NameExpr(javaClassName), "ENTITY"));
javaClass.addAndGetAnnotation(JsonTypeName.class)
.addPair("value", new FieldAccessExpr(new NameExpr(javaClassName), "ENTITY"));
final FieldDeclaration entityField = javaClass.addField(String.class, "ENTITY", PUBLIC, FINAL, STATIC);
ClassOrInterfaceType entityFieldType = entityField.getElementType().asClassOrInterfaceType();
entityFieldType.setName("String");
entityField.setVariable(0, new VariableDeclarator(entityFieldType, "ENTITY",
new StringLiteralExpr(databaseTable.getTableName())));
final FieldDeclaration serialVersionUIDField = javaClass.addField(Long.class, "serialVersionUID", PRIVATE, FINAL, STATIC);
ClassOrInterfaceType serialVersionUIDFieldType = serialVersionUIDField.getElementType().asClassOrInterfaceType();
serialVersionUIDFieldType.setName("long");
serialVersionUIDField.setVariable(0, new VariableDeclarator(serialVersionUIDFieldType, "serialVersionUID",
new LongLiteralExpr("1L")));
List<FieldDeclaration> entityFields = new ArrayList<>();
for (DatabaseTableColumn databaseColumn : databaseTable.getColumns()) {
entityFields.add(createEntityField(javaClass, databaseColumn));
}
if (childEntities != null) {
for (CreateEntityItemRequestDTO child : childEntities) {
String entityChildClassName = UtilityString.sqlToCamelCase(child.getTableName());
entityChildClassName = entityChildClassName.substring(0, 1).toUpperCase() + entityChildClassName.substring(1);
final FieldDeclaration fieldDeclaration = javaClass.addField(
"List<" + entityChildClassName + ">",
entityChildClassName.substring(0, 1).toLowerCase() + entityChildClassName.substring(1),
PRIVATE);
entityFields.add(fieldDeclaration);
fieldDeclaration.addAnnotation(EntityChild.class);
}
}
for (FieldDeclaration field : entityFields) {
field.createGetter();
field.createSetter()
.setType(javaClassName)
.getBody().ifPresent(x -> x.addStatement(new ReturnStmt("this")));
}
if (childEntities != null && !childEntities.isEmpty()) {
createDeleteChildsMethod(javaClass, childEntities);
}
return javaClassCompilation;
}
private FieldDeclaration createEntityField(ClassOrInterfaceDeclaration javaClass, DatabaseTableColumn databaseColumn) throws Exception {
final Class<?> aClass = UtilityDB.sqlTypeToJavaClass(databaseColumn.getDataType().toSqlDataType());
FieldDeclaration fieldDeclaration = javaClass.addField(aClass, UtilityString.sqlToField(databaseColumn.getColumnName()), PRIVATE);
//Create @PK annotation
if (databaseColumn.isPrimaryKey())
fieldDeclaration.addAnnotation(PK.class);
if (databaseColumn.isIdentity())
fieldDeclaration.addAnnotation(Identity.class);
//Create @SqlField annotation
final NormalAnnotationExpr sqlFieldAnnotation = fieldDeclaration.addAndGetAnnotation(SqlField.class)
.addPair("value", new StringLiteralExpr(databaseColumn.getColumnName()));
if (databaseColumn.getCharacterMaximumLength() != null)
sqlFieldAnnotation.addPair("maxLength", new IntegerLiteralExpr(databaseColumn.getCharacterMaximumLength().toString()));
sqlFieldAnnotation
.addPair("nullable", new BooleanLiteralExpr(databaseColumn.isNullable()));
// if (databaseColumn.getColumnDefault() != null)
// sqlFieldValues.add(new MemberValuePair("defaultObjectValue", new StringLiteralExpr(databaseColumn.getColumnDefault())));
//Create @FK annotations
if (databaseColumn.getForeignKeys() != null) {
for (DatabaseForeignKey fkInfo : databaseColumn.getForeignKeys()) {
String javaClassName = UtilityString.sqlToCamelCase(fkInfo.getTableName());
javaClassName = javaClassName.substring(0, 1).toUpperCase() + javaClassName.substring(1);
fieldDeclaration.addAndGetAnnotation(FK.class)
.addPair("tableName", new FieldAccessExpr(new NameExpr(javaClassName), "ENTITY"))
.addPair("columnName", new StringLiteralExpr(fkInfo.getColumnName()));
}
}
return fieldDeclaration;
}
private MethodDeclaration createDeleteChildsMethod(ClassOrInterfaceDeclaration classDefinition, final List<CreateEntityItemRequestDTO> childEntities) {
final MethodDeclaration deleteChilds = classDefinition.addMethod("deleteChilds", PROTECTED);
deleteChilds.addThrownException(Exception.class);
final BlockStmt blockStmt = deleteChilds.getBody().get();
for (CreateEntityItemRequestDTO childEntity : childEntities) {
String entityChildClassName = UtilityString.sqlToCamelCase(childEntity.getTableName());
entityChildClassName = entityChildClassName.substring(0, 1).toUpperCase() + entityChildClassName.substring(1);
String variableName = entityChildClassName.substring(0, 1).toLowerCase() + entityChildClassName.substring(1);
ClassOrInterfaceType classOrInterfaceType = new ClassOrInterfaceType()
.setName(entityChildClassName);
final VariableDeclarationExpr variableDeclarationExpr = new VariableDeclarationExpr(classOrInterfaceType, variableName);
variableDeclarationExpr.getVariable(0).setInitializer("new " + entityChildClassName + "()");
blockStmt.addStatement(
new ExpressionStmt(variableDeclarationExpr));
final NodeList<Expression> nodes = new NodeList<>();
nodes.add(new NameExpr("connection"));
nodes.add(new NameExpr("this"));
MethodCallExpr methodCallExpr = new MethodCallExpr(variableDeclarationExpr.getVariable(0).getNameAsExpression(), "deleteAllEntities", nodes);
blockStmt.addStatement(methodCallExpr);
}
return null;
}
private void writeJavaClassToFile(CompilationUnit classDefinition, String directoryPath, String nameAsString) throws Exception {
String filePath = directoryPath + nameAsString + ".java";
File f = new File(filePath);
if (f.exists()) throw new Exception("Esiste già un file per " + nameAsString);
FileOutputStream outputStream = new FileOutputStream(filePath);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
outputStreamWriter.write(classDefinition.toString());
outputStreamWriter.close();
outputStream.close();
}
}

View File

@@ -0,0 +1,25 @@
package it.integry.ems.entity_development.dto;
public class CreateEntityItemRequestDTO {
private String tableName;
private boolean master;
public String getTableName() {
return tableName;
}
public CreateEntityItemRequestDTO setTableName(String tableName) {
this.tableName = tableName;
return this;
}
public boolean isMaster() {
return master;
}
public CreateEntityItemRequestDTO setMaster(boolean master) {
this.master = master;
return this;
}
}

View File

@@ -7,6 +7,7 @@ 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.lang3.StringUtils;
import org.springframework.orm.jpa.vendor.Database;
import java.io.File;
import java.sql.Connection;
@@ -32,6 +33,10 @@ public class SQLServerDBSchemaManager {
this.mPassword = password;
}
public SQLServerDBSchemaManager(Connection connection) {
this.mConnection = connection;
}
public void connect() throws SQLException {
mConnection = DriverManager.getConnection(getConnectionString(mHost), mUsername, mPassword);
mConnection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
@@ -78,37 +83,133 @@ public class SQLServerDBSchemaManager {
}
public DatabaseTable getTable(String tableName) throws Exception {
String sql = "SELECT TABLE_CATALOG,\n" +
" COLUMNS.TABLE_SCHEMA,\n" +
" COLUMNS.TABLE_NAME,\n" +
" COLUMNS.COLUMN_NAME,\n" +
" ISNULL(IS_PRIMARY_KEY, 0) AS IS_PRIMARY_KEY,\n" +
" CAST(OBJECTPROPERTY(OBJECT_ID(COLUMNS.TABLE_NAME), 'TableHasIdentity') AS BIT) AS TABLE_HAS_IDENTITY,\n" +
" ORDINAL_POSITION,\n" +
" COLUMN_DEFAULT,\n" +
" CAST(CASE WHEN IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS BIT) AS IS_NULLABLE,\n" +
" DATA_TYPE,\n" +
" CHARACTER_MAXIMUM_LENGTH,\n" +
" CHARACTER_OCTET_LENGTH,\n" +
" NUMERIC_PRECISION,\n" +
" NUMERIC_PRECISION_RADIX,\n" +
" NUMERIC_SCALE,\n" +
" DATETIME_PRECISION,\n" +
" CHARACTER_SET_CATALOG,\n" +
" CHARACTER_SET_SCHEMA,\n" +
" CHARACTER_SET_NAME,\n" +
" COLLATION_CATALOG,\n" +
" COLLATION_SCHEMA,\n" +
" COLLATION_NAME,\n" +
" DOMAIN_CATALOG,\n" +
" DOMAIN_SCHEMA,\n" +
" DOMAIN_NAME\n" +
"FROM INFORMATION_SCHEMA.COLUMNS\n" +
" INNER JOIN sys.objects ON TABLE_NAME = name\n" +
" LEFT OUTER JOIN (SELECT TABLE_NAME,\n" +
" TABLE_SCHEMA,\n" +
" COLUMN_NAME,\n" +
" CAST(1 AS BIT) AS IS_PRIMARY_KEY\n" +
" FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE\n" +
" WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)),\n" +
" 'IsPrimaryKey') = 1) pk\n" +
" ON pk.TABLE_NAME = COLUMNS.TABLE_NAME AND\n" +
" pk.COLUMN_NAME = COLUMNS.COLUMN_NAME AND\n" +
" pk.TABLE_SCHEMA = COLUMNS.TABLE_SCHEMA\n" +
" WHERE type = " + UtilityDB.valueToString(DatabaseObjectTypeEnum.TABLE.getText()) +
" AND COLUMNS.TABLE_NAME = " + UtilityDB.valueToString(tableName);
List<HashMap<String, Object>> result = UtilityDB.executeSimpleQuery(this.mConnection, sql);
if (result.isEmpty())
return null;
HashMap<String, ArrayList<DatabaseForeignKey>> foreignKeysResults = getForeignKeys(tableName);
DatabaseTable databaseTable = new DatabaseTable()
.setTableName(tableName);
List<DatabaseTableColumn> databaseTableColumns = new ArrayList<>();
for (HashMap<String, Object> column : result) {
DatabaseTableColumn databaseTableColumn = new DatabaseTableColumn()
.setColumnName(UtilityHashMap.getValueIfExists(column, "COLUMN_NAME"))
.setOrdinalPosition(UtilityHashMap.getValueIfExists(column, "ORDINAL_POSITION"))
.setColumnDefault(UtilityHashMap.getValueIfExists(column, "COLUMN_DEFAULT"))
.setNullable(UtilityHashMap.getValueIfExists(column, "IS_NULLABLE"))
.setPrimaryKey(UtilityHashMap.getValueIfExists(column, "IS_PRIMARY_KEY"))
.setDataType(DatabaseTableColumnDataType.fromString(UtilityHashMap.getValueIfExists(column, "DATA_TYPE")))
.setCharacterMaximumLength(UtilityHashMap.getValueIfExists(column, "CHARACTER_MAXIMUM_LENGTH"))
.setCharacterOctetLength(UtilityHashMap.getValueIfExists(column, "CHARACTER_OCTET_LENGTH"))
.setNumericPrecision(UtilityHashMap.getValueIfExists(column, "NUMERIC_PRECISION"))
.setNumericPrecisionRadix(UtilityHashMap.getValueIfExists(column, "NUMERIC_PRECISION_RADIX"))
.setNumericScale(UtilityHashMap.getValueIfExists(column, "NUMERIC_SCALE"))
.setDatetimePrecision(UtilityHashMap.getValueIfExists(column, "DATETIME_PRECISION"))
.setCharacterSetCatalog(UtilityHashMap.getValueIfExists(column, "CHARACTER_SET_CATALOG"))
.setCharacterSetSchema(UtilityHashMap.getValueIfExists(column, "CHARACTER_SET_SCHEMA"))
.setCharacterSetName(UtilityHashMap.getValueIfExists(column, "CHARACTER_SET_NAME"));
databaseTableColumn.setIdentity(databaseTableColumn.isPrimaryKey() && UtilityHashMap.<Boolean>getValueIfExists(column, "TABLE_HAS_IDENTITY"));
if (foreignKeysResults.containsKey(databaseTableColumn.getColumnName()))
databaseTableColumn.setForeignKeys(foreignKeysResults.get(databaseTableColumn.getColumnName()));
databaseTableColumns.add(databaseTableColumn);
}
databaseTable.setColumns(databaseTableColumns);
return databaseTable;
}
public List<DatabaseTable> getTables() throws Exception {
List<DatabaseTable> tableList = new ArrayList<>();
String sql = "SELECT TABLE_CATALOG," +
" TABLE_SCHEMA," +
" TABLE_NAME," +
" COLUMN_NAME," +
" ORDINAL_POSITION," +
" COLUMN_DEFAULT," +
" CAST(CASE WHEN IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS BIT) AS IS_NULLABLE," +
" DATA_TYPE," +
" CHARACTER_MAXIMUM_LENGTH," +
" CHARACTER_OCTET_LENGTH," +
" NUMERIC_PRECISION," +
" NUMERIC_PRECISION_RADIX," +
" NUMERIC_SCALE," +
" DATETIME_PRECISION," +
" CHARACTER_SET_CATALOG," +
" CHARACTER_SET_SCHEMA," +
" CHARACTER_SET_NAME," +
" COLLATION_CATALOG," +
" COLLATION_SCHEMA," +
" COLLATION_NAME," +
" DOMAIN_CATALOG," +
" DOMAIN_SCHEMA," +
" DOMAIN_NAME" +
" FROM INFORMATION_SCHEMA.COLUMNS" +
" INNER JOIN sys.objects ON TABLE_NAME = name " +
String sql = "SELECT TABLE_CATALOG,\n" +
" COLUMNS.TABLE_SCHEMA,\n" +
" COLUMNS.TABLE_NAME,\n" +
" COLUMNS.COLUMN_NAME,\n" +
" ISNULL(IS_PRIMARY_KEY, 0) AS IS_PRIMARY_KEY,\n" +
" CAST(OBJECTPROPERTY(OBJECT_ID(COLUMNS.TABLE_NAME), 'TableHasIdentity') AS BIT) AS TABLE_HAS_IDENTITY,\n" +
" ORDINAL_POSITION,\n" +
" COLUMN_DEFAULT,\n" +
" CAST(CASE WHEN IS_NULLABLE = 'YES' THEN 1 ELSE 0 END AS BIT) AS IS_NULLABLE,\n" +
" DATA_TYPE,\n" +
" CHARACTER_MAXIMUM_LENGTH,\n" +
" CHARACTER_OCTET_LENGTH,\n" +
" NUMERIC_PRECISION,\n" +
" NUMERIC_PRECISION_RADIX,\n" +
" NUMERIC_SCALE,\n" +
" DATETIME_PRECISION,\n" +
" CHARACTER_SET_CATALOG,\n" +
" CHARACTER_SET_SCHEMA,\n" +
" CHARACTER_SET_NAME,\n" +
" COLLATION_CATALOG,\n" +
" COLLATION_SCHEMA,\n" +
" COLLATION_NAME,\n" +
" DOMAIN_CATALOG,\n" +
" DOMAIN_SCHEMA,\n" +
" DOMAIN_NAME\n" +
"FROM INFORMATION_SCHEMA.COLUMNS\n" +
" INNER JOIN sys.objects ON TABLE_NAME = name\n" +
" LEFT OUTER JOIN (SELECT TABLE_NAME,\n" +
" TABLE_SCHEMA,\n" +
" COLUMN_NAME,\n" +
" CAST(1 AS BIT) AS IS_PRIMARY_KEY\n" +
" FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE\n" +
" WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + QUOTENAME(CONSTRAINT_NAME)),\n" +
" 'IsPrimaryKey') = 1) pk\n" +
" ON pk.TABLE_NAME = COLUMNS.TABLE_NAME AND\n" +
" pk.COLUMN_NAME = COLUMNS.COLUMN_NAME AND\n" +
" pk.TABLE_SCHEMA = COLUMNS.TABLE_SCHEMA\n" +
" WHERE type = " + UtilityDB.valueToString(DatabaseObjectTypeEnum.TABLE.getText());
List<HashMap<String, Object>> result = UtilityDB.executeSimpleQuery(this.mConnection, sql);
final HashMap<String, HashMap<String, ArrayList<DatabaseForeignKey>>> foreignKeys = getForeignKeys();
Stream.of(result)
.groupBy(x -> UtilityHashMap.<String>getValueIfExists(x, "TABLE_NAME"))
@@ -116,6 +217,8 @@ public class SQLServerDBSchemaManager {
DatabaseTable databaseTable = new DatabaseTable()
.setTableName(x.getKey());
HashMap<String, ArrayList<DatabaseForeignKey>> foreignKeysResults = foreignKeys.getOrDefault(x.getKey(), new HashMap<>());
List<DatabaseTableColumn> databaseTableColumns = new ArrayList<>();
for (HashMap<String, Object> column : x.getValue()) {
@@ -124,6 +227,7 @@ public class SQLServerDBSchemaManager {
.setOrdinalPosition(UtilityHashMap.getValueIfExists(column, "ORDINAL_POSITION"))
.setColumnDefault(UtilityHashMap.getValueIfExists(column, "COLUMN_DEFAULT"))
.setNullable(UtilityHashMap.getValueIfExists(column, "IS_NULLABLE"))
.setPrimaryKey(UtilityHashMap.getValueIfExists(column, "IS_PRIMARY_KEY"))
.setDataType(DatabaseTableColumnDataType.fromString(UtilityHashMap.getValueIfExists(column, "DATA_TYPE")))
.setCharacterMaximumLength(UtilityHashMap.getValueIfExists(column, "CHARACTER_MAXIMUM_LENGTH"))
.setCharacterOctetLength(UtilityHashMap.getValueIfExists(column, "CHARACTER_OCTET_LENGTH"))
@@ -135,6 +239,11 @@ public class SQLServerDBSchemaManager {
.setCharacterSetSchema(UtilityHashMap.getValueIfExists(column, "CHARACTER_SET_SCHEMA"))
.setCharacterSetName(UtilityHashMap.getValueIfExists(column, "CHARACTER_SET_NAME"));
databaseTableColumn.setIdentity(databaseTableColumn.isPrimaryKey() && UtilityHashMap.<Boolean>getValueIfExists(column, "TABLE_HAS_IDENTITY"));
if (foreignKeysResults != null && foreignKeysResults.containsKey(databaseTableColumn.getColumnName()))
databaseTableColumn.setForeignKeys(foreignKeysResults.get(databaseTableColumn.getColumnName()));
databaseTableColumns.add(databaseTableColumn);
}
@@ -146,6 +255,90 @@ public class SQLServerDBSchemaManager {
return tableList;
}
private HashMap<String, HashMap<String, ArrayList<DatabaseForeignKey>>> getForeignKeys() throws Exception {
String sql = "SELECT DISTINCT\n" +
" tab1.name AS [table],\n" +
" col1.name AS [column],\n" +
" tab2.name AS [referenced_table],\n" +
" col2.name AS [referenced_column]\n" +
" FROM sys.foreign_key_columns fkc\n" +
" INNER JOIN sys.objects obj\n" +
" ON obj.object_id = fkc.constraint_object_id\n" +
" INNER JOIN sys.tables tab1\n" +
" ON tab1.object_id = fkc.parent_object_id\n" +
" INNER JOIN sys.schemas sch\n" +
" ON tab1.schema_id = sch.schema_id\n" +
" INNER JOIN sys.columns col1\n" +
" ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id\n" +
" INNER JOIN sys.tables tab2\n" +
" ON tab2.object_id = fkc.referenced_object_id\n" +
" INNER JOIN sys.columns col2\n" +
" ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id";
List<HashMap<String, Object>> resultList = UtilityDB.executeSimpleQuery(this.mConnection, sql);
HashMap<String, HashMap<String, ArrayList<DatabaseForeignKey>>> allTablesResult = new HashMap<>();
Stream.of(resultList)
.groupBy(x -> UtilityHashMap.<String>getValueIfExists(x, "table"))
.forEach(x -> {
HashMap<String, ArrayList<DatabaseForeignKey>> hashMap = new HashMap<>();
for (HashMap<String, Object> resultRow : x.getValue()) {
if (!hashMap.containsKey(UtilityHashMap.<String>getValueIfExists(resultRow, "column")))
hashMap.put(UtilityHashMap.getValueIfExists(resultRow, "column"), new ArrayList<>());
hashMap.get(UtilityHashMap.<String>getValueIfExists(resultRow, "column"))
.add(new DatabaseForeignKey()
.setColumnName(UtilityHashMap.getValueIfExists(resultRow, "referenced_column"))
.setTableName(UtilityHashMap.getValueIfExists(resultRow, "referenced_table")));
}
allTablesResult.put(x.getKey(), hashMap);
});
return allTablesResult;
}
private HashMap<String, ArrayList<DatabaseForeignKey>> getForeignKeys(String tableName) throws Exception {
String sql = "SELECT DISTINCT\n" +
" tab1.name AS [table],\n" +
" col1.name AS [column],\n" +
" tab2.name AS [referenced_table],\n" +
" col2.name AS [referenced_column]\n" +
" FROM sys.foreign_key_columns fkc\n" +
" INNER JOIN sys.objects obj\n" +
" ON obj.object_id = fkc.constraint_object_id\n" +
" INNER JOIN sys.tables tab1\n" +
" ON tab1.object_id = fkc.parent_object_id\n" +
" INNER JOIN sys.schemas sch\n" +
" ON tab1.schema_id = sch.schema_id\n" +
" INNER JOIN sys.columns col1\n" +
" ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id\n" +
" INNER JOIN sys.tables tab2\n" +
" ON tab2.object_id = fkc.referenced_object_id\n" +
" INNER JOIN sys.columns col2\n" +
" ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id\n" +
" WHERE tab1.name = " + UtilityDB.valueToString(tableName);
List<HashMap<String, Object>> resultList = UtilityDB.executeSimpleQuery(this.mConnection, sql);
HashMap<String, ArrayList<DatabaseForeignKey>> hashMap = new HashMap<>();
for (HashMap<String, Object> resultRow : resultList) {
if (!hashMap.containsKey(UtilityHashMap.<String>getValueIfExists(resultRow, "column")))
hashMap.put(UtilityHashMap.getValueIfExists(resultRow, "column"), new ArrayList<>());
hashMap.get(UtilityHashMap.<String>getValueIfExists(resultRow, "column"))
.add(new DatabaseForeignKey()
.setColumnName(UtilityHashMap.getValueIfExists(resultRow, "referenced_column"))
.setTableName(UtilityHashMap.getValueIfExists(resultRow, "referenced_table")));
}
return hashMap;
}
public String createTableSyntax(DatabaseTable databaseTable) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("CREATE TABLE [" + databaseTable.getTableName() + "] (");
@@ -192,6 +385,27 @@ public class SQLServerDBSchemaManager {
}
public List<String> generateAlterTableToDisableAnsiPadding() throws SQLException {
return UtilityDB.executeSimpleQueryOnlyFirstColumn(this.mConnection, "SELECT 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(sys.objects.object_id) + '.' + \n" +
" sys.objects.name + ' ALTER COLUMN [' + sys.columns.name + '] ' + \n" +
" sys.types.name + CASE WHEN sys.types.name IN ('text','ntext') THEN ''\n" +
" WHEN sys.types.name IN ('char','varchar') \n" +
" THEN '('+IIF(sys.columns.max_length = -1, 'MAX', CAST(sys.columns.max_length AS varchar(10)))+')'\n" +
" WHEN sys.types.name IN ('nchar','nvarchar') \n" +
" THEN '('+CAST(sys.columns.max_length/2 AS varchar(10))+')' END +\n" +
" ' ' + CASE WHEN sys.columns.is_nullable = 0 \n" +
" THEN 'NOT NULL' ELSE 'NULL' END\n" +
"FROM sys.columns\n" +
"JOIN sys.types\n" +
" ON sys.columns.user_type_id = sys.types.user_type_id\n" +
"JOIN sys.objects\n" +
" ON sys.columns.object_id = sys.objects.object_id\n" +
"WHERE is_ansi_padded = 0\n" +
" AND sys.types.name in ('char','varchar')\n" +
" AND sys.objects.type = 'U'");
}
private String generateAddColumnSyntax(DatabaseTableColumn tableColumn) {
String columnSize = null;

View File

@@ -0,0 +1,29 @@
package it.integry.ems.entity_logger.db_schema_manager.dto;
import it.integry.ems_model.annotation.SqlField;
public class DatabaseForeignKey {
@SqlField("referenced_table")
private String tableName;
@SqlField("referenced_column")
private String columnName;
public String getTableName() {
return tableName;
}
public DatabaseForeignKey setTableName(String tableName) {
this.tableName = tableName;
return this;
}
public String getColumnName() {
return columnName;
}
public DatabaseForeignKey setColumnName(String columnName) {
this.columnName = columnName;
return this;
}
}

View File

@@ -1,11 +1,15 @@
package it.integry.ems.entity_logger.db_schema_manager.dto;
import java.util.ArrayList;
public class DatabaseTableColumn {
private String columnName;
private Integer ordinalPosition;
private String columnDefault;
private boolean nullable;
private boolean primaryKey;
private boolean identity;
private DatabaseTableColumnDataType dataType;
private Integer characterMaximumLength;
private Integer characterOctetLength;
@@ -17,6 +21,8 @@ public class DatabaseTableColumn {
private String characterSetSchema;
private String characterSetName;
private ArrayList<DatabaseForeignKey> foreignKeys;
public String getColumnName() {
return columnName;
}
@@ -142,4 +148,31 @@ public class DatabaseTableColumn {
this.characterSetName = characterSetName;
return this;
}
public ArrayList<DatabaseForeignKey> getForeignKeys() {
return foreignKeys;
}
public DatabaseTableColumn setForeignKeys(ArrayList<DatabaseForeignKey> foreignKeys) {
this.foreignKeys = foreignKeys;
return this;
}
public boolean isPrimaryKey() {
return primaryKey;
}
public DatabaseTableColumn setPrimaryKey(boolean primaryKey) {
this.primaryKey = primaryKey;
return this;
}
public boolean isIdentity() {
return identity;
}
public DatabaseTableColumn setIdentity(boolean identity) {
this.identity = identity;
return this;
}
}

View File

@@ -1,5 +1,7 @@
package it.integry.ems.entity_logger.db_schema_manager.dto;
import java.sql.Types;
public enum DatabaseTableColumnDataType {
BIGINT("bigint"),
@@ -38,7 +40,7 @@ public enum DatabaseTableColumnDataType {
GEOGRAPHY("geography");
private String text;
private final String text;
private DatabaseTableColumnDataType(String text) {
this.text = text;
@@ -55,4 +57,52 @@ public enum DatabaseTableColumnDataType {
return this.text;
}
public int toSqlDataType() throws Exception {
switch (this) {
case BIGINT:
return Types.BIGINT;
case BIT:
return Types.BIT;
case DECIMAL:
return Types.DECIMAL;
case INT:
return Types.INTEGER;
case NUMERIC:
return Types.NUMERIC;
case SMALLINT:
return Types.SMALLINT;
case TINYINT:
return Types.TINYINT;
case FLOAT:
return Types.FLOAT;
case REAL:
return Types.REAL;
case DATE:
case DATETIME:
case DATETIME2:
case SMALLDATETIME:
return Types.DATE;
case TIME:
return Types.TIME;
case TIMESTAMP:
return Types.TIMESTAMP;
case CHAR:
return Types.CHAR;
case NCHAR:
return Types.NCHAR;
case VARCHAR:
case TEXT:
return Types.VARCHAR;
case NVARCHAR:
case NTEXT:
return Types.NVARCHAR;
case BINARY:
return Types.BINARY;
case VARBINARY:
return Types.VARBINARY;
}
throw new Exception("Type not recognized");
}
}

View File

@@ -1,7 +1,9 @@
package it.integry.ems.expansion;
import java.sql.SQLException;
public interface RunnableArgsWithReturn<T, R> {
R run(T data);
R run(T data) throws SQLException;
}

View File

@@ -11,6 +11,7 @@ public enum EntityExportType {
ORDINI("ORDINI"),
ORDINI_ACQUISTO("ORDINI ACQUISTO"),
ORDINI_VENDITA("ORDINI VENDITA"),
RISORSE_UMANE("RISORSE UMANE"),
MOVIMENTI_CONTABILI("MOVIMENTI CONTABILI"),
OFFERTE("OFFERTE"),
RAPPORTINI("RAPPORTINI"),

View File

@@ -6,12 +6,15 @@ import it.integry.ems.menu.dto.MenuConfigDTO;
import it.integry.ems.menu.dto.StbMenuDTO;
import it.integry.ems.menu.dto.StbMenuOpzDTO;
import it.integry.ems.menu.dto.StbTipoAziendaDTO;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;
@@ -31,9 +34,11 @@ public class MenuStaticCreator {
connection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);
connection.setAutoCommit(false);
final String baseProjectPath = new File("").getAbsolutePath() + "\\ems-core\\src\\main\\";
final String menuJsonResourceFolder = baseProjectPath + "resources\\menus\\";
createMenu(connection, UtilityDirs.getDevelopmentMenusFolder());
}
public static void createMenu(Connection connection, String menuJsonResourceFolder) throws Exception {
ObjectMapper jsonObjectMapper = new ObjectMapper();
final List<StbMenuOpzDTO> stbMenuOpzs = UtilityDB.executeSimpleQueryDTO(connection, "SELECT * FROM stb_menu_opz", StbMenuOpzDTO.class);
@@ -43,8 +48,7 @@ public class MenuStaticCreator {
final List<StbMenuDTO> stbMenus = UtilityDB.executeSimpleQueryDTO(connection, "SELECT * FROM stb_menu", StbMenuDTO.class);
final Map<String, List<StbMenuDTO>> menusByAzienda = stbMenus.stream().collect(Collectors.groupingBy(StbMenuDTO::getTipoAzienda));
MenuConfigDTO menuConfigDTO = new MenuConfigDTO(Integer.parseInt(CommonConstants.DATESTAMP_FORMATTER.format(UtilityLocalDate.getNow())))
MenuConfigDTO menuConfigDTO = new MenuConfigDTO(Integer.parseInt(CommonConstants.DATESTAMP_YMD_FORMATTER.format(UtilityLocalDate.getNow())))
.setStbMenuOpz(stbMenuOpzs)
.setStbTipoAzienda(stbTipoAziendas)
.setMenusByAzienda(menusByAzienda);
@@ -55,15 +59,15 @@ public class MenuStaticCreator {
}
private static void writeContentToFile(String filePath, String content, boolean overwrite) throws IOException {
File f = new File(filePath);
if (overwrite && f.exists()) f.delete();
FileOutputStream outputStream = new FileOutputStream(filePath);
byte[] strToBytes = content.getBytes();
outputStream.write(strToBytes);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
outputStreamWriter.write(content);
outputStreamWriter.close();
outputStream.close();
}

View File

@@ -4,6 +4,7 @@ import it.integry.common.var.CommonConstants;
import it.integry.ems.menu.service.MenuConfigurationService;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,4 +31,17 @@ public class MenuConfigurationController {
return ServiceRestResponse.createPositiveResponse();
}
@RequestMapping(value = "generate", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse generate() throws Exception {
if (!UtilityDebug.isDebugExecution())
throw new Exception("Puoi eseguire questa procedura solo in ambiente DEBUG!");
if (UtilityDebug.isIntegryServerDev())
throw new Exception("Non puoi eseguire questa azione su SERVERDEV!");
menuConfigurationService.generate();
return ServiceRestResponse.createPositiveResponse();
}
}

View File

@@ -23,36 +23,8 @@ public class StbMenuDTO {
@SqlField(value = "descrizione_estesa", maxLength = 8000, nullable = true)
private String descrizioneEstesa;
@SqlField(value = "entity_name", maxLength = 40, nullable = true)
private String entityName;
@SqlField(value = "flag_attivo", maxLength = 1, nullable = true, defaultObjectValue = "S")
private String flagAttivo;
@SqlField(value = "flag_printer_setup", maxLength = 1, nullable = true, defaultObjectValue = "N")
private String flagPrinterSetup;
@SqlField(value = "gest_name", maxLength = 40, nullable = true)
private String gestName;
@SqlField(value = "note", maxLength = 255, nullable = true)
private String note;
@SqlField(value = "object_type", maxLength = 5, nullable = true)
private String objectType;
@SqlField(value = "open_type", maxLength = 1, nullable = true)
private String openType;
@SqlField(value = "parameter", maxLength = 255, nullable = true)
private String parameter;
@SqlField(value = "picture_menu", maxLength = 1024, nullable = true)
private String pictureMenu;
@SqlField(value = "picture_select", maxLength = 1024, nullable = true)
private String pictureSelect;
@SqlField(value = "pos", nullable = true)
private Integer pos;
@@ -62,9 +34,6 @@ public class StbMenuDTO {
@SqlField(value = "pos_tipo_azienda", nullable = true)
private Integer posTipoAzienda;
@SqlField(value = "type", maxLength = -1, nullable = true, defaultObjectValue = "F")
private String menuType;
@SqlField(value = "url_descrizione", maxLength = 1024, nullable = true)
private String urlDescrizione;
@@ -122,15 +91,6 @@ public class StbMenuDTO {
return this;
}
public String getEntityName() {
return entityName;
}
public StbMenuDTO setEntityName(String entityName) {
this.entityName = entityName;
return this;
}
public String getFlagAttivo() {
return flagAttivo;
}
@@ -140,78 +100,6 @@ public class StbMenuDTO {
return this;
}
public String getFlagPrinterSetup() {
return flagPrinterSetup;
}
public StbMenuDTO setFlagPrinterSetup(String flagPrinterSetup) {
this.flagPrinterSetup = flagPrinterSetup;
return this;
}
public String getGestName() {
return gestName;
}
public StbMenuDTO setGestName(String gestName) {
this.gestName = gestName;
return this;
}
public String getNote() {
return note;
}
public StbMenuDTO setNote(String note) {
this.note = note;
return this;
}
public String getObjectType() {
return objectType;
}
public StbMenuDTO setObjectType(String objectType) {
this.objectType = objectType;
return this;
}
public String getOpenType() {
return openType;
}
public StbMenuDTO setOpenType(String openType) {
this.openType = openType;
return this;
}
public String getParameter() {
return parameter;
}
public StbMenuDTO setParameter(String parameter) {
this.parameter = parameter;
return this;
}
public String getPictureMenu() {
return pictureMenu;
}
public StbMenuDTO setPictureMenu(String pictureMenu) {
this.pictureMenu = pictureMenu;
return this;
}
public String getPictureSelect() {
return pictureSelect;
}
public StbMenuDTO setPictureSelect(String pictureSelect) {
this.pictureSelect = pictureSelect;
return this;
}
public Integer getPos() {
return pos;
}
@@ -239,15 +127,6 @@ public class StbMenuDTO {
return this;
}
public String getMenuType() {
return menuType;
}
public StbMenuDTO setMenuType(String menuType) {
this.menuType = menuType;
return this;
}
public String getUrlDescrizione() {
return urlDescrizione;
}
@@ -264,20 +143,10 @@ public class StbMenuDTO {
.setTipoAzienda(getTipoAzienda())
.setDescrizione(getDescrizione())
.setDescrizioneEstesa(getDescrizioneEstesa())
.setEntityName(getEntityName())
.setFlagAttivo(getFlagAttivo())
.setFlagPrinterSetup(getFlagPrinterSetup())
.setGestName(getGestName())
.setNote(getNote())
.setObjectType(getObjectType())
.setOpenType(getOpenType())
.setParameter(getParameter())
.setPictureMenu(getPictureMenu())
.setPictureSelect(getPictureSelect())
.setPos(getPos())
.setPosCliente(getPosCliente())
.setPosTipoAzienda(getPosTipoAzienda())
.setMenuType(getMenuType())
.setUrlDescrizione(getUrlDescrizione());
}
}

View File

@@ -1,8 +1,10 @@
package it.integry.ems.menu.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement;
import it.integry.annotations.PostContextAutowired;
import it.integry.annotations.PostContextConstruct;
import it.integry.ems.menu.MenuStaticCreator;
import it.integry.ems.menu.dto.MenuConfigDTO;
import it.integry.ems.menu.dto.StbMenuDTO;
import it.integry.ems.menu.dto.StbMenuOpzDTO;
@@ -11,12 +13,11 @@ import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.entity.Azienda;
import it.integry.ems_model.entity.StbMenu;
import it.integry.ems_model.entity.StbMenuOpz;
import it.integry.ems_model.entity.StbTipoAzienda;
import it.integry.ems.utility.UtilityDirs;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +26,8 @@ import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.List;
import static it.integry.ems_model.utility.UtilityDB.executeStatement;
@@ -43,7 +46,7 @@ public class MenuConfigurationService {
@PostContextConstruct(priority = 5)
public void init() throws Exception {
if(UtilityDebug.isDebugExecution()) return;
//if(UtilityDebug.isDebugExecution()) return;
logger.debug(MenuConfigurationService.class.getSimpleName() + ": Refresh menu");
@@ -63,6 +66,8 @@ public class MenuConfigurationService {
throw ex;
}
}
logger.debug(MenuConfigurationService.class.getSimpleName() + ": Fine refresh menu");
}
private boolean isHistoryDB(AdvancedDataSource advancedDataSource) throws Exception {
@@ -98,10 +103,30 @@ public class MenuConfigurationService {
"DELETE FROM stb_tipo_azienda",
"DELETE FROM stb_menu_opz");
for (StbMenuOpzDTO stbMenuOpzDto : menuConfig.getStbMenuOpz()) {
StbMenuOpz stbMenuOpz = stbMenuOpzDto.toEntity();
stbMenuOpz.setOperation(OperationType.INSERT);
stbMenuOpz.manageWithParentConnection(connection);
String insertStbMenuOpzSQL = "INSERT INTO " + StbMenuOpz.ENTITY + " (cod_opz, " +
"descrizione, gest_name, entity_name, picture_menu, picture_select, object_type, flag_printer_setup, parameter, note, open_type, is_deprecated)" +
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) connection.prepareStatement(insertStbMenuOpzSQL)) {
for (StbMenuOpzDTO stbMenuOpzDto : menuConfig.getStbMenuOpz()) {
insertBulkPs.setString(1, stbMenuOpzDto.getCodOpz());
insertBulkPs.setString(2, stbMenuOpzDto.getDescrizione());
insertBulkPs.setString(3, stbMenuOpzDto.getGestName());
insertBulkPs.setString(4, stbMenuOpzDto.getEntityName());
insertBulkPs.setString(5, stbMenuOpzDto.getPictureMenu());
insertBulkPs.setString(6, stbMenuOpzDto.getPictureSelect());
insertBulkPs.setString(7, stbMenuOpzDto.getObjectType());
insertBulkPs.setString(8, stbMenuOpzDto.getFlagPrinterSetup());
insertBulkPs.setString(9, stbMenuOpzDto.getParameter());
insertBulkPs.setString(10, stbMenuOpzDto.getNote());
insertBulkPs.setString(11, stbMenuOpzDto.getOpenType());
insertBulkPs.setString(12, stbMenuOpzDto.getIsDeprecated());
insertBulkPs.addBatch();
}
insertBulkPs.executeLargeBatch();
}
for (StbTipoAziendaDTO stbTipoAziendaDto : menuConfig.getStbTipoAzienda()) {
@@ -114,12 +139,39 @@ public class MenuConfigurationService {
if (stbMenus == null)
logger.error("Nessuna configurazione trovata per il menu " + azienda.getTipoAzienda() + " di " + azienda.getNomeDitta());
else
for (StbMenuDTO stbMenuDto : stbMenus) {
StbMenu stbMenu = stbMenuDto.toEntity();
stbMenu.setOperation(OperationType.INSERT);
stbMenu.manageWithParentConnection(connection);
else {
String insertStbMenuSql = "INSERT INTO " + StbMenu.ENTITY + " (cod_opz, descrizione, cod_parent, pos, tipo_azienda, flag_attivo, url_descrizione, " +
"pos_tipo_azienda, pos_cliente, descrizione_estesa) " +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (SQLServerPreparedStatement insertBulkPs = (SQLServerPreparedStatement) connection.prepareStatement(insertStbMenuSql)) {
for (StbMenuDTO stbMenuDto : stbMenus) {
insertBulkPs.setString(1, stbMenuDto.getCodOpz());
insertBulkPs.setString(2, stbMenuDto.getDescrizione());
insertBulkPs.setString(3, stbMenuDto.getCodParent());
if(stbMenuDto.getPos() != null) insertBulkPs.setInt(4, stbMenuDto.getPos());
else insertBulkPs.setObject(4, null);
insertBulkPs.setString(5, stbMenuDto.getTipoAzienda());
insertBulkPs.setString(6, stbMenuDto.getFlagAttivo());
insertBulkPs.setString(7, stbMenuDto.getUrlDescrizione());
if(stbMenuDto.getPosTipoAzienda() != null) insertBulkPs.setInt(8, stbMenuDto.getPosTipoAzienda());
else insertBulkPs.setObject(8, null);
if(stbMenuDto.getPosCliente() != null) insertBulkPs.setInt(9, stbMenuDto.getPosCliente());
else insertBulkPs.setObject(9, null);
insertBulkPs.setString(10, stbMenuDto.getDescrizioneEstesa());
insertBulkPs.addBatch();
}
insertBulkPs.executeLargeBatch();
}
}
executeStatement(connection, "ALTER TABLE azienda ADD CONSTRAINT FK_azienda_stb_tipo_azienda FOREIGN KEY (tipo_azienda) REFERENCES stb_tipo_azienda ( tipo_azienda )",
@@ -142,4 +194,10 @@ public class MenuConfigurationService {
connection.commit();
}
public void generate() throws Exception {
try (MultiDBTransactionManager studioMlMultiDb = new MultiDBTransactionManager("INTEGRY")) {
MenuStaticCreator.createMenu(studioMlMultiDb.getPrimaryConnection(), UtilityDirs.getDevelopmentMenusFolder());
}
}
}

View File

@@ -24,7 +24,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.reflections.Reflections;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.lang.reflect.Modifier;
@@ -32,8 +32,8 @@ import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MigrationService {
@Component
public class MigrationComponent {
private final Logger logger = LogManager.getLogger();
@@ -161,9 +161,12 @@ public class MigrationService {
.setSkipped(false);
stbMigrationStatus.setOperation(OperationType.INSERT);
} else {
stbMigrationStatus.setCompleted(true)
.setSkipped(false)
.setErrorMessage(EmsRestConstants.NULL);
stbMigrationStatus
.setCompleted(true);
if (UtilityDebug.isDebugExecution())
stbMigrationStatus
.setErrorMessage(EmsRestConstants.NULL);
stbMigrationStatus.setOperation(OperationType.UPDATE);
}

View File

@@ -1,22 +1,30 @@
package it.integry.ems.migration._base;
import com.fasterxml.jackson.core.type.TypeReference;
import it.integry.ems.migration.dto.SqlObjectTypeEnum;
import it.integry.ems.schedule.new_cron_job.dto.operations.base_classes.BaseScheduledOperationDTO;
import it.integry.ems.schedule.new_cron_job.service.AutomatedOperationHandlerComponent;
import it.integry.ems.settings.Model.SettingsModel;
import it.integry.ems.settings.SettingsController;
import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource;
import it.integry.ems.utility.UtilityDebug;
import it.integry.ems_model.entity.Azienda;
import it.integry.ems_model.entity.StbGestSetup;
import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.rulescompleting.DroolsDataCompleting;
import it.integry.ems_model.types.ApplicationName;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bouncycastle.its.operator.ITSContentSigner;
import org.springframework.web.context.ContextLoader;
import java.io.IOException;
import java.sql.*;
import java.util.Arrays;
import java.util.List;
public abstract class BaseMigration implements MigrationModelInterface {
@@ -52,6 +60,10 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
protected void executeStatement(String... sqls) throws SQLException, IOException {
executeStatement(advancedDataSource.getConnection(), sqls);
}
protected void executeStatement(Connection connection, String... sqls) throws SQLException {
Statement statement = connection.createStatement();
@@ -62,32 +74,10 @@ public abstract class BaseMigration implements MigrationModelInterface {
statement.close();
}
protected boolean existsColumn(Connection connection, String tableName, String columnName) throws SQLException {
String sql = Query.format("SELECT 1 FROM sys.columns\n" +
" WHERE Name = N{}\n" +
" AND Object_ID = Object_ID(N{})", columnName, "dbo." + tableName);
Integer val = UtilityDB.<Integer>executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
return val != null && val == 1;
}
protected void renameColumn(Connection connection, String tableName, String oldColumnname, String newColumnName) throws SQLException {
String sql = "exec sp_rename 'dbo." + tableName + "." + oldColumnname + "', " + newColumnName + ", 'COLUMN'";
executeStatement(connection, sql);
}
protected boolean existsTable(Connection connection, String tableName) throws SQLException {
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) AS exist FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N%s", tableName);
return UtilityDB.<Boolean>executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
protected long executeInsertStatement(Connection connection, String sql) throws SQLException {
protected long executeInsertStatement(String sql) throws SQLException {
long generatedId = -1;
try (PreparedStatement pstmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
try (PreparedStatement pstmt = advancedDataSource.getConnection().prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
int affectedRows = pstmt.executeUpdate();
@@ -99,51 +89,235 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return generatedId;
}
public void updateFunction(Connection connection, String sql) throws SQLException {
executeStatement(connection, sql);
protected void createOrUpdateFunction(String objectName, String createFunctionSql) throws SQLException, IOException {
alterObject(SqlObjectTypeEnum.FUNCTION, objectName, createFunctionSql);
}
protected void dropTable(Connection connection, String tableName) throws SQLException {
protected void createOrUpdateView(String objectName, String createViewSql) throws SQLException, IOException {
alterObject(SqlObjectTypeEnum.VIEW, objectName, createViewSql);
}
protected void createOrUpdateProcedure(String objectName, String createProcedureSql) throws SQLException, IOException {
alterObject(SqlObjectTypeEnum.PROCEDURE, objectName, createProcedureSql);
}
protected void createOrUpdateTrigger(String objectName, String createTriggerSql) throws SQLException, IOException {
alterObject(SqlObjectTypeEnum.TRIGGER, objectName, createTriggerSql);
}
private void alterObject(SqlObjectTypeEnum sqlObject, String objectName, String sql) throws SQLException, IOException {
executeStatement("IF EXISTS (SELECT * FROM SYSOBJECTS WHERE id = object_id('" + objectName + "'))\r\n" +
"\tDROP " + sqlObject.toString() + " " + objectName,
sql);
}
protected boolean existsColumn(String tableName, String columnName) throws SQLException, IOException {
String schema = null;
if (tableName.contains(".")) {
schema = tableName.substring(0, tableName.indexOf("."));
tableName = tableName.replace(schema + ".", "");
}
String sql = Query.format("SELECT 1 FROM sys.columns\n" +
" WHERE Name = N{}\n" +
" AND Object_ID = Object_ID(N{})", columnName, (schema != null ? schema : "dbo") + "." + tableName);
Integer val = UtilityDB.<Integer>executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
return val != null && val == 1;
}
protected void renameColumn(String tableName, String oldColumnname, String newColumnName) throws SQLException, IOException {
String sql = "exec sp_rename 'dbo." + tableName + "." + oldColumnname + "', " + newColumnName + ", 'COLUMN'";
executeStatement(sql);
}
protected void dropColumn(String tableName, String columnName) throws SQLException, IOException {
executeStatement("EXEC DropDefault '" + tableName + "', '" + columnName + "'",
"ALTER TABLE " + tableName + " DROP COLUMN " + columnName);
}
protected <T> void addDefault(String tableName, String columnName, T defaultValue) throws SQLException, IOException {
boolean existDefault = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(),
Query.format("SELECT CAST(COUNT(*) AS BIT)\n" +
"FROM sys.syscolumns\n" +
"WHERE name = %s\n" +
" AND OBJECT_NAME(id) = %s\n" +
" AND cdefault <> 0", columnName, tableName));
if (!existDefault)
executeStatement(Query.format("ALTER TABLE dbo." + tableName + " ADD DEFAULT (%s) FOR "+ columnName, defaultValue));
}
protected boolean existsTable(String tableName) throws SQLException, IOException {
String schema = null;
if (tableName.contains(".")) {
schema = tableName.substring(0, tableName.indexOf("."));
tableName = tableName.replace(schema + ".", "");
}
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) AS exist FROM INFORMATION_SCHEMA.TABLES " +
"WHERE TABLE_NAME = N%s ", tableName);
if (schema != null)
sql += Query.format("AND TABLE_SCHEMA = N%s", schema);
return UtilityDB.<Boolean>executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
}
protected void dropTable(String tableName) throws SQLException, IOException {
String dropSql = "DROP TABLE " + tableName;
executeStatement(connection, dropSql);
executeStatement(dropSql);
}
protected void createSetupQuery(String codQuery, String name, String query, boolean override) throws SQLException, IOException {
if (UtilityString.isNullOrEmpty(codQuery)) {
executeStatement(Query.format("EXEC sp_insertQuerySetup %s", query));
return;
}
String sql = Query.format("SELECT cast(count(*) as bit) FROM stb_gest_setup_query WHERE cod_query = %s", codQuery);
boolean existQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
protected void createSetup(Connection connection, String gestName, String section, String keySection, String value, String description, String codQuery) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
.setSection(section)
.setKeySection(keySection)
.setValue(value)
.setDescription(description)
.setQueryDefault(codQuery);
stbGestSetup.setOperation(OperationType.INSERT);
stbGestSetup.manageWithParentConnection(connection);
if ( existQuery )
executeStatement(Query.format("UPDATE stb_gest_setup_query SET query_default = %S, description = %S WHERE cod_query = %s ",
query, name, codQuery));
else
executeStatement(Query.format("INSERT INTO stb_gest_setup_query (cod_query, query_default, description)"+
" VALUES (%s, %s, %s);", codQuery, query, name));
}
protected boolean existsSetup(String gestName, String section, String keySection) throws SQLException, IOException {
String sql = Query.format("SELECT CAST(COUNT(*) AS BIT) AS exist FROM " + StbGestSetup.ENTITY +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
}
protected void deleteSetup(Connection connection, String gestName, String section, String keySection) throws Exception {
protected void createSetup(String gestName, String section, String keySection, String value, String description, String codQuery) throws Exception {
if (existsSetup(gestName, section, keySection))
return;
String insertSql = "INSERT INTO " + StbGestSetup.ENTITY +
"(gest_name, section, key_section, value, description, query_default) VALUES (?, ?, ?, ?, ?, ?)";
try (PreparedStatement ps = advancedDataSource.getConnection().prepareStatement(insertSql)) {
ps.setString(1, gestName);
ps.setString(2, section);
ps.setString(3, keySection);
ps.setString(4, value);
ps.setString(5, description);
ps.setString(6, codQuery);
ps.executeUpdate();
}
}
protected void createSetup(String gestName, String section, String keySection, String value, String description, String codQuery, boolean flagMultiValue) throws Exception {
if (existsSetup(gestName, section, keySection))
return;
String insertSql = "INSERT INTO " + StbGestSetup.ENTITY +
"(gest_name, section, key_section, value, description, query_default, flag_multi_value) VALUES (?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement ps = advancedDataSource.getConnection().prepareStatement(insertSql)) {
ps.setString(1, gestName);
ps.setString(2, section);
ps.setString(3, keySection);
ps.setString(4, value);
ps.setString(5, description);
ps.setString(6, codQuery);
ps.setBoolean(7, flagMultiValue);
ps.executeUpdate();
}
}
protected void createSetup(String gestName, String section, String keySection, String value, String description, String codQuery, boolean flagMultiValue, boolean flagSetupUserWeb) throws Exception {
if (existsSetup(gestName, section, keySection))
return;
String insertSql = "INSERT INTO " + StbGestSetup.ENTITY +
"(gest_name, section, key_section, value, description, query_default, flag_multi_value, flag_setup_user_web) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement ps = advancedDataSource.getConnection().prepareStatement(insertSql)) {
ps.setString(1, gestName);
ps.setString(2, section);
ps.setString(3, keySection);
ps.setString(4, value);
ps.setString(5, description);
ps.setString(6, codQuery);
ps.setBoolean(7, flagMultiValue);
ps.setString(8, flagSetupUserWeb ? "S" : "N");
ps.executeUpdate();
}
}
protected void createSetup(String gestName, String section, String keySection, String value, String description, boolean flagSync,
String codQuery, boolean flagUserView, boolean flagSetupDepo, boolean flagSetupUserWeb,
boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue ) throws Exception {
createSetup(gestName, section,keySection, value, description, flagSync, codQuery, flagUserView, flagSetupDepo,
flagSetupUserWeb, flagTipoJson, flagTipoColore, tipoSetup, flagMultiValue, null);
}
protected void createSetup(String gestName, String section, String keySection, String value, String description, boolean flagSync,
String codQuery, boolean flagUserView, boolean flagSetupDepo, boolean flagSetupUserWeb,
boolean flagTipoJson, boolean flagTipoColore, String tipoSetup, boolean flagMultiValue,
String query) throws Exception {
if (existsSetup(gestName, section, keySection))
return;
if (!UtilityString.isNullOrEmpty(query) && UtilityString.isNullOrEmpty(codQuery)) {
codQuery = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(),
Query.format("SELECT cod_query FROM stb_gest_setup_query WHERE cod_query = %s", query));
}
String insertSql = "INSERT INTO " + StbGestSetup.ENTITY +
" (gest_name, section, key_section, value, description, flag_sync, query_default,\n" +
"flag_user_view, flag_setup_depo, flag_setup_user_web,\n" +
"flag_tipo_json, flag_tipo_colore, tipo_setup, flag_multi_value) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement ps = advancedDataSource.getConnection().prepareStatement(insertSql)) {
ps.setString(1, gestName);
ps.setString(2, section);
ps.setString(3, keySection);
ps.setString(4, value);
ps.setString(5, description);
ps.setString(6, (flagSync?"S":"N"));
ps.setString(7, codQuery);
ps.setString(8, (flagUserView?"S":"N"));
ps.setString(9, (flagSetupDepo?"S":"N"));
ps.setString(10, (flagSetupUserWeb?"S":"N"));
ps.setString(11, (flagTipoJson?"S":"N"));
ps.setString(12, (flagTipoColore?"S":"N"));
ps.setString(13, tipoSetup);
ps.setBoolean(14, flagMultiValue);
ps.executeUpdate();
}
}
protected void deleteSetup(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);
stbGestSetup.manageWithParentConnection(advancedDataSource.getConnection());
}
protected void updateSetupValue(Connection connection, String gestName, String section, String keySection, String newValue) throws Exception {
protected void updateSetupValue(String gestName, String section, String keySection, String newValue) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)
.setSection(section)
@@ -151,9 +325,10 @@ public abstract class BaseMigration implements MigrationModelInterface {
.setValue(newValue);
stbGestSetup.setOperation(OperationType.UPDATE);
stbGestSetup.manageWithParentConnection(connection);
stbGestSetup.manageWithParentConnection(advancedDataSource.getConnection());
}
protected void addAutomatedOperation(BaseScheduledOperationDTO operation) {
new Thread(() -> {
try {
@@ -182,4 +357,33 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
}).start();
}
protected boolean isCustomer(IntegryCustomer... customers) {
String currentDbName = advancedDataSource.getDataSource().getDbName();
return Arrays.stream(customers)
.anyMatch(x ->
Arrays.stream(x.getValues())
.anyMatch(y -> y.getValue().equalsIgnoreCase(currentDbName)));
}
protected boolean isCustomerDb(IntegryCustomerDB... customersDbs) {
String currentDbName = advancedDataSource.getDataSource().getDbName();
return Arrays.stream(customersDbs)
.anyMatch(y -> y.getValue().equalsIgnoreCase(currentDbName));
}
protected boolean isWingest() throws SQLException, IOException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
Azienda currentAzienda = Azienda.getDefaultAzienda(advancedDataSource.getConnection());
return currentAzienda.getApplicationNameEnum() == ApplicationName.WINGEST;
}
protected boolean isTextiles() throws SQLException, IOException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
Azienda currentAzienda = Azienda.getDefaultAzienda(advancedDataSource.getConnection());
return currentAzienda.getApplicationNameEnum() == ApplicationName.TEXTILES;
}
}

View File

@@ -0,0 +1,130 @@
package it.integry.ems.migration._base;
public enum IntegryCustomer {
Agricoper(IntegryCustomerDB.Agricoper_Agricoper,
IntegryCustomerDB.Agricoper_IlVisone,
IntegryCustomerDB.Agricoper_Luva),
Auricchio(IntegryCustomerDB.Auricchio_Auricchio,
IntegryCustomerDB.Auricchio_AuricchioMiki,
IntegryCustomerDB.Auricchio_AuricchioSrl,
IntegryCustomerDB.Auricchio_Ind01,
IntegryCustomerDB.Auricchio_Ind02,
IntegryCustomerDB.Auricchio_Ind04,
IntegryCustomerDB.Auricchio_Ind05,
IntegryCustomerDB.Auricchio_AuricchioSons),
Biolevante(IntegryCustomerDB.Biolevante_Biolevante),
Carelli(IntegryCustomerDB.Carelli_Carelli,
IntegryCustomerDB.Carelli_GestFood,
IntegryCustomerDB.Carelli_Chiuso,
IntegryCustomerDB.Carelli_Format,
IntegryCustomerDB.Carelli_Murgia,
IntegryCustomerDB.Carelli_Panimal,
IntegryCustomerDB.Carelli_Winact,
IntegryCustomerDB.Carelli_Csgr),
Cosmapack(IntegryCustomerDB.Cosmapack_Cosmint,
IntegryCustomerDB.Cosmapack_MrSolution),
Didonna(
IntegryCustomerDB.Didonna_Didonna,
IntegryCustomerDB.Didonna_AADidonna,
IntegryCustomerDB.Didonna_Badessa,
IntegryCustomerDB.Didonna_DidonnaBio,
IntegryCustomerDB.Didonna_FlliDidonna,
IntegryCustomerDB.Didonna_Messapi,
IntegryCustomerDB.Didonna_Nicola,
IntegryCustomerDB.Didonna_OpDidonna,
IntegryCustomerDB.Didonna_Piervito,
IntegryCustomerDB.Didonna_Pietro,
IntegryCustomerDB.Didonna_SanGiuliano,
IntegryCustomerDB.Didonna_Treddi,
IntegryCustomerDB.Didonna_SanGiuseppe,
IntegryCustomerDB.Didonna_Mediimpex,
IntegryCustomerDB.Didonna_Raffaella,
IntegryCustomerDB.Didonna_Diba,
IntegryCustomerDB.Didonna_MediimpexLiq,
IntegryCustomerDB.Didonna_DibaLiq),
DolceBonta(IntegryCustomerDB.DolceBonta_DolceBo,
IntegryCustomerDB.DolceBonta_Emanuela),
Dulciar(IntegryCustomerDB.Dulciar_Dulciar,
IntegryCustomerDB.Dulciar_Lanciok),
Fiume(IntegryCustomerDB.Fiume_Alambicco,
IntegryCustomerDB.Fiume_Licor,
IntegryCustomerDB.Fiume_LicorFood),
Florapulia(IntegryCustomerDB.Florapulia_Immobiliare,
IntegryCustomerDB.Florapulia_ImmobiliareSrl,
IntegryCustomerDB.Florapulia_Florapulia,
IntegryCustomerDB.Florapulia_FlorapuliaSrl,
IntegryCustomerDB.Florapulia_PaparellaP,
IntegryCustomerDB.Florapulia_PaparellaPietro,
IntegryCustomerDB.Florapulia_PaparellaD),
FolliesGroup(IntegryCustomerDB.FolliesGroup_FolliesGroup),
Frudis(IntegryCustomerDB.Frudis_Frudis),
Gramm(IntegryCustomerDB.Gramm_Gramm,
IntegryCustomerDB.Gramm_PrimeOlive,
IntegryCustomerDB.Gramm_ProveStage),
Idrotecnica(IntegryCustomerDB.Idrotecnica_Idrotecnica),
Igood(IntegryCustomerDB.Igood_Igood,
IntegryCustomerDB.Igood_ShopService),
Ime(IntegryCustomerDB.Ime_ImeTe),
Ivr(IntegryCustomerDB.Ivr_Vetta, IntegryCustomerDB.Ivr_Varci),
Lamonarca(IntegryCustomerDB.Lamonarca_Lamonarca),
Levanplast(IntegryCustomerDB.Levanplast_Levanplast,
IntegryCustomerDB.Levanplast_Perilflor,
IntegryCustomerDB.Levanplast_PerilflorSrl),
Maggio(IntegryCustomerDB.Maggio_MaggioSrl,
IntegryCustomerDB.Maggio_GiovMaggio),
Materica(IntegryCustomerDB.Materica_ImeBa),
MFI(IntegryCustomerDB.MFI_FashionGroup),
Midel(IntegryCustomerDB.Midel_Midel),
Morgante(IntegryCustomerDB.Morgante_Morgante),
ResinaColor(IntegryCustomerDB.ResinaColor_ResinaColor),
RistoCash(IntegryCustomerDB.RistoCash_RistoCash),
RossoGargano(IntegryCustomerDB.RossoGargano_RossoGargano),
Salpar(IntegryCustomerDB.Salpar_AlfaImmobiliare,
IntegryCustomerDB.Salpar_MasabaSrl,
IntegryCustomerDB.Salpar_Salpar,
IntegryCustomerDB.Salpar_VgAlimenti),
Santoro(IntegryCustomerDB.Santoro_ApuliaEngineering),
SaporiVeri(IntegryCustomerDB.SaporiVeri_SaporiVeri,
IntegryCustomerDB.SaporiVeri_Dispensa),
Sardinya(IntegryCustomerDB.Sardinya_Daga,
IntegryCustomerDB.Sardinya_Demetra,
IntegryCustomerDB.Sardinya_Sarca,
IntegryCustomerDB.Sardinya_Sardinya),
Smetar(IntegryCustomerDB.Smetar_Smetar),
Suit(IntegryCustomerDB.Suit_BioSuit,
IntegryCustomerDB.Suit_CarniSardegna,
IntegryCustomerDB.Suit_Granlucano,
IntegryCustomerDB.Suit_Puglia,
IntegryCustomerDB.Suit_SantAntonio,
IntegryCustomerDB.Suit_Suit,
IntegryCustomerDB.Suit_TenutaArianna,
IntegryCustomerDB.Suit_Valpietro),
Tempesta(IntegryCustomerDB.Tempesta_Tempesta,
IntegryCustomerDB.Tempesta_VivaiTempesta),
Tosca(IntegryCustomerDB.Tosca_Ba,
IntegryCustomerDB.Tosca_Ce,
IntegryCustomerDB.Tosca_Cz,
IntegryCustomerDB.Tosca_Fc,
IntegryCustomerDB.Tosca_Mi,
IntegryCustomerDB.Tosca_Rg,
IntegryCustomerDB.Tosca_Rm,
IntegryCustomerDB.Tosca_Vr,
IntegryCustomerDB.Tosca_Cloud),
TwoBrothers(IntegryCustomerDB.TwoBrothers_TwoBrothers),
Vinella(IntegryCustomerDB.Vinella_Vinella,
IntegryCustomerDB.Vinella_VQuadro,
IntegryCustomerDB.Vinella_TeknoSport);
private final IntegryCustomerDB[] values;
IntegryCustomer(IntegryCustomerDB... values) {
this.values = values;
}
public IntegryCustomerDB[] getValues() {
return values;
}
}

View File

@@ -0,0 +1,200 @@
package it.integry.ems.migration._base;
public enum IntegryCustomerDB {
Agricoper_Agricoper("agricoper"),
Agricoper_IlVisone("ilvisone"),
Agricoper_Luva("ilvisone"),
Auricchio_Auricchio("auricchio"),
Auricchio_AuricchioMiki("auricchio_miki"),
Auricchio_AuricchioSrl("auricchiosrl"),
Auricchio_Ind01("ind01"),
Auricchio_Ind02("ind02"),
Auricchio_Ind04("ind04"),
Auricchio_Ind05("ind05"),
Auricchio_AuricchioSons("auricchiosons"),
Biolevante_Biolevante("biolevante"),
Carelli_Carelli("carelli"),
Carelli_GestFood("gestfood"),
Carelli_Chiuso("chiuso"),
Carelli_Format("format"),
Carelli_Murgia("murgia"),
Carelli_Panimal("panimal"),
Carelli_Winact("winact"),
Carelli_Csgr("csgr"),
Cosmapack_Cosmint("cosmint"),
Cosmapack_MrSolution("mrsolution"),
Didonna_Didonna("didonna"),
Didonna_AADidonna("aadidonna"),
Didonna_Badessa("badessa"),
Didonna_DidonnaBio("didonnabio"),
Didonna_FlliDidonna("fllididonna"),
Didonna_Messapi("messapi"),
Didonna_Nicola("nicola"),
Didonna_OpDidonna("opdidonna"),
Didonna_Piervito("piervito"),
Didonna_Pietro("pietro"),
Didonna_SanGiuliano("sangiuliano"),
Didonna_Treddi("treddi"),
Didonna_SanGiuseppe("sangiuseppe"),
Didonna_Mediimpex("mediimpex"),
Didonna_Raffaella("raffaella"),
Didonna_Diba("diba"),
Didonna_MediimpexLiq("mediimpexliq"),
Didonna_DibaLiq("dibaliq"),
DolceBonta_DolceBo("dolce_bo"),
DolceBonta_Emanuela("emanuela"),
Dulciar_Dulciar("dulciar"),
Dulciar_Lanciok("lanciok"),
Fiume_Alambicco("alambicco"),
Fiume_Licor("licor"),
Fiume_LicorFood("licorFood"),
Florapulia_Immobiliare("immobiliare"),
Florapulia_Florapulia("florapulia"),
Florapulia_FlorapuliaSrl("florapuliasrl"),
Florapulia_PaparellaP("paparellap"),
Florapulia_PaparellaPietro("paparellapietro"),
Florapulia_ImmobiliareSrl("immobiliaresrl"),
Florapulia_PaparellaD("paparellad"),
FolliesGroup_FolliesGroup("folliesgroup"),
Frudis_Frudis("frudis"),
Gramm_Gramm("gramm"),
Gramm_PrimeOlive("primeolive"),
Gramm_ProveStage("grammprovestage"),
Idrotecnica_Idrotecnica("idrotecnica"),
Igood_Igood("igood"),
Igood_ShopService("shop_service"),
Ime_ImeTe("ime_te"),
Ivr_Vetta("vetta"),
Ivr_Varci("varci"),
Lamonarca_Lamonarca("lamonarca"),
Levanplast_Perilflor("perilflor"),
Levanplast_PerilflorSrl("perilflorsrl"),
Levanplast_Levanplast("levanplast"),
Maggio_MaggioSrl("maggiosrl"),
Maggio_GiovMaggio("giovmaggio"),
Materica_ImeBa("ime_ba"),
MFI_FashionGroup("fashiongroup"),
Midel_Midel("midel"),
Morgante_Morgante("morgante"),
ResinaColor_ResinaColor("resinacolor"),
RistoCash_RistoCash("risto_cash"),
RossoGargano_RossoGargano("rossogargano"),
Salpar_VgAlimenti("vgalimenti"),
Salpar_Salpar("salpar"),
Salpar_MasabaSrl("masabasrl"),
Salpar_AlfaImmobiliare("alfaimmobiliare"),
Santoro_ApuliaEngineering("apuliaengineering"),
SaporiVeri_SaporiVeri("sapori_veri"),
SaporiVeri_Dispensa("dispensa"),
Sardinya_Sardinya("sardinya"),
Sardinya_Demetra("demetra"),
Sardinya_Daga("daga"),
Sardinya_Sarca("sarca"),
Smetar_Smetar("smetar"),
Suit_Suit("suit"),
Suit_SantAntonio("santantonio"),
Suit_BioSuit("biosuit"),
Suit_Granlucano("granlucano"),
Suit_Puglia("suit_puglia"),
Suit_TenutaArianna("tenuta_arianna"),
Suit_CarniSardegna("carni_sardegna"),
Suit_Valpietro("valpietro"),
Tempesta_Tempesta("tempesta"),
Tempesta_VivaiTempesta("vivaitempesta"),
Tosca_Ba("tosca_ba"),
Tosca_Cz("tosca_cz"),
Tosca_Rm("tosca_rm"),
Tosca_Mi("tosca_mi"),
Tosca_Ce("tosca_ce"),
Tosca_Vr("tosca_vr"),
Tosca_Rg("tosca_rg"),
Tosca_Fc("tosca_fc"),
Tosca_Cloud("tosca_cloud"),
TwoBrothers_TwoBrothers("twobrothers"),
Vinella_Vinella("vinella"),
Vinella_VQuadro("vquadro"),
Vinella_TeknoSport("teknosport");
private final String value;
IntegryCustomerDB(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}

View File

@@ -7,6 +7,10 @@ public class MigrationStatusDTO {
private MigrationStatusEnum status;
private String errorMessage;
public String getId() {
return this.profileDb + "-" + this.migrationCode;
}
public long getMigrationCode() {
return migrationCode;
}

View File

@@ -0,0 +1,8 @@
package it.integry.ems.migration.dto;
public enum SqlObjectTypeEnum {
VIEW,
FUNCTION,
PROCEDURE,
TRIGGER
}

View File

@@ -24,7 +24,7 @@ public class Migration_20221128123233 extends BaseMigration implements Migration
secretKeyToUse = Encoders.BASE64.encode(key.getEncoded());
}
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"ALTER TABLE azienda\n" +
" ADD jwt_secret_key VARCHAR(MAX)");

View File

@@ -10,7 +10,7 @@ public class Migration_20221128132717 extends BaseMigration implements Migration
if (isHistoryDB())
return;
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"CREATE TABLE dbo.stb_devices\n" +
"(\n" +
" id BIGINT IDENTITY\n" +

View File

@@ -11,7 +11,7 @@ public class Migration_20230406164731 extends BaseMigration implements Migration
if (isHistoryDB())
return;
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"UPDATE mtb_partita_mag_carat" +
" SET carat = 'qta-residua'" +
" WHERE carat = 'qta_residua'",

View File

@@ -20,8 +20,8 @@ public class Migration_20230411163906 extends BaseMigration implements Migration
MimeTypesHandler mimeTypesHandler = getContextBean(MimeTypesHandler.class);
if (!existsColumn(advancedDataSource.getConnection(), "stb_files_attached", "mime_type"))
executeStatement(advancedDataSource.getConnection(),
if (!existsColumn("stb_files_attached", "mime_type"))
executeStatement(
"ALTER TABLE stb_files_attached\n" +
" ADD mime_type VARCHAR(MAX)");

View File

@@ -10,7 +10,7 @@ public class Migration_20230414183851 extends BaseMigration implements Migration
if (isHistoryDB())
return;
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"ALTER TABLE stb_files_attached\n" +
" ADD ref_uuid1 VARCHAR(36)");
}

View File

@@ -10,7 +10,7 @@ public class Migration_20230419161529 extends BaseMigration implements Migration
if (isHistoryDB())
return;
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"ALTER TABLE stb_devices\n" +
" ADD created_at DATETIME",
"ALTER TABLE stb_devices\n" +

View File

@@ -18,7 +18,7 @@ public class Migration_20231201094005 extends BaseMigration implements Migration
boolean existColumn = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
if (!existColumn )
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"ALTER TABLE mtb_colt\n" +
" ADD id_lotto INT");

View File

@@ -50,7 +50,7 @@ public class Migration_20231201161808 extends BaseMigration implements Migration
for (String query : queries) {
System.out.println(query);
executeStatement(advancedDataSource.getConnection(), query);
executeStatement(query);
}
}

View File

@@ -43,7 +43,7 @@ public class Migration_20240125114347 extends BaseMigration implements Migration
for (String query : queries) {
System.out.println(query);
executeStatement(advancedDataSource.getConnection(), query);
executeStatement(query);
}
}

View File

@@ -26,7 +26,7 @@ public class Migration_20240201160125 extends BaseMigration implements Migration
" skipped BIT DEFAULT 0 NOT NULL\n" +
")";
executeStatement(advancedDataSource.getConnection(), createTable);
executeStatement(createTable);
}
@Override

View File

@@ -10,7 +10,7 @@ public class Migration_20240205105025 extends BaseMigration implements Migration
if (isHistoryDB())
return;
updateFunction(advancedDataSource.getConnection(), "ALTER FUNCTION [dbo].[f_getEAN128UL](@gestione VARCHAR(1), @dataCollo DATETIME, @serCollo VARCHAR(2), @numCollo int, @customPrefissoEan VARCHAR(7))\n" +
createOrUpdateFunction("f_getEAN128UL", "CREATE FUNCTION [dbo].[f_getEAN128UL](@gestione VARCHAR(1), @dataCollo DATETIME, @serCollo VARCHAR(2), @numCollo int, @customPrefissoEan VARCHAR(7))\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
"\n" +

View File

@@ -7,6 +7,7 @@ import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
@@ -25,7 +26,7 @@ public class Migration_20240212000000 extends BaseMigration implements Migration
sql = "SELECT * FROM stb_publications_detail";
final List<HashMap<String, Object>> oldStbPublicationsDetails = UtilityDB.executeSimpleQuery(advancedDataSource.getConnection(), sql);
dropOldTables(advancedDataSource.getConnection());
dropOldTables();
createNewTables(advancedDataSource.getConnection());
@@ -33,7 +34,7 @@ public class Migration_20240212000000 extends BaseMigration implements Migration
String publicationDescription = UtilityHashMap.getValueIfExists(oldStbPublication, "publication_description");
String insertSql = Query.format("INSERT INTO stb_publications (publication_description) VALUES (%s)", publicationDescription);
long generatedId = executeInsertStatement(advancedDataSource.getConnection(), insertSql);
long generatedId = executeInsertStatement(insertSql);
oldStbPublication.putIfAbsent("id", generatedId);
}
@@ -58,7 +59,7 @@ public class Migration_20240212000000 extends BaseMigration implements Migration
active.equalsIgnoreCase("S") || active.equalsIgnoreCase("R"),
whereCond,
true);
long generatedId = executeInsertStatement(advancedDataSource.getConnection(), insertSql);
long generatedId = executeInsertStatement(insertSql);
oldStbPublicationDetail.putIfAbsent("id", generatedId);
}
}
@@ -69,9 +70,9 @@ public class Migration_20240212000000 extends BaseMigration implements Migration
}
private void dropOldTables(@NotNull Connection connection) throws SQLException {
dropTable(connection, "stb_publications_detail");
dropTable(connection, "stb_publications");
private void dropOldTables() throws SQLException, IOException {
dropTable("stb_publications_detail");
dropTable("stb_publications");
}
private void createNewTables(@NotNull Connection connection) throws SQLException {

View File

@@ -10,11 +10,11 @@ public class Migration_20240212000001 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if(!existsTable(advancedDataSource.getConnection(), "stb_transaction_log_db"))
if(!existsTable("stb_transaction_log_db"))
return;
dropTable(advancedDataSource.getConnection(), "stb_transaction_log_db");
dropTable(advancedDataSource.getConnection(), "stb_transaction_log");
dropTable("stb_transaction_log_db");
dropTable("stb_transaction_log");
String createTransactionTableSql = "\n" +
"CREATE TABLE dbo.stb_transaction_log\n" +
@@ -30,7 +30,7 @@ public class Migration_20240212000001 extends BaseMigration implements Migration
" group_id BIGINT NOT NULL\n" +
")";
executeStatement(advancedDataSource.getConnection(), createTransactionTableSql);
executeStatement(createTransactionTableSql);
}
@Override

View File

@@ -13,7 +13,7 @@ public class Migration_20240212000002 extends BaseMigration implements Migration
String sql = "ALTER TABLE dbo.stb_publications_detail\n" +
" ADD export_history BIT DEFAULT 0 NOT NULL";
executeStatement(advancedDataSource.getConnection(), sql);
executeStatement(sql);
}
@Override

View File

@@ -13,7 +13,7 @@ public class Migration_20240219094933 extends BaseMigration implements Migration
String sql = "ALTER TABLE mtb_colt\n" +
" ADD barcode_ul VARCHAR(20)";
executeStatement(advancedDataSource.getConnection(), sql);
executeStatement(sql);
}
@Override

View File

@@ -10,8 +10,7 @@ public class Migration_20240219103840 extends BaseMigration implements Migration
if (isHistoryDB())
return;
createSetup(advancedDataSource.getConnection(),
"PICKING", "ACCETTAZIONE", "FLAG_ALLOW_BARCODE_FORNITORE", "N",
createSetup("PICKING", "ACCETTAZIONE", "FLAG_ALLOW_BARCODE_FORNITORE", "N",
"Abilita la possibilità di effettuare l'accettazione merci utilizzando direttamente l'SSCC del fornitore (salvato poi nella colonna barcode_pedana)",
"SI_NO");
}

View File

@@ -16,7 +16,7 @@ public class Migration_20240220114903 extends BaseMigration implements Migration
"ALTER TABLE mtb_colr\n" +
" ADD DEFAULT 0 FOR causale;";
executeStatement(advancedDataSource.getConnection(), sql);
executeStatement(sql);
}
@Override

View File

@@ -10,13 +10,11 @@ public class Migration_20240221190821 extends BaseMigration implements Migration
if (isHistoryDB())
return;
createSetup(advancedDataSource.getConnection(),
"DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "N",
createSetup("DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "N",
"Abilita l'ansi padding nella connessione del gestionale. Il valore suggerito è ON (prima era OFF).",
"SI_NO");
createSetup(advancedDataSource.getConnection(),
"DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "N",
createSetup("DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "N",
"Abilita il concat null yields null nella connessione del gestionale. Il valore suggerito è ON (prima era OFF).",
"SI_NO");
}

View File

@@ -10,10 +10,10 @@ public class Migration_20240228160024 extends BaseMigration implements Migration
if (isHistoryDB())
return;
dropTable(advancedDataSource.getConnection(), "stb_subscriptions_user_detail");
dropTable(advancedDataSource.getConnection(), "stb_subscriptions_user");
dropTable("stb_subscriptions_user_detail");
dropTable("stb_subscriptions_user");
executeStatement(advancedDataSource.getConnection(),
executeStatement(
"CREATE TABLE dbo.stb_remote_subscription\n" +
"(\n" +

View File

@@ -2,7 +2,6 @@ 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.UtilityDB;
public class Migration_20240304165725 extends BaseMigration implements MigrationModelInterface {
@@ -19,7 +18,7 @@ public class Migration_20240304165725 extends BaseMigration implements Migration
"SET tipo_car = 'R'\n" +
"WHERE tipo_car = 'C'";
executeStatement(advancedDataSource.getConnection(), sql);
executeStatement(sql);
}
}

View File

@@ -1,11 +1,9 @@
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 java.util.ArrayList;
import java.util.List;
public class Migration_20240307123633 extends BaseMigration implements MigrationModelInterface {
@Override
@@ -13,16 +11,13 @@ public class Migration_20240307123633 extends BaseMigration implements Migration
if (isHistoryDB())
return;
List<String> elencoDb = new ArrayList<String>() {{
add("CARELLI");
add("GESTFOOD");
add("PANIMAL");
}};
if (elencoDb.stream().noneMatch(x -> x.equalsIgnoreCase(advancedDataSource.getDataSource().getDbName())))
if (!isCustomerDb(
IntegryCustomerDB.Carelli_Carelli,
IntegryCustomerDB.Carelli_GestFood,
IntegryCustomerDB.Carelli_Panimal))
return;
executeStatement(advancedDataSource.getConnection(), "UPDATE vtb_promo SET flag_tipo_promo = 'T' WHERE cod_promo like '%TAGLIO%'");
executeStatement("UPDATE vtb_promo SET flag_tipo_promo = 'T' WHERE cod_promo like '%TAGLIO%'");
}
@Override

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_20240311102717 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PICKING", "ACCETTAZIONE_BOLLA", "FLAG_USE_QTA_ORD", "S",
"Questo flag permette, durante il picking, di proporre automaticamente la qta ordinata al posto del valore di default di 1 confezione",
"SI_NO");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,59 @@
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.Query;
import it.integry.ems_model.utility.UtilityDB;
import java.sql.Statement;
public class Migration_20240312093539 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String tableName = "wtb_jrept_setup";
boolean existTable = existsTable(tableName);
if (existTable) {
boolean existRow = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), "SELECT cast(count(*) as bit) FROM " + tableName);
if (existRow) return;
dropTable(tableName);
}
String createSql = "create table wtb_jrept_setup\n" +
"(\n" +
" id bigint identity\n" +
" constraint wtb_jrept_setup_pk\n" +
" primary key,\n" +
" report_id bigint not null\n" +
" constraint wtb_jrept_setup_wtb_jrept_id_fk\n" +
" references wtb_jrept,\n" +
" cod_mdep varchar(5)\n" +
" constraint wtb_jrept_setup_mtb_depo_cod_mdep_fk\n" +
" references mtb_depo,\n" +
" cod_anag varchar(5)\n" +
" constraint wtb_jrept_setup_gtb_anag_cod_anag_fk\n" +
" foreign key (cod_anag) references gtb_anag," +
" tipo int not null,\n" +
" printer_name varchar(255),\n" +
" print_quantity int default 1 not null,\n" +
" orientation int default 0 not null\n" +
")";
executeStatement(advancedDataSource.getConnection(), createSql);
String createIndex = "create unique index wtb_jrept_setup_cod_mdep_tipo_cod_anag_uindex" +
" on wtb_jrept_setup (cod_mdep, tipo, cod_anag)";
executeStatement(advancedDataSource.getConnection(), createIndex);
}
@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_20240312161313 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = "N";
if (isCustomerDb(IntegryCustomerDB.Gramm_Gramm)){
value = "S";
}
createSetup("PICKING", "SETUP", "FLAG_WARNING_NEW_PARTITA_MAG", value,
"Questo flag permette di avvisare l'utente se è stato inserito un nuovo lotto per quell'articolo",
"SI_NO");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,128 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240312175552 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("MES_MachineStatusByOrder", "CREATE VIEW MES_MachineStatusByOrder AS\n" +
"WITH base AS (\n" +
" SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" id_riga,\n" +
" data_mov,\n" +
" ISNULL(LEAD(data_mov)\n" +
" OVER (PARTITION BY cod_cmac, data_ord, num_ord, gestione ORDER BY id_riga),\n" +
" DATEADD(MINUTE, 1, data_mov)) AS data_mov_fine,\n" +
" cod_cmac,\n" +
" CASE WHEN evento <> 'START' THEN 'STOP' ELSE evento END as evento,\n" +
" evento AS causale,\n" +
" descrizione,\n" +
" qta_mov,\n" +
" num_fase,\n" +
" activity_id\n" +
" FROM dtb_ord_macc\n" +
"),\n" +
"\n" +
" statuses AS (\n" +
" SELECT cod_cmac,\n" +
" id_riga,\n" +
" LAG(evento)\n" +
" OVER (PARTITION BY cod_cmac, data_ord, num_ord, gestione ORDER BY id_riga) AS prev_evento,\n" +
" evento,\n" +
" num_ord,\n" +
" data_ord,\n" +
" gestione,\n" +
" data_mov,\n" +
" data_mov_fine,\n" +
" CASE\n" +
" WHEN MAX(id_riga) OVER ( PARTITION BY cod_cmac, data_ord, num_ord, gestione ) = id_riga\n" +
" THEN evento END AS last_evento\n" +
" FROM base\n" +
" WHERE DATEDIFF(MINUTE, data_mov, data_mov_fine) > 0\n" +
" ),\n" +
" steps AS (\n" +
" SELECT data_ord,\n" +
" num_ord,\n" +
" gestione,\n" +
" MIN(data_iniz) AS data_iniz,\n" +
" MAX(ISNULL(data_fine, GETDATE())) AS data_fine,\n" +
" cod_jfas\n" +
" FROM dtb_ord_steps\n" +
" WHERE data_iniz IS NOT NULL\n" +
" GROUP BY data_ord, num_ord, gestione, cod_jfas\n" +
" ),\n" +
" advanced_statuses AS (\n" +
" SELECT statuses.cod_cmac,\n" +
" statuses.id_riga,\n" +
" statuses.prev_evento,\n" +
" statuses.evento,\n" +
" MAX(last_evento)\n" +
" OVER ( PARTITION BY statuses.cod_cmac, statuses.data_ord, statuses.num_ord, statuses.gestione) AS last_evento,\n" +
" CASE\n" +
" WHEN statuses.evento = 'START' AND ISNULL(statuses.prev_evento, '') <> 'START' THEN 1\n" +
" ELSE\n" +
" CASE\n" +
" WHEN statuses.evento <> 'START' AND ISNULL(statuses.prev_evento, '') = 'START' THEN -1\n" +
" ELSE 0 END\n" +
" END AS value,\n" +
" DATEADD(MINUTE, DATEDIFF(MINUTE, 0, ISNULL(statuses.data_mov, steps.data_iniz)),\n" +
" 0) as data_mov,\n" +
" DATEADD(MINUTE, DATEDIFF(MINUTE, 0, ISNULL(statuses.data_mov_fine, steps.data_fine)),\n" +
" 0) as data_mov_fine,\n" +
" statuses.num_ord,\n" +
" statuses.data_ord,\n" +
" statuses.gestione,\n" +
" steps.cod_jfas\n" +
" FROM statuses\n" +
" INNER JOIN steps ON statuses.num_ord = steps.num_ord\n" +
" AND statuses.data_ord = steps.data_ord\n" +
" AND statuses.gestione = steps.gestione\n" +
" ),\n" +
" grouped_events AS (\n" +
" SELECT cod_cmac,\n" +
" evento,\n" +
" value,\n" +
" SUM(ABS(value))\n" +
" OVER (PARTITION BY cod_cmac, num_ord, data_ord, gestione ORDER BY cod_cmac, num_ord, data_ord, gestione, data_mov\n" +
" ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS event_groups,\n" +
" data_mov,\n" +
" data_mov_fine,\n" +
" DATEDIFF(SECOND, data_mov, data_mov_fine) AS duration_seconds,\n" +
" DATEDIFF(MINUTE, data_mov, data_mov_fine) AS duration_minutes,\n" +
" num_ord,\n" +
" data_ord,\n" +
" gestione,\n" +
" cod_jfas\n" +
" FROM advanced_statuses\n" +
" WHERE DATEDIFF(MINUTE, data_mov, data_mov_fine) > 0\n" +
" )\n" +
"\n" +
"SELECT cod_cmac,\n" +
" evento,\n" +
" value,\n" +
" MIN(data_mov) AS data_mov_iniz,\n" +
" MAX(data_mov_fine) AS data_mov_fine,\n" +
" SUM(duration_minutes) AS duration_minutes,\n" +
" num_ord,\n" +
" data_ord,\n" +
" gestione,\n" +
" cod_jfas\n" +
"FROM grouped_events\n" +
"group by cod_cmac, evento, value, event_groups, num_ord, data_ord, gestione, cod_jfas");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import java.sql.Statement;
public class Migration_20240313163623 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!existsColumn("stb_gest_setup", "flag_multi_value")) {
executeStatement("ALTER TABLE stb_gest_setup ADD flag_multi_value BIT DEFAULT 0");
}
createSetup("PVM", "PIAN_ACC_ROSSG", "TIPI_FORN_ACQ", null,
"Identifica i tipi di fornitore su cui è possibile creare un ordine di acquisto per la materia prima.",
"COD_ATIP", true);
createSetup(
"PVM", "PIAN_ACC_ROSSG", "COD_MGRP_MP", null,
"Identifica i gruppi merceologici di materia prima per cui è possibile creare un ordine di acquisto",
"COD_MGRP", true);
}
@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_20240314133221 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("TIPI_DEPO", "Tipi deposito", "SELECT cod_tipo_depo FROM mtb_depo_tipi", true);
createSetup("PVM", "PIAN_ACC_ROSSG", "TIPI_DEPO_LAV", null,
"Identifica i tipi di deposito dove è possibile far arrivare la materia prima per la produzione.",
"TIPI_DEPO", true);
}
@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_20240314135021 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
final String gestName = "IMPORT_LISTINI ACQUISTO";
final String section = "APULIA_CARREFOUR";
createSetup(gestName, section, "PREZZO_NETTO", "S",
"Importazione prezzo netto dai listini di apulia.",
"SI_NO", true);
deleteSetup(gestName, section, "PREZZO_NETTO_NETTO");
}
@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.MigrationModelInterface;
public class Migration_20240314141529 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (existsTable("dbo.mtb_lisa_apulia_succ")) {
if (!existsColumn("dbo.mtb_lisa_apulia_succ", "perc_premio"))
executeStatement("ALTER TABLE mtb_lisa_apulia_succ ADD perc_premio numeric(5,2)");
if (!existsColumn("dbo.mtb_lisa_apulia_succ", "val_premio"))
executeStatement("ALTER TABLE mtb_lisa_apulia_succ ADD val_premio numeric(20,5)");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,134 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240315132158 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getTreeViewMenu", "CREATE FUNCTION [dbo].[getTreeViewMenu]( @tipoazienda VARCHAR(40))\n" +
" RETURNS\n" +
" @treeviewmenu TABLE\n" +
" (\n" +
" cod_opz VARCHAR(5),\n" +
" descrizione VARCHAR(255),\n" +
" cod_parent VARCHAR(5),\n" +
" gest_name VARCHAR(40),\n" +
" entity_name VARCHAR(40),\n" +
" type VARCHAR(5),\n" +
" picture_menu VARCHAR(1024),\n" +
" picture_select VARCHAR(1024),\n" +
" pos INT,\n" +
" tipo_azienda VARCHAR(40),\n" +
" flag_attivo VARCHAR(1),\n" +
" descrizione_estesa IMAGE,\n" +
" url_descrizione VARCHAR(1024),\n" +
" object_type VARCHAR(5),\n" +
" flag_printer_setup VARCHAR(1),\n" +
" parameter VARCHAR(255),\n" +
" note VARCHAR(255),\n" +
" open_type VARCHAR(1),\n" +
" pos_tipo_azienda INT,\n" +
" pos_cliente INT\n" +
" ) AS\n" +
" BEGIN \n" +
" WITH opzioni (cod_opz, descrizione, cod_parent, gest_name, entity_name, type,\n" +
" picture_menu, picture_select, pos, tipo_azienda, flag_attivo, descrizione_estesa,\n" +
" url_descrizione, object_type, flag_printer_setup, parameter, note, open_type,\n" +
" pos_tipo_azienda, pos_cliente, ordinamento) AS\n" +
" (SELECT menu.cod_opz,\n" +
" menu.descrizione,\n" +
" menu.cod_parent,\n" +
" opz.gest_name,\n" +
" opz.entity_name,\n" +
" CASE WHEN opz.object_type = 'D' THEN 'S' ELSE 'F' END AS type,\n" +
" opz.picture_menu,\n" +
" opz.picture_select,\n" +
" menu.pos,\n" +
" menu.tipo_azienda,\n" +
" menu.flag_attivo,\n" +
" menu.descrizione_estesa,\n" +
" menu.url_descrizione,\n" +
" opz.object_type,\n" +
" opz.flag_printer_setup,\n" +
" opz.parameter,\n" +
" opz.note,\n" +
" opz.open_type,\n" +
" menu.pos_tipo_azienda,\n" +
" menu.pos_cliente,\n" +
" CAST(CAST(menu.pos AS BINARY(15)) + CAST(menu.cod_parent AS BINARY(15)) +\n" +
" CAST(menu.cod_opz AS BINARY(15)) AS VARBINARY(900)) AS ordinamento\n" +
" FROM stb_menu AS menu INNER JOIN stb_menu_opz AS opz ON menu.cod_opz = opz.cod_opz\n" +
" WHERE cod_parent = 'ROOT'\n" +
" AND (@tipoazienda IS NULL OR menu.tipo_azienda = @tipoazienda) \n" +
" UNION ALL\n" +
" SELECT menu.cod_opz,\n" +
" menu.descrizione,\n" +
" menu.cod_parent,\n" +
" opz.gest_name,\n" +
" opz.entity_name,\n" +
" CASE WHEN opz.object_type = 'D' THEN 'S' ELSE 'F' END AS type,\n" +
" opz.picture_menu,\n" +
" opz.picture_select,\n" +
" menu.pos,\n" +
" menu.tipo_azienda,\n" +
" menu.flag_attivo,\n" +
" menu.descrizione_estesa,\n" +
" menu.url_descrizione,\n" +
" opz.object_type,\n" +
" opz.flag_printer_setup,\n" +
" opz.parameter,\n" +
" opz.note,\n" +
" opz.open_type,\n" +
" menu.pos_tipo_azienda,\n" +
" menu.pos_cliente,\n" +
" CAST(opzioni.ordinamento + CAST(menu.pos AS BINARY(15)) AS VARBINARY(900)) AS ordinamento\n" +
" FROM stb_menu AS menu\n" +
" INNER JOIN opzioni ON menu.cod_parent = opzioni.cod_opz\n" +
" INNER JOIN stb_menu_opz AS opz ON menu.cod_opz = opz.cod_opz\n" +
" WHERE (@tipoazienda IS NULL OR menu.tipo_azienda = @tipoazienda))\n" +
" \n" +
" \n" +
" INSERT\n" +
" INTO @treeviewmenu (cod_opz, descrizione, cod_parent, gest_name, entity_name, type,\n" +
" picture_menu, picture_select, pos, tipo_azienda, flag_attivo, descrizione_estesa,\n" +
" url_descrizione, object_type, flag_printer_setup, parameter, note, open_type,\n" +
" pos_tipo_azienda, pos_cliente) \n" +
" SELECT cod_opz,\n" +
" descrizione,\n" +
" cod_parent,\n" +
" gest_name,\n" +
" entity_name,\n" +
" type,\n" +
" picture_menu,\n" +
" picture_select,\n" +
" ROW_NUMBER() OVER (ORDER BY ordinamento) AS pos,\n" +
" tipo_azienda,\n" +
" flag_attivo,\n" +
" descrizione_estesa,\n" +
" url_descrizione,\n" +
" object_type,\n" +
" flag_printer_setup,\n" +
" parameter,\n" +
" note,\n" +
" open_type,\n" +
" pos_tipo_azienda,\n" +
" pos_cliente\n" +
" FROM opzioni\n" +
" ORDER BY ordinamento\n" +
" RETURN\n" +
" END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,40 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240318134309 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (existsColumn("stb_menu", "gest_name"))
dropColumn("stb_menu", "gest_name");
if (existsColumn("stb_menu", "entity_name"))
dropColumn("stb_menu", "entity_name");
if (existsColumn("stb_menu", "type"))
dropColumn("stb_menu", "type");
if (existsColumn("stb_menu", "picture_menu"))
dropColumn("stb_menu", "picture_menu");
if (existsColumn("stb_menu", "picture_select"))
dropColumn("stb_menu", "picture_select");
if (existsColumn("stb_menu", "object_type"))
dropColumn("stb_menu", "object_type");
if (existsColumn("stb_menu", "flag_printer_setup"))
dropColumn("stb_menu", "flag_printer_setup");
if (existsColumn("stb_menu", "parameter"))
dropColumn("stb_menu", "parameter");
if (existsColumn("stb_menu", "note"))
dropColumn("stb_menu", "note");
if (existsColumn("stb_menu", "open_type"))
dropColumn("stb_menu", "open_type");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,34 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240319171620 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = "S";
if (isCustomerDb(IntegryCustomerDB.Gramm_Gramm)){
value = "N";
}
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "ABILITA_MODIFICA_ARTICOLI", value,
"Se la setup è abilitata permette di attivare il pulsante di modifica dell'articolo nel dettaglio del monitoraggio linee",
"SI_NO", false, true);
createSetup("PVM", "MONITORAGGIO_LINEE_V2", "ABILITA_DUPLICA_ORDINE", value,
"Se la setup è abilitata permette di attivare il pulsante di duplicazione dell'ordine in storico ordini del monitoraggio linee",
"SI_NO", false, true);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240320120818 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String sql = "ALTER TABLE dtb_fatture_passive_ddt ALTER COLUMN numero VARCHAR(40)";
executeStatement(sql);
}
@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.MigrationModelInterface;
public class Migration_20240320141352 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("svw_menu_no_pb", "CREATE view [dbo].[svw_menu_no_pb] as \n" +
"WITH GerarchiaMenu AS (SELECT sm.cod_opz,\n" +
" sm.descrizione,\n" +
" sm.cod_parent,\n" +
" smo.gest_name,\n" +
" CASE WHEN smo.object_type = 'D' THEN 'S' ELSE 'F' END AS type,\n" +
" sm.tipo_azienda,\n" +
" sm.flag_attivo,\n" +
" sm.pos,\n" +
" sm_g.pos AS pos_gruppo,\n" +
" sm_g.descrizione AS gruppo\n" +
" FROM stb_menu sm\n" +
" INNER JOIN stb_menu_opz smo ON sm.cod_opz = smo.cod_opz \n" +
" INNER JOIN stb_menu sm_g ON sm.cod_parent = sm_g.cod_opz AND\n" +
" sm.tipo_azienda = sm_g.tipo_azienda\n" +
" WHERE sm.cod_parent in ( 'MM007', 'WM002')\n" +
" AND sm.tipo_azienda = (select tipo_azienda from azienda)\n" +
" UNION ALL\n" +
" SELECT sm_c.cod_opz,\n" +
" sm_c.descrizione,\n" +
" sm_c.cod_parent,\n" +
" smo.gest_name,\n" +
" CASE WHEN smo.object_type = 'D' THEN 'S' ELSE 'F' END AS type,\n" +
" sm_c.tipo_azienda,\n" +
" sm_c.flag_attivo,\n" +
" sm_c.pos,\n" +
" sm_g.pos AS pos_gruppo,\n" +
" sm_g.descrizione AS gruppo\n" +
" FROM stb_menu sm_c\n" +
" INNER JOIN GerarchiaMenu gm ON sm_c.cod_parent = gm.cod_opz\n" +
" INNER JOIN stb_menu_opz smo on sm_c.cod_opz = smo.cod_opz\n" +
" INNER JOIN stb_menu sm_g ON sm_c.cod_parent = sm_g.cod_opz AND\n" +
" sm_c.tipo_azienda = sm_g.tipo_azienda\n" +
" WHERE sm_c.tipo_azienda = gm.tipo_azienda)\n" +
"SELECT DISTINCT gm.cod_opz,\n" +
" descrizione,\n" +
" cod_parent,\n" +
" gm.gest_name,\n" +
" gm.type,\n" +
" tipo_azienda,\n" +
" gm.pos,\n" +
" gm.pos_gruppo,\n" +
" gm.gruppo\n" +
"FROM GerarchiaMenu gm\n" +
"WHERE gm.gest_name IS NOT NULL\n" +
" AND gm.flag_attivo = 'S'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,82 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.StbCalrOreGg;
import it.integry.ems_model.entity.StbCalt;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
public class Migration_20240321144750 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB()) return;
if (!isCustomer(IntegryCustomer.Tosca)) return;
String currentDbName = advancedDataSource.getDataSource().getDbName();
IntegryCustomerDB db = Arrays.stream(IntegryCustomer.Tosca.getValues()).filter(x -> x.getValue().equalsIgnoreCase(currentDbName)).findFirst().orElse(null);
LocalDate giorno = UtilityLocalDate.getNow();
LocalTime ora;
switch (db) {
case Tosca_Ce:
ora = LocalTime.of(7, 0);
break;
case Tosca_Mi:
ora = LocalTime.of(6, 30);
break;
case Tosca_Fc:
ora = LocalTime.of(4, 0);
break;
case Tosca_Vr:
case Tosca_Cz:
case Tosca_Rg:
case Tosca_Rm:
case Tosca_Ba:
default:
ora = LocalTime.of(6, 0);
}
String sql = "SELECT MAX(id_riga) from stb_calr_ore_gg where cod_Cal = 'DEFAULT'";
Integer idRiga = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(advancedDataSource.getConnection(), sql);
if (idRiga == null) {
throw new Exception("Calendario DEFAULT non configurato!");
}
StbCalt calendario = new StbCalt();
calendario.setOperation(OperationType.NO_OP);
calendario.setCodCal("DEFAULT");
calendario.setStbCalrOreGg(new ArrayList<>());
StbCalrOreGg firstWorkingHour = new StbCalrOreGg();
firstWorkingHour
.setCodCal("DEFAULT")
.setOra(Date.from(giorno.atTime(ora).atZone(ZoneId.systemDefault()).toInstant()))
.setFlagTipoOra("L")
.setIdRiga(idRiga + 1)
.setOperation(OperationType.INSERT);
calendario.getStbCalrOreGg().add(firstWorkingHour);
calendario.manageWithParentConnection(advancedDataSource.getConnection());
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,184 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240321153954 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (existsTable("ttb_style")){
createOrUpdateFunction("ftx_getDisponibilitaArticoli", "CREATE FUNCTION [dbo].[ftx_getDisponibilitaArticoli](@dataValidita datetime,\n" +
" @codMdep varchar(8000),\n" +
" @annoStag varchar(10),\n" +
" @codMart varchar(15),\n" +
" @codTagl varchar(15),\n" +
" @codCol varchar(15),\n" +
" @barcode varchar(15))\n" +
" RETURNS TABLE AS \n" +
" return \n" +
" (WITH articoli AS (\n" +
" SELECT ttb_style.anno_stag,\n" +
" ttb_style.cod_style,\n" +
" ttb_style_colori.cod_col,\n" +
" ttb_style_taglie.cod_tagl,\n" +
" mtb_part_dt.qta_ord_for,\n" +
" mtb_part_dt.cod_mdep\n" +
" FROM ttb_style,\n" +
" ttb_style_colori,\n" +
" ttb_style_taglie,\n" +
" mtb_part_dt\n" +
" WHERE (@codMdep is null or mtb_part_dt.cod_mdep IN ( SELECT value_string as cod_mdep FROM ParseStringIntoArray(@codMdep, ',')))\n" +
" AND (@codMart is null or ttb_style.cod_style = @codMart)\n" +
" AND (@codCol is null or ttb_style_colori.cod_col = @codCol)\n" +
" AND (@codTagl is null or ttb_style_taglie.cod_tagl = @codTagl)\n" +
" AND (@annoStag is null or ttb_style.anno_stag = @annoStag)\n" +
" AND ttb_style.cod_style = mtb_part_dt.cod_mart\n" +
" AND ttb_style_colori.cod_col = mtb_part_dt.cod_col\n" +
" AND ttb_style_taglie.cod_tagl = mtb_part_dt.cod_tagl\n" +
" AND ttb_style.cod_style = ttb_style_colori.cod_style\n" +
" AND ttb_style.cod_style = ttb_style_taglie.cod_style\n" +
" ),\n" +
" colli AS (\n" +
" SELECT mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" sum(mtb_colr.qta_col) AS qta,\n" +
" mtb_colt.cod_mdep\n" +
" FROM mtb_colt left outer join dtb_tipi on mtb_colt.cod_dtip = dtb_tipi.cod_dtip,\n" +
" mtb_colr\n" +
" WHERE mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" AND mtb_colt.gestione = 'V'\n" +
" AND (@codMdep is null or mtb_colt.cod_mdep IN ( SELECT value_string as cod_mdep FROM ParseStringIntoArray(@codMdep, ','))) \n" +
" AND (mtb_colt.cod_dtip IS NULL OR (dtb_tipi.segno_qta_car = 0 AND dtb_tipi.segno_qta_scar = 0 ))\n" +
" AND (@codMart is null or mtb_colr.cod_mart = @codMart) \n" +
" AND (@codCol is null or mtb_colr.cod_col = @codCol) \n" +
" AND (@codTagl is null or mtb_colr.cod_tagl = @codTagl)\n" +
" GROUP BY mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colt.cod_mdep\n" +
" ),\n" +
" prenotazione AS (\n" +
" SELECT wdtb_ordr.cod_mart,\n" +
" wdtb_ordr.cod_col,\n" +
" wdtb_ordr.cod_tagl,\n" +
" sum(wdtb_ordr.qta_ord) AS qta,\n" +
" Wdtb_ordt.cod_mdep\n" +
" FROM wdtb_ordt,\n" +
" wdtb_ordr\n" +
" WHERE wdtb_ordt.gestione = wdtb_ordr.gestione\n" +
" AND wdtb_ordt.data_ord = wdtb_ordr.data_ord\n" +
" AND wdtb_ordt.num_ord = wdtb_ordr.num_ord\n" +
" AND wdtb_ordt.gestione = 'V'\n" +
" AND (@codMdep is null or wdtb_ordt.cod_mdep IN ( SELECT value_string as cod_mdep FROM ParseStringIntoArray(@codMdep, ','))) \n" +
" AND wdtb_ordt.flag_elaborato = 'N' AND\n" +
" (@codMart is null or wdtb_ordr.cod_mart = @codMart) AND\n" +
" (@codCol is null or wdtb_ordr.cod_col = @codCol) AND\n" +
" (@codTagl is null or wdtb_ordr.cod_tagl = @codTagl)\n" +
" GROUP BY wdtb_ordr.cod_mart,\n" +
" wdtb_ordr.cod_col,\n" +
" wdtb_ordr.cod_tagl,\n" +
" Wdtb_ordt.cod_mdep\n" +
" ),\n" +
" ordine AS (\n" +
" SELECT dtb_ordr.cod_mart,\n" +
" dtb_ordr.cod_col,\n" +
" dtb_ordr.cod_tagl,\n" +
" CASE WHEN sum(CASE WHEN dtb_ordr.flag_evaso = 'I' OR ( dtb_ordr.flag_evaso = 'A' AND dtb_ordr.qta_acc > 0 ) THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col ELSE 0 END ) > 0 THEN \n" +
" sum(CASE WHEN dtb_ordr.flag_evaso = 'I' OR ( dtb_ordr.flag_evaso= 'A' AND dtb_ordr.qta_acc > 0 ) THEN dtb_ordr.qta_ord - dtb_ordr.qta_evasa - dtb_ordr.qta_col ELSE 0 END ) ELSE 0 END as qta, \n" +
" sum(dtb_ordr.qta_acc) as qta_acc,\n" +
" /*sum(dtb_ordr.qta_acc - dtb_ordr.qta_col) as qta_acc,*/\n" +
" dtb_ordt.cod_mdep\n" +
" FROM dtb_ordt,\n" +
" dtb_ordr\n" +
" WHERE dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
" AND dtb_ordt.gestione = 'V'\n" +
" AND (@codMdep is null or dtb_ordt.cod_mdep IN ( SELECT value_string as cod_mdep FROM ParseStringIntoArray(@codMdep, ','))) \n" +
" /* AND dtb_ordr.flag_evaso = 'I'*/\n" +
" AND dtb_ordt.flag_annulla = 'N' AND\n" +
" (@codMart is null or dtb_ordr.cod_mart = @codMart) AND\n" +
" (@codCol is null or dtb_ordr.cod_col = @codCol) AND\n" +
" (@codTagl is null or dtb_ordr.cod_tagl = @codTagl)\n" +
" GROUP BY dtb_ordr.cod_mart,\n" +
" dtb_ordr.cod_col,\n" +
" dtb_ordr.cod_tagl,\n" +
" dtb_ordt.cod_mdep\n" +
" )\n" +
"\n" +
" /* INSERT\n" +
" INTO @returnTable */\n" +
" SELECT articoli.anno_stag,\n" +
" articoli.cod_style,\n" +
" articoli.cod_col,\n" +
" articoli.cod_tagl,\n" +
" ttb_bar_code.cod_barre,\n" +
" articoli.cod_mdep,\n" +
" IsNull(giacenza.qta_fine, 0) as giacenza,\n" +
" ISNULL(articoli.qta_ord_for, 0) as ord_forn,\n" +
" IsNull(ordine.qta, 0) as ordini,\n" +
" IsNull(prenotazione.qta, 0) as ordini_web,\n" +
" IsNull(ordine.qta_acc, 0) as accant_su_ordine,\n" +
" IsNull(colli.qta, 0) as colli,\n" +
" CASE\n" +
" WHEN \n" +
" (SELECT value AS flag FROM stb_gest_setup WHERE gest_name = 'DATI_AZIENDA' AND SECTION = 'CALCOLO_DISPONIBILITA' AND key_section = 'INCLUDI_QTA_ORD_FOR') = 'S'\n" +
" THEN \n" +
" CASE WHEN (SELECT value AS flag FROM stb_gest_setup WHERE gest_name = 'DATI_AZIENDA' AND SECTION = 'CALCOLO_DISPONIBILITA' AND key_section = 'INCLUDI_QTA_COLLI') = 'S' THEN\n" +
" IsNull(giacenza.qta_fine, 0) + ISNULL(articoli.qta_ord_for, 0) - IsNull(ordine.qta, 0) - IsNull(prenotazione.qta, 0) - IsNull(colli.qta, 0)\n" +
" ELSE\n" +
" IsNull(giacenza.qta_fine, 0) + ISNULL(articoli.qta_ord_for, 0) - IsNull(ordine.qta, 0) - IsNull(prenotazione.qta, 0)\n" +
" END \n" +
" ELSE \n" +
" CASE WHEN (SELECT value AS flag FROM stb_gest_setup WHERE gest_name = 'DATI_AZIENDA' AND SECTION = 'CALCOLO_DISPONIBILITA' AND key_section = 'INCLUDI_QTA_COLLI') = 'S' THEN\n" +
" IsNull(giacenza.qta_fine, 0) - IsNull(ordine.qta, 0) - IsNull(prenotazione.qta, 0) - IsNull(colli.qta, 0)\n" +
" ELSE\n" +
" IsNull(giacenza.qta_fine, 0) - IsNull(ordine.qta, 0) - IsNull(prenotazione.qta, 0)\n" +
" END \n" +
" END AS qta_disp,\n" +
" IsNull(giacenza.qta_fine, 0) - IsNull(ordine.qta_acc, 0) - IsNull(colli.qta, 0) as qta_distrib_su_ordini\n" +
" FROM articoli\n" +
"\n" +
" LEFT OUTER JOIN ttb_bar_code ON articoli.cod_style = ttb_bar_code.cod_style\n" +
" AND articoli.cod_col = ttb_bar_code.cod_col\n" +
" AND articoli.cod_tagl = ttb_bar_code.cod_tagl\n" +
"\n" +
" LEFT OUTER JOIN getsitartadataDett(@dataValidita, @codMdep) giacenza ON articoli.cod_style = giacenza.cod_mart\n" +
" AND articoli.cod_col = giacenza.cod_col\n" +
" AND articoli.cod_tagl = giacenza.cod_tagl\n" +
" AND articoli.cod_mdep = giacenza.cod_mdep\n" +
"\n" +
" LEFT OUTER JOIN ordine ON articoli.cod_style = ordine.cod_mart\n" +
" AND articoli.cod_col = ordine.cod_col\n" +
" AND articoli.cod_tagl = ordine.cod_tagl\n" +
" AND articoli.cod_mdep = ordine.cod_mdep\n" +
"\n" +
" LEFT OUTER JOIN prenotazione ON articoli.cod_style = prenotazione.cod_mart\n" +
" AND articoli.cod_col = prenotazione.cod_col\n" +
" AND articoli.cod_tagl = prenotazione.cod_tagl\n" +
" AND articoli.cod_mdep = prenotazione.cod_mdep\n" +
"\n" +
" LEFT OUTER JOIN colli ON articoli.cod_style = colli.cod_mart\n" +
" AND articoli.cod_col = colli.cod_col\n" +
" AND articoli.cod_tagl = colli.cod_tagl\n" +
" AND articoli.cod_mdep = colli.cod_mdep\n" +
" WHERE (@barcode is null or ttb_bar_code.cod_barre = @barcode)\n" +
" \n" +
" )");
}
}
@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_20240322100900 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
addDefault("azienda", "flag_regime_speciale_iva", "N");
executeStatement(
"UPDATE azienda SET flag_regime_speciale_iva = 'N' WHERE flag_regime_speciale_iva is null ",
"ALTER TABLE azienda ALTER COLUMN flag_regime_speciale_iva varchar(1) NOT NULL");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240322152821 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "MRP", "GRUPPI_CONTROLLO_DATI_SCHEDATECNICA", "",
"Se la setup è abilitata attiva un controllo, sui gruppi merceologici selezionati, per dei campi nell'anagrafica dell'articolo",
"COD_MGRP", true);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,26 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240325130406 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE dtb_doct\n" +
" ALTER COLUMN annotazioni VARCHAR(1024)",
"ALTER TABLE dtb_dift\n" +
" ALTER COLUMN annotazioni VARCHAR(1024)",
"ALTER TABLE dtb_dif_bolle\n" +
" ALTER COLUMN annotazioni VARCHAR(1024)");
}
@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_20240326120018 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE vtb_agen_budget ADD flag_tipologia varchar(1) null default 'B'",
"UPDATE vtb_agen_budget SET flag_tipologia = 'B'",
"ALTER TABLE vtb_agen_budget ALTER COLUMN flag_tipologia varchar(1) not null");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,117 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240326123713 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("ordify_getScontiCliente", "CREATE FUNCTION [dbo].[ordify_getScontiCliente](@dataValidita datetime, @codVage varchar(5), @codAnag varchar(5), @codVdes varchar(5),\n" +
" @codMart varchar(15))\n" +
" RETURNS TABLE\n" +
" AS\n" +
" RETURN\n" +
" (\n" +
"\n" +
" with promo as (\n" +
" select vtb_promo.cod_promo,\n" +
" vtb_promo.descrizione,\n" +
" vtb_promo.flag_sconto_contrattuale,\n" +
" vtb_promo.data_iniz_sell_in,\n" +
" vtb_promo.data_fine_sell_in,\n" +
" vtb_promo.flag_tipo_promo,\n" +
" vtb_promo.um_vend,\n" +
" vtb_promo.qta_vend,\n" +
" vtb_promo.um_omaggio,\n" +
" vtb_promo.qta_omaggio,\n" +
" vtb_promo.prz_bloccato\n" +
" from vtb_promo\n" +
" where vtb_promo.flag_attivo = 'S'\n" +
" AND ISNULL(@dataValidita, dbo.f_convertDatetimeToDate(GETDATE())) BETWEEN vtb_promo.data_iniz_sell_in AND vtb_promo.data_fine_sell_in\n" +
" and vtb_promo.cod_promo not in (select cod_promo from vtb_list_data WHERE cod_promo is not null)),\n" +
" clienti AS (\n" +
" select vtb_promo_clienti.*\n" +
" from vtb_promo_clienti\n" +
" inner join vtb_clie on vtb_promo_clienti.cod_anag = vtb_clie.cod_anag\n" +
" inner join vtb_dest on vtb_promo_clienti.cod_anag = vtb_dest.cod_anag and\n" +
" vtb_promo_clienti.cod_vdes = vtb_dest.cod_vdes\n" +
" where (@codAnag is null or vtb_promo_clienti.cod_anag = @codAnag)\n" +
" AND (@codVdes is null or vtb_promo_clienti.cod_vdes = @codVdes)\n" +
" AND (@codVage is null or IsNull(vtb_dest.cod_vage, vtb_clie.cod_vage) = @codVage)\n" +
" AND vtb_clie.flag_stato = 'A'\n" +
" AND vtb_dest.flag_attivo = 'S'),\n" +
" articoli as (\n" +
" select vtb_promo_articoli.*\n" +
" from vtb_promo_articoli\n" +
" inner join mtb_aart on vtb_promo_articoli.cod_mart = mtb_aart.cod_mart\n" +
" where (@codMart is null or vtb_promo_articoli.cod_mart = @codMart)\n" +
" AND mtb_aart.flag_stato = 'A'),\n" +
" promo_sconti as (\n" +
" select vtb_promo_sconti.cod_promo,\n" +
" promo.descrizione,\n" +
" promo.um_vend,\n" +
" promo.um_omaggio,\n" +
" vtb_promo_sconti.da_qta,\n" +
" vtb_promo_sconti.a_qta,\n" +
" case\n" +
" when promo.flag_sconto_contrattuale = 'S' THEN perc_sco1\n" +
" else null end as perc_sco1,\n" +
" case\n" +
" when promo.flag_sconto_contrattuale = 'S' THEN perc_sco2\n" +
" else null end as perc_sco2,\n" +
" case\n" +
" when promo.flag_sconto_contrattuale = 'S' THEN perc_sco3\n" +
" else null end as perc_sco3,\n" +
" case\n" +
" when promo.flag_sconto_contrattuale = 'S' THEN NULL\n" +
" else perc_sco4 end as perc_sco4,\n" +
" null as prz_bloccato,\n" +
" Cast(case when promo.flag_tipo_promo = 'M' THEN 1 ELSE 0 END as bit) as is_omaggio,\n" +
" promo.qta_omaggio,\n" +
" promo.flag_tipo_promo,\n" +
" promo.flag_sconto_contrattuale\n" +
" from promo\n" +
" inner join vtb_promo_sconti on promo.cod_promo = vtb_promo_sconti.cod_promo\n" +
" where promo.flag_tipo_promo = 'E'\n" +
" union all\n" +
" select promo.cod_promo,\n" +
" promo.descrizione,\n" +
" promo.um_vend as um_vend,\n" +
" promo.um_omaggio,\n" +
" promo.qta_vend as da_qta,\n" +
" 0 as a_qta,\n" +
" null as perc_sco1,\n" +
" null as perc_sco2,\n" +
" null as perc_sco3,\n" +
" null as perc_sco4,\n" +
" promo.prz_bloccato as prz_bloccato,\n" +
" Cast(case when promo.flag_tipo_promo = 'M' THEN 1 ELSE 0 END as bit) as is_omaggio,\n" +
" promo.qta_omaggio,\n" +
" promo.flag_tipo_promo,\n" +
" promo.flag_sconto_contrattuale\n" +
" from promo\n" +
" where promo.flag_tipo_promo <> 'E'\n" +
" )\n" +
"\n" +
" select clienti.cod_anag,\n" +
" clienti.cod_vdes,\n" +
" articoli.cod_mart,\n" +
" promo_sconti.*\n" +
" from promo_sconti\n" +
" inner join clienti on promo_sconti.cod_promo = clienti.cod_promo\n" +
" inner join articoli on promo_sconti.cod_promo = articoli.cod_promo \n" +
" )");
}
@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.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240326130416 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(
IntegryCustomerDB.Salpar_VgAlimenti))
return;
executeStatement("UPDATE vtb_agen_budget SET flag_tipologia = 'S' where flag_tipologia = 'B'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,72 @@
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_20240326131400 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(
IntegryCustomerDB.Salpar_VgAlimenti))
return;
createOrUpdateProcedure("x_puddy3_prev_popolate_plafond_reso", "CREATE PROCEDURE [dbo].[x_puddy3_prev_popolate_plafond_reso] AS\n" +
"BEGIN\n" +
" create table #tempTable\n" +
" ( cod_vage varchar(5) not null, \n" +
" anno integer not null, \n" +
" mese integer not null,\n" +
" importo_plafond numeric(20,5) not null default 0, \n" +
" importo_plafond_residuo numeric(20, 5) not null default 0);\n" +
"\n" +
" insert into #tempTable\n" +
" select vtb_agen_budget.cod_vage,\n" +
" vtb_agen_budget.anno, \n" +
" vtb_agen_budget.mese,\n" +
" vtb_agen_budget.importo as importo_plafond,\n" +
" vtb_agen_budget.importo - ISNULL(plafondMensile.importo_plafond_utilizzato, 0) as importo_plafond_utilizzato\n" +
" from vtb_agen_budget left outer join (select dtb_doct.cod_vage, \n" +
" DATEPART(YEAR, dtb_doct.data_doc) as anno, \n" +
" DATEPART(month, dtb_doct.data_doc) as mese, \n" +
" sum(round(qta_doc * val_unt, 2)) as importo_plafond_utilizzato\n" +
" from dtb_doct inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
" inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip \n" +
" where tipo_emissione = 'DIRETTA' and\n" +
" dtb_doct.gestione = 'V' and\n" +
" dtb_doct.data_doc >= CONVERT(datetime, CONVERT(varchar, DATEPART(year, DATEADD(MONTH, -9, GETDATE()))) + '-' + CONVERT(varchar, DATEPART(month, DATEADD(MONTH, -9, GETDATE()))) + '-01') and\n" +
" dtb_tipi.segno_qta_scar = -1 and\n" +
" dtb_doct.cod_vage is not null and\n" +
" dtb_doct.cod_anag not in (select cod_anag from x_puddy3_prev_plafond_reso_clienti_esclusi)\n" +
" group by dtb_doct.cod_vage, \n" +
" DATEPART(YEAR, dtb_doct.data_doc),\n" +
" DATEPART(month, dtb_doct.data_doc))plafondMensile on plafondMensile.cod_vage = vtb_agen_budget.cod_vage and\n" +
" plafondMensile.anno = vtb_agen_budget.anno and\n" +
" plafondMensile.mese = vtb_agen_budget.mese\n" +
" where vtb_agen_budget.flag_tipologia = 'R'\n" +
"\n" +
" delete from x_puddy3_prev_plafond_reso \n" +
" from x_puddy3_prev_plafond_reso inner join (select distinct cod_vage, anno, mese from #tempTable)mesi on x_puddy3_prev_plafond_reso.cod_vage = mesi.cod_vage and\n" +
" x_puddy3_prev_plafond_reso.anno = mesi.anno and\n" +
" x_puddy3_prev_plafond_reso.mese = mesi.mese\n" +
"\n" +
" insert into x_puddy3_prev_plafond_reso \n" +
" select * from #tempTable;\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,72 @@
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_20240326131414 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(
IntegryCustomerDB.Salpar_VgAlimenti))
return;
createOrUpdateProcedure("x_puddy3_prev_popolate_plafond_sconto_fresc", "CREATE PROCEDURE [dbo].[x_puddy3_prev_popolate_plafond_sconto_fresc] AS\n" +
"BEGIN\n" +
" create table #tempTable\n" +
" ( cod_vage varchar(5) not null, \n" +
" anno integer not null, \n" +
" mese integer not null,\n" +
" importo_plafond numeric(20,5) not null default 0, \n" +
" importo_plafond_residuo numeric(20, 5) not null default 0);\n" +
"\n" +
" insert into #tempTable\n" +
" select vtb_agen_budget.cod_vage,\n" +
" vtb_agen_budget.anno, \n" +
" vtb_agen_budget.mese,\n" +
" vtb_agen_budget.importo as importo_plafond,\n" +
" vtb_agen_budget.importo - ISNULL(plafondMensile.importo_plafond_utilizzato, 0) as importo_plafond_utilizzato\n" +
" from vtb_agen_budget left outer join (select dtb_doct.cod_vage, \n" +
" DATEPART(YEAR, dtb_doct.data_doc) as anno, \n" +
" DATEPART(month, dtb_doct.data_doc) as mese, \n" +
" sum(round(qta_doc * val_unt, 2)) as importo_plafond_utilizzato\n" +
" from dtb_doct inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
" inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip \n" +
" where tipo_emissione = 'DIRETTA' and\n" +
" dtb_doct.gestione = 'V' and\n" +
" dtb_doct.data_doc >= CONVERT(datetime, CONVERT(varchar, DATEPART(year, DATEADD(MONTH, -9, GETDATE()))) + '-' + CONVERT(varchar, DATEPART(month, DATEADD(MONTH, -9, GETDATE()))) + '-01') and\n" +
" dtb_docr.sconto8 = 100 and\n" +
" dtb_doct.cod_vage is not null and\n" +
" dtb_doct.cod_anag not in (select cod_anag from x_puddy3_prev_plafond_sconto_fresc_clienti_esclusi)\n" +
" group by dtb_doct.cod_vage, \n" +
" DATEPART(YEAR, dtb_doct.data_doc),\n" +
" DATEPART(month, dtb_doct.data_doc))plafondMensile on plafondMensile.cod_vage = vtb_agen_budget.cod_vage and\n" +
" plafondMensile.anno = vtb_agen_budget.anno and\n" +
" plafondMensile.mese = vtb_agen_budget.mese\n" +
" where vtb_agen_budget.flag_tipologia = 'S'\n" +
"\n" +
" delete from x_puddy3_prev_plafond_sconto_fresc \n" +
" from x_puddy3_prev_plafond_sconto_fresc inner join (select distinct cod_vage, anno, mese from #tempTable)mesi on x_puddy3_prev_plafond_sconto_fresc.cod_vage = mesi.cod_vage and\n" +
" x_puddy3_prev_plafond_sconto_fresc.anno = mesi.anno and\n" +
" x_puddy3_prev_plafond_sconto_fresc.mese = mesi.mese\n" +
"\n" +
" insert into x_puddy3_prev_plafond_sconto_fresc \n" +
" select * from #tempTable;\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240326221910 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("PVM", "DOC_INTERNI", "GG_CHK_RESO", null,
"Range di date per verificare la data di scadenza della partita di magazzino", true,
null, true, false, false, false, false, "mtb_grup", false );
}
@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_20240327101005 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Tosca,
IntegryCustomer.Biolevante,
IntegryCustomer.Cosmapack,
IntegryCustomer.Dulciar,
IntegryCustomer.Lamonarca,
IntegryCustomer.RossoGargano))
{
updateSetupValue("DATI_AZIENDA", "SETUP", "DELIMITED_IDENTIFIER", "1");
updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "S");
updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "S");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240328160115 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB()) return;
createSetup("DATI_AZIENDA", "CHECK_VERSIONE_APP", "AGGIORNAMENTO_AUTO_NEW", "N",
"Permette ai client di effettuare l'aggiornamento tramite la nuova procedura automatica. Disabilitare prima il flag AGGIORNAMENTO_AUTO",
"SI_NO");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,23 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240402105910 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("ORDIFY", "SETUP", "ABILITA_SCONTO", "N",
"Abilita i campi di inserimento sconto",
"SI_NO");
}
@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_20240403140725 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB()) return;
createSetup("IMPORT_DOCUMENTI VENDITA", "GELORENT", "ARTICOLO", "COD_MART",
"Inserire COD_MART per cercare codice artioclo interno COD_ART_FOR per utlizzare codice articolo del fornitore", null);
}
@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.MigrationModelInterface;
public class Migration_20240404122305 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement(
"UPDATE ctb_scad SET ctb_scad.data_doc = ctb_part.data_doc\n" +
"FROM ctb_part\n" +
" INNER JOIN ctb_scad ON ctb_part.tipo_anag = ctb_scad.tipo_anag AND ctb_part.cod_anag = ctb_scad.cod_anag AND\n" +
" ctb_part.anno_part = ctb_scad.anno_part AND ctb_part.ser_doc = ctb_scad.ser_doc AND\n" +
" ctb_part.num_doc = ctb_scad.num_doc\n" +
" WHERE ctb_part.data_doc <> ctb_scad.data_doc\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.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240404131851 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Tosca,
IntegryCustomer.Biolevante,
IntegryCustomer.Cosmapack,
IntegryCustomer.Dulciar,
IntegryCustomer.Lamonarca,
IntegryCustomer.RossoGargano,
IntegryCustomer.Salpar,
IntegryCustomer.FolliesGroup,
IntegryCustomer.Vinella))
{
updateSetupValue("DATI_AZIENDA", "SETUP", "DELIMITED_IDENTIFIER", "1");
updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_ANSI_PADDING", "S");
updateSetupValue("DATI_AZIENDA", "SETUP", "FLAG_CONCAT_NULL_YIELDS_NULL", "S");
}
}
@Override
public void down() throws Exception {
}
}

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