Compare commits

..

124 Commits

Author SHA1 Message Date
7522092a12 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-12 09:58:37 +01:00
4dc0174800 Fix su convert mvwSitart to mtbColr 2025-12-12 09:58:32 +01:00
3a2ceaf217 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 16:31:09 +01:00
c783f69a49 aggiunta setup per esportare 2025-12-11 16:30:22 +01:00
0854acacfb Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:30:16 +01:00
1aba141c9f Aggiunto database tempestadi nei customer db 2025-12-11 10:30:02 +01:00
82d7efc00c Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-11 10:13:39 +01:00
c6c2739525 Aggiunto database tempestadi nei customer db 2025-12-11 10:13:21 +01:00
798e5b532e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 18:48:17 +01:00
c27c96c3d9 Aggiunto parallel stream in retrieve items dalla cache 2025-12-10 18:48:11 +01:00
0ba9297f39 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-12-10 18:47:36 +01:00
7c036172d8 Aggiunto parallel stream in retrieve items dalla cache 2025-12-10 18:47:22 +01:00
bb47dd458e Finish FixSavePreventivo
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 16:22:40 +01:00
530b6af4ef [CRM] fix completeOrder 2025-12-10 16:20:22 +01:00
6b71d6b784 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 13:35:53 +01:00
de4d8d225f Aggiunto codMart nella richiesta di retrieveGiacenza 2025-12-10 13:35:43 +01:00
755e7394b4 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:19:31 +01:00
ce06683722 Fix duplicate key su mtbCols 2025-12-10 12:19:11 +01:00
7a5c024005 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:16:13 +01:00
c82f2a57d8 gestito errore date promo duplicate e sistemata retun dei Thread 2025-12-10 12:13:13 +01:00
b9e863a563 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-10 12:01:54 +01:00
60e4429c3f [ANOMALIE UL]
- aggiunta eliminazione livello anomalia
2025-12-10 12:01:44 +01:00
d7012d4e1f eliminta conversione caratteri e sistemata data iniz promo 2025-12-10 11:44:10 +01:00
6a237ce4d9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 15:03:33 +01:00
a64932d918 correzioni ad esportazione e importazione dialogo 2025-12-09 15:03:21 +01:00
a15d009f76 Merge branch 'hotfix/Hotfix-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 14:32:50 +01:00
a62f37d930 aggiornamento menu 2025-12-09 14:32:39 +01:00
a4a2b34379 Merge branch 'release/Release-1'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 12:44:05 +01:00
f2d67ea89d anomalie merce
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-09 12:43:27 +01:00
fda162d867 esportazione document md
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 18:27:06 +01:00
2008ef0e8f Divisa setup TIPO_MOVIMENTO_FISCALE in TIPO_MOVIMENTO_FISCALE_CAR e TIPO_MOVIMENTO_FISCALE_SCAR
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 18:14:35 +01:00
6d8e0e747f Varie per carelli giacenza, attività integry gramm usa
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 15:19:07 +01:00
5417e28630 Merge remote-tracking branch 'origin/develop' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-05 13:23:42 +01:00
4ac4686645 [ROSSOGARGANO - AnomalieMerce]
- nuova gestione anomalie merce
2025-12-05 13:23:31 +01:00
1594154639 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 11:38:02 +01:00
3a4a954b91 [CRM] fix completeOrder
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-05 11:37:53 +01:00
744f92c881 [CARELLI] Aggiunto markDocumentReceived
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 10:58:45 +01:00
6e5f099fc2 aggiunta tabelle equivalenti 2025-12-05 10:51:39 +01:00
697cd58e39 aggiunta tabelle equivalenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 10:09:38 +01:00
4bf1f6021f aggiunta tabelle equivalenti
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-05 09:41:52 +01:00
118d2d83d5 Fix su query di calcolo fabbisogno linee prod per WMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 17:54:08 +01:00
149bdc36b3 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 13:02:34 +01:00
89c69bc0d2 cambiata la chiave sulla tabella azienda 2025-12-04 13:02:19 +01:00
240f18d19d Fix qta_prod per storico mes
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 13:01:16 +01:00
9a8a144705 Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-04 12:13:52 +01:00
2f412f1ad6 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 12:13:52 +01:00
8e8b03889a Creato servizio di create udc with rows 2025-12-04 12:13:47 +01:00
dd4ace59bd Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:25:26 +01:00
52c0e0ca61 Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:25:25 +01:00
e2f2b9bde9 Migliorato check di correttezza barcode_ul per i le UDC anonime 2025-12-04 11:25:21 +01:00
4ea9be84db Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 11:23:04 +01:00
11e4b1cf20 Finish Hotfix-1
Some checks failed
IntegryManagementSystem_Multi/pipeline/head Something is wrong with the build of this commit
2025-12-04 11:23:04 +01:00
a66cfa16d8 Aggiunto check di correttezza barcode_ul per i le UDC anonime 2025-12-04 11:22:59 +01:00
9f628973e9 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 09:25:43 +01:00
9fa7f9628c Finish FixCreateContact
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 09:25:43 +01:00
1a5156d53c Fix creazione attività in createContact crm 2025-12-04 09:25:34 +01:00
ba667fd28e inseriti campi cod_linea, cod_slinea, cod_sslinea nella entity mtb_aart
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-04 08:44:44 +01:00
cddc7f8979 - fix retrieve depositi utente in login
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 16:56:50 +01:00
60c436256e Merge branch 'master' into develop
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-03 15:48:54 +01:00
46449c47b9 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 15:48:53 +01:00
f8b6d3ebe0 aggiunto gramm usa 2025-12-03 15:48:31 +01:00
b3d29219ee Modifica per corretta generazione scadenza di fine mese (febbraio)
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:14:41 +01:00
2c81a6566b Finish FixNotifyUser
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:02:26 +01:00
f697a122b6 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 12:02:26 +01:00
3f4ed16f20 Fix allegato in b64 nella mail 2025-12-03 12:02:13 +01:00
cbbfbb16b8 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 11:38:46 +01:00
585a04ffba Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 11:38:45 +01:00
b025be1bd9 Cambiato response entity in downloadStbEmailContent e downloadJtbDisegniFiles 2025-12-03 11:38:36 +01:00
5453826156 Cambiato response entity allegati fatturazione 2025-12-03 11:36:21 +01:00
8312d48970 Cambiata risposta downloadStbActivityFileAttachment 2025-12-03 11:12:47 +01:00
b50c348528 Cambiato response entity allegati fatturazione 2025-12-03 11:10:42 +01:00
64aeff7bf6 disabilitata setup che chiede se stampare o meno la lettera di quietanza a rossogargano
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-03 09:56:14 +01:00
2a8cf16ce0 Fix localDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 19:15:05 +01:00
3539e82849 Fix check localDate
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 18:52:17 +01:00
f4faa20652 Aggiornata connessione FRUDIS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 17:33:54 +01:00
e7f5959e27 creata migratoio e servizio per svuotare il db.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 16:35:50 +01:00
1d897f1461 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:46:05 +01:00
f3e48b9a3e Finish Hotfix-1
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:46:04 +01:00
f0e41c6554 Fix righe collo con Delete in distribuzioneCollo 2025-12-02 15:45:40 +01:00
3d76dec03a Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 15:08:49 +01:00
754b58fd37 creata setup che se abilitata chiede se stampare o meno la lettera di quietanza 2025-12-02 15:08:35 +01:00
0627fd59c9 aggiunte tabelle sincronizzaione articoli
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 14:52:47 +01:00
31480b8fbe Utilizzati nuovi servizi WMS per scaricoMateriaPrimaDaPosizione/scaricoMateriaPrimaDaOrdine
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 10:43:16 +01:00
c1efdf48a6 Modifiche migrations per DMS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 10:08:30 +01:00
e1de9f4db9 Attivazione nuova gestione produzione dulciar
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-02 09:54:02 +01:00
ce2ec669ba Attivazione nuova gestione produzione dulciar 2025-12-02 09:53:57 +01:00
c9658954aa Finish ModifSetup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:10:14 +01:00
5011aa271d Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:10:14 +01:00
af4a5511a3 Creata setup per deposito ricambi macchinari prod 2025-12-01 19:10:05 +01:00
fa996c210c Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 19:03:04 +01:00
c5b5fb62a1 Abilitazione nuova versione generazione ordini di produzione 2025-12-01 19:02:57 +01:00
3b007c061e Finish FixDownload
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:53:14 +01:00
8ee9e2fe57 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:53:14 +01:00
4ddcc6228e Fix errore in download file se mimetype null 2025-12-01 18:53:00 +01:00
7cf9df3549 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:31:26 +01:00
8e8d6cf2c3 Finish ModifSetup
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:13:14 +01:00
2a5314fd1e Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 18:13:14 +01:00
9363e674b5 Creata setup per deposito ricambi macchinari prod 2025-12-01 18:13:04 +01:00
e7252f7fea Merge remote-tracking branch 'origin/develop' into develop 2025-12-01 17:55:09 +01:00
b5e1d2e1ce Abilitazione log picking
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 16:50:12 +01:00
53ef2539f5 aggiunto suffisso anche per griglie 2025-12-01 16:16:22 +01:00
6136d9b848 Migliorato errore di dbName, profileDb e CustomerDb non valido
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 16:07:28 +01:00
fe2be9b926 aggiunte nuove entity in sincronizzazioni
Some checks failed
IntegryManagementSystem_Multi/pipeline/head There was a failure building this commit
2025-12-01 15:10:30 +01:00
1b113999b2 Rimosso log
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 13:11:11 +01:00
4ebcae77ca Migliorie
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-01 13:09:58 +01:00
8d35f9284a Refactoring UserCacheService, adesso sfrutta EntityCache più che il caching integrato.
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 13:05:59 +01:00
b953349afc Finish Hotfix-101
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:44:34 +01:00
6c2eaaa37a Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:44:34 +01:00
9b8824e681 Modifica gestione conto in CTB_AnaG PER IMPORTAZIONE nuovo cliente da WEB 2025-12-01 11:44:20 +01:00
fb03aa1ea7 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:43:30 +01:00
c16e23d3bf Modifica migration per DMS 2025-12-01 11:43:21 +01:00
27055f8e5e Cambiata configurazione ram su Dockerfile
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 11:02:55 +01:00
b8ac769ffd Aggiunto flag_attivo nel trigger changeTipoRiep
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...
2025-12-01 10:57:27 +01:00
0216bc5d53 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:57:09 +01:00
db3973637d Aggiunto flag_attivo nel trigger changeTipoRiep 2025-12-01 10:57:03 +01:00
7dab29e8c2 Aggiornato ems_settings.json
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
# Conflicts:
#	docker/tomcat/conf/integry/ems_settings.json
2025-12-01 10:23:34 +01:00
809ffe73b9 Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:02:06 +01:00
4d13d17095 Finish Hotfix-100
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 10:02:05 +01:00
f749356735 letti data inizio e fine dalla vtb_list_Data 2025-12-01 10:01:59 +01:00
b2d24ab6b4 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 09:48:04 +01:00
6bb7b55618 inserito campo flag_attivo nella ctb_cont 2025-12-01 09:47:54 +01:00
00efbe6fcf Merge branch 'master' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 08:55:11 +01:00
3e0c443ce3 Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good
2025-12-01 08:48:08 +01:00
b4442bc251 correzione per evitare che i campi stringa vuoti "" vengano salvati come tali 2025-11-28 19:20:32 +01:00
607 changed files with 22152 additions and 26597 deletions

View File

@@ -1,9 +1,14 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="LocalDate passato a SimpleDate" />
<option name="myName" value="LocalDate Checks" />
<inspection_tool class="2b489e84-a2d7-30b2-9eff-e1ae310a3021" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="3ba9f580-3fdd-3896-b2c5-a57a36bbdc46" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="68d10b55-8d01-38ad-9579-a3dca4cd32a8" enabled="true" level="ERROR" enabled_by_default="true" editorAttributes="ERRORS_ATTRIBUTES" />
<inspection_tool class="731e1524-8144-3953-9fa9-9ef0eb4affb5" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="AbstractBeanReferencesInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="AccessStaticViaInstance" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ActionIsNotPreviewFriendly" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ActionPresentationInstantiatedInCtor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="AddExplicitTargetToParameterAnnotation" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="AddOperatorModifier" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="AmbiguousNonLocalJump" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
@@ -44,6 +49,7 @@
<inspection_tool class="AnonymousHasLambdaAlternative" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="AnonymousInnerClass" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="AopLanguageInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ApplicationServiceAsStaticFinalFieldOrProperty" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ArgNamesErrorsInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ArgNamesWarningsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="AroundAdviceStyleInspection" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -69,6 +75,8 @@
<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,java.lang.foreign.Arena,ofAuto,java.lang.foreign.Arena,global,com.annimon.stream.Stream,of" />
</inspection_tool>
<inspection_tool class="BadExpressionStatementJS" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="BatchJobDomInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="BatchXmlDomInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="BigDecimalLegacyMethod" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="BigDecimalMethodWithoutRoundingCalled" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="BintrayPublishingPlugin" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -143,12 +151,18 @@
<inspection_tool class="CollectionAddedToSelf" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CommaExpressionJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CommentedOutCode" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="CompanionObjectInExtension" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComparatorCombinators" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComparatorMethodParameterNotUsed" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComparatorResultComparison" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComparisonOfShortAndChar" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComparisonToNaN" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComplexRedundantLet" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ComponentNotRegistered" enabled="false" level="WARNING" enabled_by_default="false">
<option name="CHECK_ACTIONS" value="true" />
<option name="IGNORE_NON_PUBLIC" value="true" />
</inspection_tool>
<inspection_tool class="ComponentRegistrationProblems" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ComposeErroneousRelation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ComposeMissingKeys" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ComposeUnknownKeys" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -229,6 +243,7 @@
<inspection_tool class="CssUnresolvedClassInComposesRule" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="CssUnresolvedCustomProperty" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="CssUnusedSymbol" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CsvValidation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CustomRegExpInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="CyclicJobDependency" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="DanglingJavadoc" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -253,9 +268,11 @@
<inspection_tool class="DeprecatedIsStillUsed" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DeprecatedLombok" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DeprecatedMavenDependency" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DeprecatedStaplerJellyCustomTagAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="Deprecation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DestructuringWrongName" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DevContainerIdeSettings" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="DevKitPropertiesMessageValidation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DevcontainerFolder" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="DialogTitleCapitalization" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="DiamondCanBeReplacedWithExplicitTypeArguments" enabled="false" level="INFORMATION" enabled_by_default="false" />
@@ -349,6 +366,7 @@
</inspection_tool>
<inspection_tool class="EmptySynchronizedStatement" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="EmptyTryBlock" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="EmptyWebServiceClass" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="EndlessStream" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="EnhancedSwitchBackwardMigration" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="EnhancedSwitchMigration" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -376,11 +394,13 @@
<inspection_tool class="ExpressionMayBeFactorized" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="ExtendsAnnotation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ExtendsObject" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ExtensionRegisteredAsServiceOrComponent" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ExternalizableWithoutPublicNoArgConstructor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ExtractMethodRecommender" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FallThroughInSwitchStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FieldCanBeLocal" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FieldMayBeFinal" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FileEqualsUsage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FillPermitsList" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="FilterIsInstanceCallWithClassLiteralArgument" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="FilterIsInstanceResultIsAlwaysEmpty" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -403,6 +423,7 @@
<inspection_tool class="ForLoopReplaceableByWhile" enabled="false" level="WARNING" enabled_by_default="false">
<option name="m_ignoreLoopsWithoutConditions" value="true" />
</inspection_tool>
<inspection_tool class="ForbiddenInSuspectContextMethod" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ForeignDelegate" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ForwardCompatibility" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="FrequentlyUsedInheritorInspection" enabled="false" level="INFORMATION" enabled_by_default="false" />
@@ -578,16 +599,20 @@
<option name="FLAG_EXPLICIT_CONVERSION" value="true" />
<option name="IGNORE_NODESET_TO_BOOLEAN_VIA_STRING" value="true" />
</inspection_tool>
<inspection_tool class="ImplicitlyExposedWebServiceMethods" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="IncompatibleMask" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncompatibleMaskJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncompleteDestructuring" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="InconsistentCommentForJavaParameter" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InconsistentResourceBundle" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="InconsistentTextBlockIndent" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncorrectCancellationExceptionHandling" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="IncorrectDateTimeFormat" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncorrectHttpHeaderInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncorrectMessageFormat" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncorrectParentDisposable" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IncorrectPluginDslStructure" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="IncorrectServiceRetrieving" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="IndexOfReplaceableByContains" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IndexZeroUsage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InfiniteLoopJS" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -600,19 +625,24 @@
<inspection_tool class="InjectionValueTypeInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="InnerClassMayBeStatic" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InsertLiteralUnderscores" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="InspectionDescriptionNotFoundInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="InspectionUsingGrayColors" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InstantiatingObjectToGetClassObject" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InstantiationOfUtilityClass" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IntegerDivisionInFloatingPointContext" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IntegerMultiplicationImplicitCastToLong" enabled="false" level="WARNING" enabled_by_default="false">
<option name="ignoreNonOverflowingCompileTimeConstants" value="true" />
</inspection_tool>
<inspection_tool class="IntentionDescriptionNotFoundInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="InterfaceMethodClashesWithObject" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IntroduceWhenSubject" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="InvalidComparatorMethodReference" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="InvalidIconSrc" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IterableUsedAsVararg" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="IteratorHasNextCallsIteratorNext" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JBoss" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="JCenterRepository" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JComponentDataProvider" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JSAccessibilityCheck" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JSAnnotator" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="JSArrowFunctionBracesCanBeRemoved" enabled="false" level="INFORMATION" enabled_by_default="false" />
@@ -727,6 +757,7 @@
<inspection_tool class="JavadocReference" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="JavaeeApplicationDomInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="JdkProxiedBeanTypeInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="Jexl" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="JoinDeclarationAndAssignment" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="JoinDeclarationAndAssignmentJava" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="JpaAttributeMemberSignatureInspection" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -763,6 +794,7 @@
<inspection_tool class="JvmCoverageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KDocUnresolvedReference" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KarmaConfigFile" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KeymapXmlDom" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinAmbiguousActuals" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinConstantConditions" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KotlinDoubleNegation" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
@@ -770,6 +802,8 @@
<inspection_tool class="KotlinInvalidBundleOrProperty" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinMavenPluginPhase" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KotlinNoActualForExpect" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinObjectExtensionRegistration" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinObjectRegisteredAsExtension" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="KotlinOptionsToCompilerOptions" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="KotlinRedundantOverride" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="KotlinTestJUnit" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -795,15 +829,21 @@
<option name="CHECK_NON_ANNOTATED_REFERENCES" value="true" />
</inspection_tool>
<inspection_tool class="LateinitVarOverridesLateinitVar" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LeakableMapKey" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LengthOneStringsInConcatenation" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="LessResolvedByNameOnly" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="LessUnresolvedMixin" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LessUnresolvedVariable" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LiftReturnOrAssignment" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="LightServiceMigrationCode" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LightServiceMigrationXML" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LightServiceMustBeFinal" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="LimitedScopeInnerClass" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="LiquibaseXmlUnresolvedProperty" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ListIndexOfReplaceableByContains" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ListRemoveInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ListenerImplementationMustNotBeDisposable" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="LiveTemplateI18n" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="LocalVariableName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="LogStatementNotGuardedByLogCondition" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WEAK WARNING" enabled_by_default="false">
@@ -877,6 +917,7 @@
<inspection_tool class="MicronautDataRepositoryMethodReturnType" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MigrateFromJavaLangIo" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="MigrateToJavaLangIo" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="MigrateToOptControl" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MimeType" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="MinMaxValuesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MismatchedArrayReadWrite" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -892,9 +933,12 @@
</option>
</inspection_tool>
<inspection_tool class="MismatchedJavadocCode" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MismatchedLightServiceLevelAndCtor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MismatchedStringBuilderQueryUpdate" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MismatchedStringCase" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MisorderedAssertEqualsArguments" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MissingAccessibleContext" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MissingActionUpdateThread" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MissingAspectjAutoproxyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MissingDeprecatedAnnotationOnScheduledForRemovalApi" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="MissingFinalNewline" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -902,6 +946,7 @@
<option name="ignoreObjectMethods" value="true" />
<option name="ignoreAnonymousClassMethods" value="false" />
</inspection_tool>
<inspection_tool class="MissingRecentApi" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="MissingSerialAnnotation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="MissortedModifiers" enabled="false" level="INFORMATION" enabled_by_default="false">
<option name="m_requireAnnotationsFirst" value="true" />
@@ -945,8 +990,10 @@
<inspection_tool class="NodeCoreCodingAssistance" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonAsciiCharacters" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonAtomicOperationOnVolatileField" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonDefaultConstructor" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="NonExtendableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonFinalFieldInEnum" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonJaxWsWebServices" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonSerializableWithSerialVersionUIDField" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="NonStrictComparisonCanBeEquality" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="NotNullFieldNotInitialized" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -980,6 +1027,7 @@
<inspection_tool class="ObviousNullCheck" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OctalLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OneToOneWithLazy" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OneWayWebMethod" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="OnlyOneElementUsed" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OpenRewriteYamlRecipe" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="OptionalAssignedToNull" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -994,6 +1042,7 @@
<inspection_tool class="OverflowingLoopIndex" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OverrideOnly" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="OverwrittenKey" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PSScriptAnalyzer" enabled="false" level="SERVER PROBLEM" enabled_by_default="false" />
<inspection_tool class="PackageDirectoryMismatch" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PackageInfoWithoutPackage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PackageJsonMismatchedDependency" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1010,6 +1059,12 @@
<inspection_tool class="PatternVariablesCanBeReplacedWithCast" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="PbDuplicatedImports" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PgSelectFromProcedureInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlCapitalization" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlDynamicPlugin" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlExtensionRegistration" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlI18n" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlPluginLogo" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PluginXmlValidity" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PointcutMethodStyleInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PointlessArithmeticExpression" enabled="false" level="WARNING" enabled_by_default="false">
<option name="m_ignoreExpressionsContainingConstants" value="true" />
@@ -1027,22 +1082,27 @@
<inspection_tool class="PostCssCustomSelector" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PostCssMediaRange" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PostCssUnresolvedModuleValueReference" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PostfixTemplateDescriptionNotFound" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PreferCurrentCoroutineContextToCoroutineContext" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PresentationAnnotation" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="PreviewFeature" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PrimitiveArrayArgumentToVariableArgMethod" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PrivatePropertyName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PropertyName" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ProtectedInFinal" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ProtectedMemberInFinalClass" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PsiElementConcatenation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="PublicField" enabled="false" level="INFORMATION" enabled_by_default="false">
<option name="ignoreEnums" value="false" />
<option name="ignorableAnnotations">
<value />
</option>
</inspection_tool>
<inspection_tool class="PublicTestExtensionFunction" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="QsPrivateBeanMembersInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="QsProperties" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="QsYaml" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="QuickFixGetFamilyNameViolation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="RawUseOfParameterizedType" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ReactiveStreamsNullableInLambdaInTransform" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="ReactiveStreamsPublisherImplementation" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1189,6 +1249,7 @@
<inspection_tool class="ReplaceWithIgnoreCaseEquals" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ReplaceWithJavadoc" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="ReplaceWithOperatorAssignment" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="RequiredArtifactTypeInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="RequiredAttributes" enabled="false" level="WARNING" enabled_by_default="false">
<option name="myAdditionalRequiredHtmlAttributes" value="" />
</inspection_tool>
@@ -1203,11 +1264,31 @@
<inspection_tool class="RunBlocking" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="RunBlockingInSuspendFunction" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SSBasedInspection" enabled="true" level="WARNING" enabled_by_default="true">
<searchConfiguration name="Date equals LocalDate inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="Date equals LocalDateTime inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDate equals Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDate passato a SimpleDateFormat" text="$formatter$.format($date$)" recursive="true" caseInsensitive="true" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="formatter" nameOfExprType="java\.text\.SimpleDateFormat" within="" contains="" />
<constraint name="date" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDateTime equals Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
</inspection_tool>
<inspection_tool class="SafeCastWithReturn" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="SafeVarargsDetector" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1242,6 +1323,7 @@
<inspection_tool class="SimplifiableCallChain" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SimplifiableConditionalExpression" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SimplifiableIfStatement" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="SimplifiableServiceRetrieving" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="SimplifyAssertNotNull" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="SimplifyBooleanWithConstants" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="SimplifyCollector" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1391,7 +1473,9 @@
<inspection_tool class="SqlUnusedSubqueryItemInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SqlUnusedVariableInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SqlWithoutWhereInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StatefulEp" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StaticImportCanBeUsed" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StaticInitializationInExtensions" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StaticInitializerReferencesSubClass" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StaticMethodImportLombok" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="StreamToLoop" enabled="false" level="INFORMATION" enabled_by_default="false" />
@@ -1477,6 +1561,7 @@
<inspection_tool class="ThymeleafMessagesResolveInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ThymeleafVariablesResolveInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TokenSetInParserDefinition" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TomlUnresolvedReference" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TooBroadScope" enabled="false" level="INFORMATION" enabled_by_default="false">
<option name="m_allowConstructorAsInitializer" value="false" />
@@ -1513,8 +1598,10 @@
<inspection_tool class="TypeScriptUnresolvedReference" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="TypeScriptValidateGenericTypes" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="TypeScriptValidateTypes" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UElementAsPsi" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UNCHECKED_WARNING" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UNUSED_IMPORT" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UastHintedVisitorAdapterHints" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UastIncorrectHttpHeaderInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UastIncorrectMimeTypeInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnaryPlus" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1524,8 +1611,10 @@
<inspection_tool class="UndefinedJob" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UndefinedParamsPresent" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UndefinedStage" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UndesirableClassUsage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnfinishedStepVerifier" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnhandledExceptionInJSP" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnknownIdInMetaInformation" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnknownLanguage" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnnecessarilyQualifiedInnerClassAccess" enabled="false" level="INFORMATION" enabled_by_default="false">
<option name="ignoreReferencesNeedingImport" value="false" />
@@ -1585,10 +1674,14 @@
<inspection_tool class="UnreachableCatch" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnreachableCodeJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnresolvedMessageChannel" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnresolvedPluginConfigReference" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnresolvedPropertyKey" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnresolvedReference" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnresolvedRestParam" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UnsafeReturnStatementVisitor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnsafeVfsRecursion" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnsatisfiedRange" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnspecifiedActionsPlace" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnstableApiUsage" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnsupportedCharacter" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UnsupportedChronoFieldUnitCall" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1615,12 +1708,20 @@
<inspection_tool class="UsagesOfObsoleteApi" enabled="false" level="TEXT ATTRIBUTES" enabled_by_default="false" />
<inspection_tool class="UseBulkOperation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UseCompareMethod" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UseDPIAwareBorders" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UseDPIAwareInsets" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UseExpressionBody" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="UseHashCodeMethodInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UseJBColor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UsePlatformProcessAwaitExit" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="UsePluginIdEquals" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UsePrimitiveTypes" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UsePropertyAccessSyntax" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="UseVirtualFileEquals" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UselessCallOnCollection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UselessCallOnNotNull" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="UtilSchemaInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="ValidExternallyBoundObject" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="VarargParameter" enabled="false" level="INFORMATION" enabled_by_default="false" />
<inspection_tool class="VariableInitializerIsRedundant" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="VariableNeverRead" enabled="false" level="WARNING" enabled_by_default="false" />
@@ -1640,6 +1741,7 @@
<inspection_tool class="VulnerableCodeUsages" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="VulnerableLibrariesGlobal" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="VulnerableLibrariesLocal" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WSReferenceInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="WadlDomInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="WaitWhileHoldingTwoLocks" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WebProperties" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -1651,11 +1753,15 @@
<option name="ignoreNonEmtpyLoops" value="true" />
</inspection_tool>
<inspection_tool class="WithStatementJS" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WorkspaceEntityMutableField" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WorkspaceImplAbsent" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WorkspaceImplObsolete" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WrapUnaryOperator" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="WrapperTypeMayBePrimitive" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WriteOnlyObject" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="WrongPackageStatement" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="WrongPropertyKeyValueDelimiter" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="WsdlHighlightingInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="XmlDefaultAttributeValue" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="XmlDeprecatedElement" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="XmlDuplicatedId" enabled="false" level="ERROR" enabled_by_default="false" />
@@ -1677,6 +1783,21 @@
<inspection_tool class="YAMLSchemaValidation" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="YAMLUnresolvedAlias" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="YAMLUnusedAnchor" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="checkReturnValue" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="checkedExceptions" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpa.jpb.model.DataClassEqualsAndHashCodeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.CompositeIdClassSerializable" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.ConverterSpecifiedIncorrectlyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.DuplicateVersionAnnotationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.EntityIdMissingInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.IncompatibleTableAnnotationInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.LombokDataInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.LombokEqualsAndHashCodeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.LombokToStringIncludeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.LombokToStringInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.NoArgsConstructorInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="com.intellij.jpb.UnsupportedTypeWithoutConverterInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="d539a2c0-2ebf-35d7-921f-25a581173971" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="dependsOnMethodTestNG" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="groupsTestNG" enabled="false" level="WARNING" enabled_by_default="false">
<option name="groups">

File diff suppressed because it is too large Load Diff

View File

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

View File

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

6
.idea/sqldialects.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/ems-engine/src/main/java/it/integry/ems/document/farm_mes/service/FarmMesImportService.java" dialect="GenericSQL" />
</component>
</project>

View File

@@ -6,5 +6,25 @@
<constraint name="formatter" nameOfExprType="java\.text\.SimpleDateFormat" within="" contains="" />
<constraint name="date" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDate equals java.util.Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="java.util.Date equals LocalDate inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDate" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="java.util.Date equals LocalDateTime inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.util\.Date" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
</searchConfiguration>
<searchConfiguration name="LocalDateTime equals java.util.Date inspection" text="$d1$.equals($d2$)" recursive="true" caseInsensitive="false" type="JAVA" pattern_context="default">
<constraint name="__context__" within="" contains="" />
<constraint name="d1" nameOfExprType="java\.time\.LocalDateTime" within="" contains="" />
<constraint name="d2" nameOfExprType="java\.util\.Date" within="" contains="" />
</searchConfiguration>
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,6 @@ import it.integry.WooCommerce.dto.product.variation.WooCommerceProductVariationD
import it.integry.WooCommerce.enums.ArticoloException;
import it.integry.WooCommerce.enums.StockStatus;
import it.integry.WooCommerce.enums.SyncOrigin;
import it.integry.common.var.CommonConstants;
import it.integry.ems.Import.dto.AnomalieDTO;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
@@ -30,6 +29,7 @@ import it.integry.ems_model.entity.WdtbOrds;
import it.integry.ems_model.entity.WdtbOrdt;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityStream;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.text.StringEscapeUtils;
@@ -41,7 +41,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@@ -445,8 +445,7 @@ public class WooCommerceService {
}
//CHIAVE ORDINE
LocalDate dataOrd = UtilityString.parseLocalDateTime(orderDTO.getDateCreated(), "yyyy-MM-dd'T'HH:mm:ss")
.toLocalDate();
Date dataOrd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(orderDTO.getDateCreated());
ordineWeb
.setGestione("V")
@@ -454,7 +453,7 @@ public class WooCommerceService {
.setNumOrd(Integer.parseInt(orderDTO.getNumber()))
//CHIAVE RIFERIMENTO ORDINE WOOCOMMERCE
.setSerie(dataManager.getSetup("SERIE"))
.setRifOrd(UtilityString.left("RIF N." + orderDTO.getNumber() + " DEL " + CommonConstants.DATE_DMY_DASHED_FORMATTER.format(dataOrd) + " " + orderDTO.getOrderKey(), 40))
.setRifOrd(UtilityString.left("RIF N." + orderDTO.getNumber() + " DEL " + UtilityDate.formatDate(dataOrd, "dd-MM-yy") + " " + orderDTO.getOrderKey(), 40))
.setDataOrdRif(dataOrd)
.setNumOrdRif(Integer.parseInt(orderDTO.getNumber()))
.setListino(dataManager.getSetup("LISTINO"));

View File

@@ -22,16 +22,16 @@ public class CommonConstants {
public static final String DATE_FORMAT_YMD_SLASHED = "yyyy/MM/dd";
public static final String DATE_FORMAT_YMD_DASHED = "yyyy-MM-dd";
public static final String DATE_FORMAT_DMY_SLASHED = "dd/MM/yyyy";
public static final String DATE_FORMAT_YMD = "yyyy-MM-dd";
public static final String DATE_FORMAT_DMY = "dd/MM/yyyy";
public static final String DATE_FORMAT_DMY_DASHED = "dd-MM-yyyy";
public static final String DATE_FORMAT_DMYHMS_UNSPACED = "ddMMyyyyHHmmss";
public static final String TIME_FORMAT = "HH:mm:ss";
public static final String DATETIME_FORMAT_YMD = String.format("%s %s", DATE_FORMAT_YMD_DASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_YMD = String.format("%s %s", DATE_FORMAT_YMD_SLASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY = String.format("%s %s", DATE_FORMAT_DMY_DASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY_SLASHED = String.format("%s %s", DATE_FORMAT_DMY_SLASHED, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY_SLASHED = String.format("%s %s", DATE_FORMAT_DMY, TIME_FORMAT);
public static final String DATETIME_FORMAT_DMY_DASHED = String.format("%s %s", DATE_FORMAT_DMY_DASHED, TIME_FORMAT);
@@ -50,13 +50,14 @@ public class CommonConstants {
public static final DateTimeFormatter DATE_YMD_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD_SLASHED)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD_DASHED)
public static final DateTimeFormatter DATETIME_YMD_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_YMD)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_YMD)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATETIME_YMD_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATETIME_FORMAT_YMD)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY_SLASHED)
public static final DateTimeFormatter DATE_DMY_SLASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY)
.withZone(ZoneId.systemDefault());
public static final DateTimeFormatter DATE_DMY_DASHED_FORMATTER = DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT_DMY_DASHED)
.withZone(ZoneId.systemDefault());

View File

@@ -69,7 +69,6 @@ public class EmsCoreDBLoader {
try (MultiDBTransactionManager multiDBTransactionManager = new MultiDBTransactionManager(connectionPool)){
discoverAllConnections(multiDBTransactionManager);
setupAzienda(multiDBTransactionManager);
userCacheService.discoverAllUsers(multiDBTransactionManager);
if (onComplete != null) onComplete.run(multiDBTransactionManager);
} catch (Exception ex) {

View File

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

View File

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

View File

@@ -39,6 +39,7 @@ import it.integry.ems_model.entity.*;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Base64Utility;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.utility.UtilityString;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.text.StringEscapeUtils;
@@ -68,7 +69,6 @@ import java.lang.reflect.ParameterizedType;
import java.math.BigDecimal;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.Date;
@@ -793,9 +793,8 @@ public class EmsController {
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_STB_EMAIL_CONTENT, method = RequestMethod.GET)
public byte[] downloadStbEmailContent(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
public ResponseEntity<byte[]> downloadStbEmailContent(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam Integer idEmail) throws Exception {
StbEmailContent stbEmailContent = new StbEmailContent();
stbEmailContent.setIdEmail(idEmail);
stbEmailContent.setOperation(OperationType.SELECT_OBJECT);
@@ -803,11 +802,7 @@ public class EmsController {
stbEmailContent = entityProcessor.processEntity(stbEmailContent, multiDBTransactionManager);
if (stbEmailContent != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename("email.eml").build().toString());
byte[] byteArr = null;
byte[] byteArr;
String pattern = "[^\\x00-\\x7F]";
Pattern pat = Pattern.compile(pattern);
@@ -819,13 +814,18 @@ public class EmsController {
byteArr = Base64.decodeBase64(stbEmailContent.getEmailContent());
}
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename("email.eml")
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_DOC_PDF, method = RequestMethod.GET)
@@ -840,7 +840,7 @@ public class EmsController {
@RequestParam Integer versione) throws Exception {
DtbDocPdf dtbDocPdf = new DtbDocPdf();
dtbDocPdf.setDataDoc(UtilityString.parseLocalDate(dataDoc));
dtbDocPdf.setDataDoc(UtilityDate.RecognizeDate(dataDoc));
dtbDocPdf.setSerDoc(serDoc);
dtbDocPdf.setNumDoc(numDoc);
dtbDocPdf.setCodAnag(codAnag);
@@ -884,15 +884,16 @@ public class EmsController {
}
@RequestMapping(value = EmsRestConstants.PATH_DOWNLOAD_DTB_ORD_PDF, method = RequestMethod.GET)
public byte[] downloadDtbOrdPdf(HttpServletRequest request, HttpServletResponse response,
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
public ResponseEntity<byte[]> downloadDtbOrdPdf(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String gestione,
@RequestParam String dataOrd,
@RequestParam Integer numOrd,
@RequestParam Integer versione) throws Exception {
DtbOrdPdf dtbOrdPdf = new DtbOrdPdf();
dtbOrdPdf.setGestione(gestione);
dtbOrdPdf.setDataOrd(UtilityString.parseLocalDate(dataOrd));
dtbOrdPdf.setDataOrd(UtilityDate.RecognizeDate(dataOrd));
dtbOrdPdf.setNumOrd(numOrd);
dtbOrdPdf.setVersione(versione);
dtbOrdPdf.setOperation(OperationType.SELECT_OBJECT);
@@ -900,17 +901,20 @@ public class EmsController {
dtbOrdPdf = entityProcessor.processEntity(dtbOrdPdf, multiDBTransactionManager);
if (dtbOrdPdf != null) {
response.setContentType("application/octet-stream");
response.setStatus(HttpServletResponse.SC_OK);
response.addHeader(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString());
byte[] byteArr = dtbOrdPdf.getFilecontentByteArr(true);
response.setContentLength(byteArr != null ? byteArr.length : 0);
return byteArr;
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.contentLength(byteArr != null ? byteArr.length : 0)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")
.filename(ContentDisposition.attachment().filename(dtbOrdPdf.getFilename()).build().toString())
.build()
.toString())
.body(byteArr);
}
response.sendError(404, "Allegato non trovato");
return null;
return ResponseEntity.notFound().build();
}
@RequestMapping(value = EmsRestConstants.PATH_UPLOAD_STB_FILE_ATTACHMENT, method = RequestMethod.POST)
@@ -1043,7 +1047,7 @@ public class EmsController {
byte[] content = files[0].getBytes();
// content = UtilityZip.zlib_compress(content);
LocalDate dataDoc = UtilityString.parseLocalDate(dataDocStr);
Date dataDoc = UtilityDate.RecognizeDate(dataDocStr);
DtbDocPdf dtbDocPdf = new DtbDocPdf();
dtbDocPdf.setDataDoc(dataDoc);
@@ -1095,7 +1099,7 @@ public class EmsController {
String idAttach = null;
StbFilesAttached.TypeAttach typeAttach = null;
LocalDate dataDoc = UtilityString.parseLocalDate(dataDocStr);
Date dataDoc = UtilityDate.RecognizeDate(dataDocStr);
DrlDocAttached drlDocAttached =
new DrlDocAttached()

View File

@@ -35,9 +35,10 @@ public class DbmsChangeTrackerComponent {
add(StbEditLimit.ENTITY);
add(StbGestSetup.ENTITY);
add(StbGestSetupDepo.ENTITY);
add(WtbGestSetupUser.ENTITY);
add(StbUser.ENTITY);
add(WtbClie.ENTITY);
add(WtbDepo.ENTITY);
add(WtbGestSetupUser.ENTITY);
}};

View File

@@ -39,10 +39,10 @@ public class DownloadController {
if (fileContent != null) {
String filename = downloadFileHandlerService.getDownloadFileName(uuid);
String mimeType = Files.probeContentType(Paths.get(fileName));
MediaType mediaType = mimetypesFileTypeMap.getContentType(fileName);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(mimeType))
.contentType(mediaType)
.contentLength(fileContent.length)
.header(HttpHeaders.CONTENT_DISPOSITION, ContentDisposition
.builder("attachment")

View File

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

View File

@@ -44,6 +44,14 @@ public class EntityCacheComponent implements ApplicationListener {
private final HashMap<IntegryCustomerDB, ConcurrentHashMap<String, ConcurrentHashMap<HashMap<String, Object>, EntityBase>>> entityCache = new HashMap<>();
// Lock per IntegryCustomerDB per garantire accessi sincronizzati alla cache di quel customer
private final ConcurrentHashMap<IntegryCustomerDB, Object> cacheLocks = new ConcurrentHashMap<>();
private Object getCacheLock(IntegryCustomerDB customerDB) {
cacheLocks.putIfAbsent(customerDB, new Object());
return cacheLocks.get(customerDB);
}
private final HashMap<String, Class<? extends EntityBase>> enabledEntities = new HashMap<String, Class<? extends EntityBase>>() {{
put(MtbAart.ENTITY, MtbAart.class);
put(MtbAartBarCode.ENTITY, MtbAartBarCode.class);
@@ -52,9 +60,10 @@ public class EntityCacheComponent implements ApplicationListener {
put(StbEditLimit.ENTITY, StbEditLimit.class);
put(StbGestSetup.ENTITY, StbGestSetup.class);
put(StbGestSetupDepo.ENTITY, StbGestSetupDepo.class);
put(WtbGestSetupUser.ENTITY, WtbGestSetupUser.class);
put(StbUser.ENTITY, StbUser.class);
put(WtbDepo.ENTITY, WtbDepo.class);
put(WtbGestSetupUser.ENTITY, WtbGestSetupUser.class);
put(WtbClie.ENTITY, WtbClie.class);
}};
public EntityCacheComponent(DbmsChangeTrackerComponent dbmsChangeTrackerComponent, EntityPropertyHolder entityPropertyHolder) {
@@ -103,20 +112,23 @@ public class EntityCacheComponent implements ApplicationListener {
}
private void refreshCacheForEntity(Connection connection, IntegryCustomerDB customerDB, String tableName) throws Exception {
Class<? extends EntityBase> clazz = enabledEntities.get(tableName);
// Sincronizziamo l'intera operazione di refresh per il customerDB per evitare accessi concorrenti
synchronized (getCacheLock(customerDB)) {
Class<? extends EntityBase> clazz = enabledEntities.get(tableName);
// if (clazz == null)
// throw new RuntimeException("Entity cache is not enabled for table " + tableName);
entityCache.putIfAbsent(customerDB, new ConcurrentHashMap<>());
entityCache.get(customerDB).remove(tableName);
entityCache.putIfAbsent(customerDB, new ConcurrentHashMap<>());
entityCache.get(customerDB).remove(tableName);
ConcurrentHashMap<HashMap<String, Object>, EntityBase> entities = retrieveEntityList(connection, tableName, clazz);
entityCache.get(customerDB).put(tableName, entities);
ConcurrentHashMap<HashMap<String, Object>, EntityBase> entities = retrieveEntityList(connection, tableName, clazz);
entityCache.get(customerDB).put(tableName, entities);
logger.trace(String.format("[%s] Cached %d records for entity %s",
customerDB.getValue(),
entities.size(),
clazz.getSimpleName()));
logger.trace(String.format("[%s] Cached %d records for entity %s",
customerDB.getValue(),
entities.size(),
clazz.getSimpleName()));
}
}
public <T extends EntityBase> List<T> getCachedEntitiesList(IntegryCustomerDB customerDB, String tableName, Predicate<T> filterPredicate) {
@@ -125,22 +137,29 @@ public class EntityCacheComponent implements ApplicationListener {
}
public <T extends EntityBase> Stream<T> getCachedEntitiesStream(IntegryCustomerDB customerDB, String tableName, Predicate<T> filterPredicate) {
if (!isCacheEnabled(customerDB, tableName)) {
try {
refreshCacheForEntity(customerDB, tableName);
} catch (Exception e) {
throw new RuntimeException(e);
// Per evitare accessi concorrenti leggiamo/snapshottiamo la cache sotto lock per quel customerDB
Stream<T> snapshot;
synchronized (getCacheLock(customerDB)) {
if (!isCacheEnabled(customerDB, tableName)) {
try {
refreshCacheForEntity(customerDB, tableName);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// prendo un'istantanea degli oggetti clonati per poter lavorare fuori dal lock
snapshot = entityCache.get(customerDB)
.get(tableName)
.values()
.parallelStream()
.map(x -> (T) x.clone());
if (filterPredicate != null)
snapshot = snapshot.filter(filterPredicate);
}
Stream<T> tStream = entityCache.get(customerDB).get(tableName)
.values()
.parallelStream()
.map(x -> (T) x);
if (filterPredicate != null)
tStream = tStream.filter(filterPredicate);
return tStream.map(x -> (T) x.clone());
return snapshot;
}
@@ -178,9 +197,12 @@ public class EntityCacheComponent implements ApplicationListener {
event.getPrimaryKey());
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
// sincronizziamo la modifica per il customerDB
synchronized (getCacheLock(event.getCustomerDB())) {
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -197,9 +219,13 @@ public class EntityCacheComponent implements ApplicationListener {
enabledEntities.get(event.getTableName()),
event.getPrimaryKey());
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
// sincronizziamo la modifica per il customerDB
synchronized (getCacheLock(event.getCustomerDB())) {
entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.put(entityPrimaryKey, newItem);
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -212,12 +238,17 @@ public class EntityCacheComponent implements ApplicationListener {
HashMap<String, Object> entityPrimaryKey = convertSqlMapToEntityMap(event.getPrimaryKey(), enabledEntities.get(event.getTableName()));
final EntityBase removedItem = entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.remove(entityPrimaryKey);
// sincronizziamo la rimozione per il customerDB
final EntityBase removedItem;
synchronized (getCacheLock(event.getCustomerDB())) {
removedItem = entityCache.get(event.getCustomerDB())
.get(event.getTableName())
.remove(entityPrimaryKey);
}
}
private void handleTableTrackingResetted(TableTrackingResettedEvent event) throws Exception {
// reset e refresh sono eseguiti in modo sincronizzato per quel customer
resetTablesCache(event.getCustomerDB());
refreshCacheGlobal(event.getCustomerDB());
}
@@ -269,14 +300,19 @@ public class EntityCacheComponent implements ApplicationListener {
private void resetTableCache(IntegryCustomerDB customerDB, String tableName) {
if (entityCache.containsKey(customerDB) && entityCache.get(customerDB).containsKey(tableName)) {
entityCache.get(customerDB).remove(tableName);
synchronized (getCacheLock(customerDB)) {
if (entityCache.containsKey(customerDB) && entityCache.get(customerDB).containsKey(tableName)) {
entityCache.get(customerDB).remove(tableName);
}
}
}
private void resetTablesCache(IntegryCustomerDB customerDB) {
entityCache.remove(customerDB);
// sincronizziamo la rimozione dell'intera cache per il customer
synchronized (getCacheLock(customerDB)) {
entityCache.remove(customerDB);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -177,7 +177,7 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
protected void cloneTable(String sourceTable, String newTable,boolean fillNewTable, boolean dropOldTable, boolean renameNewTable) throws Exception {
protected void cloneTable(String sourceTable, String newTable, boolean fillNewTable, boolean dropOldTable, boolean renameNewTable) throws Exception {
UtilityDB.cloneTable(connection, sourceTable, newTable, fillNewTable, dropOldTable, renameNewTable);
}
@@ -423,6 +423,25 @@ public abstract class BaseMigration implements MigrationModelInterface {
}
}
protected String getSetupValue(String gestName, String section, String keySection) throws SQLException {
String sql = Query.format("SELECT value FROM " + StbGestSetup.ENTITY +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
}
//Create a getStbGestSetup method to return the entire StbGestSetup object
protected StbGestSetup getStbGestSetup(String gestName, String section, String keySection) throws SQLException, DataConverterNotFoundException, InstantiationException, IllegalAccessException {
String sql = Query.format("SELECT * FROM stb_gest_setup " +
" WHERE gest_name = %s AND" +
" section = %s AND" +
" key_section = %s", gestName, section, keySection);
return UtilityDB.executeSimpleQueryOnlyFirstRowDTO(connection, sql, StbGestSetup.class);
}
protected void deleteSetup(String gestName, String section, String keySection) throws Exception {
StbGestSetup stbGestSetup = new StbGestSetup()
.setGestName(gestName)

View File

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

View File

@@ -1,5 +1,6 @@
package it.integry.ems.migration._base;
import it.integry.ems.exception.InvalidCustomerDbException;
import it.integry.ems_model.utility.UtilityString;
import java.util.Arrays;
@@ -92,10 +93,11 @@ public enum IntegryCustomerDB {
Frudis_Frudis("frudis"),
Gramm_Gramm("gramm_peppe"),
Gramm_Gramm("gramm"),
Gramm_PrimeOlive("primeolive"),
Gramm_ProveStage("grammprovestage"),
Gramm_2MHolding("dueemme"),
Gramm_GrammUsa("gramm_usa"),
Idrotecnica_Idrotecnica("idrotecnica"),
@@ -106,7 +108,7 @@ public enum IntegryCustomerDB {
Igood_ShopService("shop_service"),
Ime_ImeTe("ime_te_peppe"),
Ime_ImeTe("ime_te"),
Integry_Studioml("studioml"),
@@ -196,7 +198,9 @@ public enum IntegryCustomerDB {
Tempesta_Tempesta("tempesta"),
Tempesta_DI("tempestadi"),
Tempesta_VivaiTempesta("vivaitempesta"),
Tempesta_VivaiTempesta_DI("vivaitempestadi"),
Tosca_Ba("tosca_ba"),
@@ -234,6 +238,6 @@ public enum IntegryCustomerDB {
return Arrays.stream(values()).filter(x -> x.getValue().equalsIgnoreCase(value))
.findFirst()
.orElse(null);
.orElseThrow(() -> new InvalidCustomerDbException(value));
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,85 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems.migration.dto.common.MigrationMvwSitArtUdcDetInventarioDTO;
import java.sql.SQLException;
public class Migration_20250417110238 extends BaseMigration implements MigrationModelInterface {
//Migration per aggiornare la view mvw_sitart_udc_det_inventario
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Maggio) &&
!isCustomer(IntegryCustomer.Biolevante) &&
!isCustomer(IntegryCustomer.Ime) &&
!isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
return;
//Aggiorno la view mvw_mtb_colr_with_giacenza
MigrationMvwSitArtUdcDetInventarioDTO.apply(connection);
if (isCustomerDb(IntegryCustomerDB.Gramm_Gramm))
resetCodJcomColli();
//alignCodJcomScarichiFromCarichi();
MigrationMvwSitArtUdcDetInventarioDTO.alignGiacenza(connection);
}
private void resetCodJcomColli() throws SQLException {
executeStatement("UPDATE mtb_colr SET cod_jcom = NULL");
}
private void alignCodJcomScarichiFromCarichi() throws Exception {
String updateSql = "UPDATE mtb_colr\n" +
"SET mtb_colr.cod_jcom = tmp.cod_jcom_carico\n" +
" FROM mtb_colr\n" +
" INNER JOIN\n" +
" (SELECT mr_scarico.num_collo,\n" +
" mr_scarico.data_collo,\n" +
" mr_scarico.ser_collo,\n" +
" mr_scarico.gestione,\n" +
" mr_scarico.riga,\n" +
" mr_scarico.cod_mart,\n" +
" mr_scarico.partita_mag,\n" +
" mr_scarico.cod_jcom AS cod_jcom_scarico,\n" +
" mr_carico.num_collo AS num_collo_ccarico,\n" +
" mr_carico.cod_jcom AS cod_jcom_carico\n" +
" FROM mtb_colr mr_scarico\n" +
" INNER JOIN mtb_colt mt_scarico\n" +
" ON mr_scarico.gestione = mt_scarico.gestione AND\n" +
" mr_scarico.data_collo = mt_scarico.data_collo AND\n" +
" mr_scarico.num_collo = mt_scarico.num_collo AND\n" +
" mr_scarico.ser_collo = mt_scarico.ser_collo\n" +
" LEFT OUTER JOIN mtb_colr mr_carico\n" +
" ON mr_scarico.gestione_rif = mr_carico.gestione AND\n" +
" mr_scarico.data_collo_rif = mr_carico.data_collo AND\n" +
" mr_scarico.num_collo_rif = mr_carico.num_collo AND\n" +
" mr_scarico.ser_collo_rif = mr_carico.ser_collo AND\n" +
" mr_scarico.cod_mart = mr_carico.cod_mart AND\n" +
" ISNULL(mr_scarico.partita_mag, '') = ISNULL(mr_carico.partita_mag, '')\n" +
" WHERE\n" +
// " mt_scarico.segno = -1 AND\n" +
" mr_carico.num_collo IS NOT NULL\n" +
" AND ISNULL(mr_carico.cod_jcom, '') <> ISNULL(mr_scarico.cod_jcom, '')) tmp\n" +
"ON mtb_colr.num_collo = tmp.num_collo AND\n" +
" mtb_colr.data_collo = tmp.data_collo AND\n" +
" mtb_colr.gestione = tmp.gestione AND\n" +
" mtb_colr.ser_collo = tmp.ser_collo AND\n" +
" mtb_colr.riga = tmp.riga";
executeStatement(updateSql);
}
@Override
public void down() throws Exception {
}
}

View File

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

View File

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

View File

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

View File

@@ -1,24 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250627184608 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomer(IntegryCustomer.RossoGargano)){
value = "ControlloGiacenzeSintetico";
}
createSetup("PVM","CONTROLLO_GIACENZE","REPORT_NAME_ELENCO_SINTETICO",value,"Report name per report giacenze sintetico da portale web","REPORT_NAME");
}
@Override
public void down() throws Exception {
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
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.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250909162127 extends BaseMigration implements MigrationModelInterface {
@@ -10,8 +10,7 @@ public class Migration_20250909162127 extends BaseMigration implements Migration
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Biolevante_Biolevante))
if (!isCustomer(IntegryCustomer.Biolevante))
return;
executeStatement(

View File

@@ -1,55 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250925103840 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String sqlCreateMaster = "CREATE TABLE dbo.mtb_missione_mag_auto\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT mtb_missione_mag_auto_pk\n" +
" PRIMARY KEY,\n" +
" cod_mdep VARCHAR(5) NOT NULL,\n" +
" cod_area VARCHAR(15) NOT NULL,\n" +
" CONSTRAINT table_name_mtb_depo_area_cod_area_cod_mdep_fk\n" +
" FOREIGN KEY (cod_mdep, cod_area) REFERENCES dbo.mtb_depo_area (cod_mdep, cod_area),\n" +
" created_by VARCHAR(40) NOT NULL\n" +
" CONSTRAINT mtb_missione_mag_auto_stb_user_user_name_fk\n" +
" REFERENCES dbo.stb_user,\n" +
" created_at DATETIME DEFAULT GETDATE() NOT NULL\n" +
")";
String sqlCreateDetail = "CREATE TABLE dbo.mtb_missione_mag_auto_det\n" +
"(\n" +
" id BIGINT IDENTITY\n" +
" CONSTRAINT mtb_missione_mag_auto_det_pk\n" +
" PRIMARY KEY,\n" +
" parent_id BIGINT NOT NULL\n" +
" CONSTRAINT mtb_missione_mag_auto_det_mtb_missione_mag_auto_id_fk\n" +
" REFERENCES dbo.mtb_missione_mag_auto (id),\n" +
" sscc VARCHAR(18),\n" +
" posizione_in VARCHAR(40),\n" +
" posizione_out VARCHAR(40),\n" +
" error_message VARCHAR(MAX),\n" +
" completed BIT DEFAULT 0 NOT NULL,\n" +
" skipped BIT DEFAULT 0 NOT NULL,\n" +
" started_at DATETIME,\n" +
" ended_at DATETIME,\n" +
" created_at DATETIME DEFAULT GETDATE(),\n" +
" updated_at DATETIME DEFAULT GETDATE() NOT NULL\n" +
")";
executeStatement(sqlCreateMaster, sqlCreateDetail);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,610 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251015111701 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("MES_GetWorkOrders", "CREATE FUNCTION [dbo].[MES_GetWorkOrders](@codJfas VARCHAR(50), @dateStart DATE, @dateEnd DATE, @flagEvaso VARCHAR(1),\n" +
" @codAnag VARCHAR(5))\n" +
" RETURNS TABLE\n" +
" AS RETURN\n" +
" -- DECLARE @codJfas VARCHAR(5) = 'L1'\n" +
" -- DECLARE @dateStart DATE = DATEADD(MONTH, -1, GETDATE())\n" +
" -- DECLARE @dateEnd DATE = DATEADD(MONTH, 1, GETDATE())\n" +
" -- DECLARE @flagEvaso VARCHAR(1) = 'I'\n" +
" -- DECLARE @codAnag VARCHAR(5) = null;\n" +
"\n" +
"--Funzione per calcolare la sequenza di ordini su una linea e il RunTimeEND\n" +
" WITH setup AS (SELECT ISNULL(@dateStart, DATEADD(DAY, -14, GETDATE())) AS date_start,\n" +
" ISNULL(@dateEnd, GETDATE()) AS date_end,\n" +
" ISNULL(@flagEvaso, 'I') AS flag_evaso,\n" +
" @codJfas AS cod_jfas,\n" +
" @codAnag AS cod_anag),\n" +
"\n" +
" setup_depo AS (SELECT cod_mdep, value AS flag_carico_scarico_immediato\n" +
" FROM stb_gest_setup_depo\n" +
" WHERE gest_name = 'CARICO_SCARICO_PF'\n" +
" AND section = 'SETUP'\n" +
" AND key_section = 'GENERA_CARICO_SCARICO_IMMEDIATO'),\n" +
"\n" +
" setup_run_time AS (SELECT value AS flag_restart\n" +
" FROM stb_gest_setup\n" +
" WHERE gest_name = 'PVM'\n" +
" AND section = 'MONITORAGGIO_LINEE_V2'\n" +
" AND key_section = 'RESTART_RUN_TIME_END'),\n" +
"\n" +
" mtb_colr_sum_filtered_rows AS (SELECT gestione,\n" +
" data_collo,\n" +
" num_collo,\n" +
" ser_collo,\n" +
" cod_mart,\n" +
" data_ord,\n" +
" num_ord,\n" +
" qta_col,\n" +
" num_cnf\n" +
" FROM mtb_colr\n" +
" WHERE gestione_rif IS NULL\n" +
" AND data_collo_rif IS NULL\n" +
" AND ser_collo_rif IS NULL\n" +
" AND num_collo_rif IS NULL),\n" +
"\n" +
" mtb_colr_sum_valid_colli AS (SELECT DISTINCT gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo\n" +
" FROM mtb_colt\n" +
" CROSS APPLY setup\n" +
" WHERE segno = 1\n" +
" AND data_ord BETWEEN setup.date_start AND setup.date_end),\n" +
"\n" +
" mtb_colr_sum AS (SELECT colr.gestione,\n" +
" colr.data_collo,\n" +
" colr.num_collo,\n" +
" colr.ser_collo,\n" +
" colr.cod_mart,\n" +
" colr.data_ord,\n" +
" colr.num_ord,\n" +
" SUM(colr.qta_col) AS qta_col,\n" +
" SUM(colr.num_cnf) AS num_cnf\n" +
" FROM mtb_colr_sum_valid_colli colt\n" +
" INNER JOIN mtb_colr_sum_filtered_rows colr\n" +
" ON colr.gestione = colt.gestione\n" +
" AND colr.data_collo = colt.data_collo\n" +
" AND colr.num_collo = colt.num_collo\n" +
" AND colr.ser_collo = colt.ser_collo\n" +
" GROUP BY colr.gestione,\n" +
" colr.data_collo,\n" +
" colr.num_collo,\n" +
" colr.ser_collo,\n" +
" colr.cod_mart,\n" +
" colr.data_ord,\n" +
" colr.num_ord),\n" +
"\n" +
" machine_last_event AS (SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" cod_cmac,\n" +
" MAX(data_mov) AS max_data_mov\n" +
" FROM dtb_ord_macc\n" +
" GROUP BY gestione, data_ord, num_ord, cod_cmac),\n" +
"\n" +
" machine_event_values AS (SELECT evento,\n" +
" IIF(tipologia = 'ENTRATA', 1, -1) AS value\n" +
" FROM dtb_ord_macc_eventi),\n" +
"\n" +
" in_production_machines AS (SELECT dtb.gestione,\n" +
" dtb.data_ord,\n" +
" dtb.num_ord,\n" +
" LAST_VALUE(dtb.data_mov) OVER (ORDER BY dtb.gestione,\n" +
" dtb.data_ord,\n" +
" dtb.num_ord) AS max_data_mov,\n" +
" LAST_VALUE(ev.value) OVER (ORDER BY dtb.gestione,\n" +
" dtb.data_ord,\n" +
" dtb.num_ord) AS final_value\n" +
" FROM dtb_ord_macc dtb\n" +
" INNER JOIN machine_last_event le\n" +
" ON dtb.data_ord = le.data_ord\n" +
" AND dtb.num_ord = le.num_ord\n" +
" AND dtb.gestione = le.gestione\n" +
" AND dtb.cod_cmac = le.cod_cmac\n" +
" AND dtb.data_mov = le.max_data_mov\n" +
" INNER JOIN machine_event_values ev\n" +
" ON dtb.evento = ev.evento\n" +
" CROSS APPLY setup\n" +
" WHERE dtb.data_ord BETWEEN setup.date_start AND setup.date_end),\n" +
"\n" +
" dtb_ord_with_max_step AS (SELECT gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" id_step AS id_step,\n" +
" MAX(id_step) OVER (PARTITION BY gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ord_steps.num_fase) AS max_id_step,\n" +
" num_fase,\n" +
" MAX(num_fase) OVER (PARTITION BY gestione,\n" +
" data_ord,\n" +
" num_ord) AS max_fase,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ord_steps.flag_step_attivo,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ord_steps.qta_lav,\n" +
" dtb_ord_steps.qta_prod,\n" +
" dtb_ord_steps.hr_num,\n" +
" dtb_ord_steps.posizione_out,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" SUM(CAST(DATEDIFF(S, data_iniz, ISNULL(data_fine, GETDATE())) AS BIGINT))\n" +
" OVER (PARTITION BY gestione,\n" +
" data_ord,\n" +
" num_ord,\n" +
" num_fase,\n" +
" dtb_ord_steps.cod_jfas) AS elapsed_time\n" +
" FROM dtb_ord_steps\n" +
" CROSS APPLY setup\n" +
" WHERE data_ord BETWEEN setup.date_start AND setup.date_end\n" +
" AND gestione = 'L'),\n" +
"\n" +
" dtb_ord_max_step AS (SELECT DISTINCT IIF(in_production_machines.max_data_mov IS NOT NULL AND\n" +
" (dtb_ord_with_max_step.id_step = 0 OR\n" +
" (dtb_ord_with_max_step.id_step > 0 AND\n" +
" dtb_ord_with_max_step.data_fine IS NOT NULL AND\n" +
" DATEDIFF(MINUTE,\n" +
" dtb_ord_with_max_step.data_fine,\n" +
" in_production_machines.max_data_mov) >\n" +
" 5)), 1, 0) AS starting_machines,\n" +
" dtb_ord_with_max_step.*\n" +
" FROM dtb_ord_with_max_step\n" +
" LEFT OUTER JOIN in_production_machines\n" +
" ON dtb_ord_with_max_step.data_ord =\n" +
" in_production_machines.data_ord\n" +
" AND\n" +
" dtb_ord_with_max_step.num_ord =\n" +
" in_production_machines.num_ord\n" +
" AND\n" +
" dtb_ord_with_max_step.gestione =\n" +
" in_production_machines.gestione\n" +
" AND in_production_machines.final_value = 1\n" +
"\n" +
" WHERE max_id_step = id_step),\n" +
"\n" +
" riga_ord_prod_w_materia_prima AS (SELECT dtb_ordr.data_ord AS data_ord_prod,\n" +
" dtb_ordr.num_ord AS num_ord_prod,\n" +
" dtb_ordr.riga_ord AS riga_ord_prod,\n" +
" dtb_ordr.gestione AS gestione_ord_prod,\n" +
" IIF(CONVERT(DATE, dtb_ordr.data_ord) >= CONVERT(DATE, GETDATE()),\n" +
" 'S',\n" +
" 'N') AS flag_avviabile,\n" +
" mtb_aart_prod.flag_tracciabilita,\n" +
" dtb_ordr.unt_ord,\n" +
" dtb_ordr.rap_conv,\n" +
" dtb_ordr.unt_ord2,\n" +
" CAST(ROUND(dtb_ordr.qta_ord2 /\n" +
" ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv2,\n" +
" dtb_ordr.unt_ord3,\n" +
" CAST(ROUND(dtb_ordr.qta_ord3 /\n" +
" ISNULL(NULLIF(dtb_ordr.qta_ord, 0), 1),\n" +
" 5) AS NUMERIC(20, 5)) AS rap_conv3,\n" +
" dtb_ordr.qta_ord,\n" +
" dtb_ordr.qta_ord2,\n" +
" dtb_ordr.qta_ord3,\n" +
" dtb_ordr.num_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), mtb_aart_prod.qta_cnf,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR'),\n" +
" mtb_aart_prod.qta_cnf /\n" +
" ISNULL(NULLIF(mtb_aart_prod.rap_conv2, 0), 1),\n" +
" mtb_aart_prod.qta_cnf)) AS cal_qta_cnf,\n" +
" IIF(dtb_ordr.colli_pedana = 0 OR dtb_ordr.colli_pedana = 1,\n" +
" IIF(mtb_aart_prod.colli_pedana = 0, 1, mtb_aart_prod.colli_pedana),\n" +
" dtb_ordr.colli_pedana)\n" +
" AS colli_pedana,\n" +
" dtb_ordr.pos_riga,\n" +
" dtb_ordr.cod_mdep,\n" +
"\n" +
" IIF(mtb_aart_prod.unt_mis IN ('PZ', 'NR'), 1,\n" +
" IIF(mtb_aart_prod.unt_mis2 IN ('PZ', 'NR') AND\n" +
" NULLIF(mtb_aart_prod.rap_conv2, 0) IS NOT NULL,\n" +
" mtb_aart_prod.rap_conv2,\n" +
" 1)) AS calc_rap_conv,\n" +
" mtb_aart_prod.gg_scad_partita,\n" +
" mtb_aart_prod.qta_cnf\n" +
" FROM dtb_ordr\n" +
" INNER JOIN mtb_aart mtb_aart_prod ON mtb_aart_prod.cod_mart = dtb_ordr.cod_mart\n" +
" WHERE dtb_ordr.gestione = 'A'),\n" +
"\n" +
" ord_lav AS (SELECT dtb_ordt.cod_jcom,\n" +
" riga_ord_prod_w_materia_prima.data_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.num_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.riga_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.flag_avviabile,\n" +
" riga_ord_prod_w_materia_prima.flag_tracciabilita,\n" +
" riga_ord_prod_w_materia_prima.unt_ord,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv\n" +
" ELSE CASE\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv,\n" +
" riga_ord_prod_w_materia_prima.unt_ord2,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv2\n" +
" ELSE CASE\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv2\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord2 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv2,\n" +
" riga_ord_prod_w_materia_prima.unt_ord3,\n" +
" CASE\n" +
" WHEN mtb_partita_mag.partita_mag IS NULL THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv3\n" +
" ELSE CASE\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis THEN\n" +
" riga_ord_prod_w_materia_prima.rap_conv3\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis2 THEN\n" +
" IIF(mtb_partita_mag.rap_conv2 IS NULL OR mtb_partita_mag.rap_conv2 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv2, mtb_partita_mag.rap_conv2)\n" +
" WHEN riga_ord_prod_w_materia_prima.unt_ord3 = mtb_aart.unt_mis3 THEN\n" +
" IIF(mtb_partita_mag.rap_conv3 IS NULL OR mtb_partita_mag.rap_conv3 = 0,\n" +
" riga_ord_prod_w_materia_prima.rap_conv3, mtb_partita_mag.rap_conv3)\n" +
" END\n" +
" END\n" +
" AS rap_conv3,\n" +
" ISNULL(dtb_ordt.descr_estesa_prod, dtb_ordt.descrizione_prod) AS descrizione_prod,\n" +
" riga_ord_prod_w_materia_prima.num_cnf *\n" +
" riga_ord_prod_w_materia_prima.cal_qta_cnf AS num_pezzi,\n" +
" riga_ord_prod_w_materia_prima.num_cnf,\n" +
" riga_ord_prod_w_materia_prima.gg_scad_partita,\n" +
" riga_ord_prod_w_materia_prima.qta_cnf,\n" +
" riga_ord_prod_w_materia_prima.colli_pedana,\n" +
" riga_ord_prod_w_materia_prima.num_cnf /\n" +
" riga_ord_prod_w_materia_prima.colli_pedana AS num_pedane,\n" +
" riga_ord_prod_w_materia_prima.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" CASE\n" +
" WHEN (dtb_ordt.flag_evaso_prod = 'I' OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S' AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" THEN 'I'\n" +
" WHEN flag_evaso_prod <> 'I' AND dtb_ordt.flag_evaso_forzato = 'S'\n" +
" THEN flag_evaso_prod\n" +
" END AS flag_ordine_evaso,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" mtb_tcol.descrizione AS descrizione_tcol,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc AS rag_soc_anag,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" ISNULL(riga_ord_prod_w_materia_prima.cod_mdep, dtb_ordt.cod_mdep) AS cod_mdep_prod,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas AS cod_jfas_lav,\n" +
" mtb_partita_mag.partita_mag,\n" +
" ISNULL(mtb_partita_mag.partita_mag_prod,\n" +
" mtb_partita_mag.partita_mag) AS partita_mag_prod,\n" +
" dtb_ordt.note AS note_lav,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" jtb_comt.descrizione AS descrizione_commessa,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" dtb_ord_steps.id_step,\n" +
" dtb_ord_steps.max_fase,\n" +
" dtb_ord_steps.num_fase,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR riga_ord_prod_w_materia_prima.colli_pedana > 1), 'Colli',\n" +
" jtb_cicl.unt_mis_prod)\n" +
" AS unt_mis_prod,\n" +
" IIF(mtb_aart.flag_qta_cnf_fissa = 'S' AND\n" +
" (mtb_aart.qta_cnf > 1 OR riga_ord_prod_w_materia_prima.colli_pedana > 1),\n" +
" riga_ord_prod_w_materia_prima.colli_pedana, jtb_cicl.qta_prod)\n" +
" AS qta_batch_prod,\n" +
" IIF(mtb_aart.qta_cnf > 1 OR riga_ord_prod_w_materia_prima.colli_pedana > 1,\n" +
" mtb_aart.qta_cnf,\n" +
" jtb_cicl.rap_conv_prod) AS rap_conv_prod,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ord_steps.qta_lav AS qta_lav,\n" +
" IIF(dtb_ord_steps.qta_prod <> 0, dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod) AS qta_prod,\n" +
" dtb_ord_steps.hr_num,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" dtb_ord_steps.posizione_out,\n" +
" 3600 / (ISNULL(NULLIF(jtb_dist_clav_dir.duration, 0), 1) /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) AS prod_std,\n" +
" dtb_ord_steps.elapsed_time,\n" +
" SUM(ISNULL(mtb_colr_carico.qta_col, 0)) AS qta_trasferite,\n" +
" COUNT(mtb_colr_carico.num_collo) AS udc_trasferiti,\n" +
" COUNT(colli_lotto.num_collo) AS uds_scaricati,\n" +
" CASE\n" +
" WHEN dtb_ord_steps.id_step = 0\n" +
" THEN IIF(dtb_ord_steps.starting_machines = 1, 'IN AVVIO', 'PROGRAMMATO')\n" +
" WHEN dtb_ord_steps.data_fine IS NULL\n" +
" THEN 'IN CORSO'\n" +
" ELSE 'IN PAUSA'\n" +
" END AS stato,\n" +
" CONVERT(INT, SUM(ISNULL(\n" +
" mtb_colr_carico.qta_col / riga_ord_prod_w_materia_prima.calc_rap_conv,\n" +
" 0))) AS pz_trasferiti,\n" +
" CASE\n" +
" WHEN (jtb_dist_clav_dir.duration / ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr_carico.qta_col, 0))) > 0\n" +
" THEN\n" +
" (jtb_dist_clav_dir.duration /\n" +
" ISNULL(NULLIF(jtb_cicl.rap_conv_prod, 0), 1)) *\n" +
" (dtb_ordt.qta_prod * dtb_ordt.rap_conv_prod -\n" +
" SUM(ISNULL(mtb_colr_carico.qta_col, 0)))\n" +
" ELSE 0 END AS run_time_sec,\n" +
" jl.id_lotto,\n" +
" jlt.data_lotto,\n" +
" mtb_aart.peso_kg,\n" +
" dtb_ordt.data_cons_prod_max\n" +
" FROM dtb_ord_max_step dtb_ord_steps\n" +
" INNER JOIN dtb_ordt ON dtb_ord_steps.data_ord = dtb_ordt.data_ord\n" +
" AND dtb_ord_steps.num_ord = dtb_ordt.num_ord\n" +
" AND dtb_ord_steps.gestione = dtb_ordt.gestione\n" +
" LEFT OUTER JOIN setup_depo setupCaricoImmediato\n" +
" ON dtb_ordt.cod_mdep = setupCaricoImmediato.cod_mdep\n" +
" LEFT OUTER JOIN jtb_dist_clav_dir\n" +
" ON dtb_ordt.cod_prod = jtb_dist_clav_dir.cod_prod AND\n" +
" dtb_ordt.cod_jfas = jtb_dist_clav_dir.cod_jfas\n" +
" LEFT OUTER JOIN mtb_partita_mag\n" +
" ON dtb_ordt.partita_mag = mtb_partita_mag.partita_mag AND\n" +
" dtb_ordt.cod_prod = mtb_partita_mag.cod_mart AND\n" +
" mtb_partita_mag.flag_stato = 'A'\n" +
" LEFT OUTER JOIN mtb_colr_sum mtb_colr_carico\n" +
" ON dtb_ordt.data_ord = mtb_colr_carico.data_ord AND\n" +
" dtb_ordt.gestione = mtb_colr_carico.gestione AND\n" +
" dtb_ordt.num_ord = mtb_colr_carico.num_ord AND\n" +
" dtb_ordt.cod_prod = mtb_colr_carico.cod_mart\n" +
" LEFT OUTER JOIN jtb_comt ON dtb_ordt.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN riga_ord_prod_w_materia_prima\n" +
" ON riga_ord_prod_w_materia_prima.gestione_ord_prod =\n" +
" dtb_ordt.gestione_rif AND\n" +
" riga_ord_prod_w_materia_prima.data_ord_prod =\n" +
" dtb_ordt.data_ord_rif AND\n" +
" riga_ord_prod_w_materia_prima.num_ord_prod =\n" +
" dtb_ordt.num_ord_rif AND\n" +
" riga_ord_prod_w_materia_prima.riga_ord_prod = dtb_ordt.riga_ord_rif\n" +
" LEFT OUTER JOIN jtb_cicl ON jtb_cicl.cod_prod = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN mtb_aart ON mtb_aart.cod_mart = dtb_ordt.cod_prod\n" +
" LEFT OUTER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag\n" +
" LEFT OUTER JOIN mtb_tcol ON dtb_ordt.cod_tcol_UL = mtb_tcol.cod_tcol\n" +
" LEFT OUTER JOIN jtb_lotr jl\n" +
" ON dtb_ord_steps.cod_jfas = jl.cod_jfas AND\n" +
" dtb_ordt.gestione = jl.gestione AND\n" +
" dtb_ordt.data_ord = jl.data_ord AND\n" +
" dtb_ordt.num_ord = jl.num_ord\n" +
" LEFT OUTER JOIN jtb_lott jlt\n" +
" ON jl.cod_jfas = jlt.cod_jfas AND jl.id_lotto = jlt.id_lotto\n" +
" LEFT OUTER JOIN mtb_colt colli_lotto ON jlt.id_lotto = colli_lotto.id_lotto\n" +
"\n" +
" CROSS APPLY setup\n" +
" WHERE dtb_ordt.flag_annulla = 'N'\n" +
" AND dtb_ord_steps.data_ord BETWEEN setup.date_start AND setup.date_end\n" +
" AND (setup.flag_evaso IS NULL\n" +
" OR (\n" +
" (setup.flag_evaso = 'I'\n" +
" AND\n" +
" dtb_ord_steps.flag_step_attivo = 'S'\n" +
" AND (flag_evaso_prod = 'I'\n" +
" OR\n" +
" (setupCaricoImmediato.flag_carico_scarico_immediato = 'S'\n" +
" AND\n" +
" flag_evaso_prod = 'E'))\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" )\n" +
" OR (setup.flag_evaso = 'E'\n" +
" AND (flag_evaso_prod = 'E' OR jlt.data_chiusura IS NOT NULL)\n" +
" AND dtb_ordt.flag_evaso_forzato = 'S')\n" +
" )\n" +
" )\n" +
" AND (setup.cod_jfas IS NULL\n" +
" OR dtb_ord_steps.cod_jfas = setup.cod_jfas)\n" +
" AND (setup.cod_anag IS NULL\n" +
" OR dtb_ordt.cod_anag = setup.cod_anag)\n" +
" GROUP BY riga_ord_prod_w_materia_prima.data_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.num_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.riga_ord_prod,\n" +
" riga_ord_prod_w_materia_prima.flag_avviabile,\n" +
" riga_ord_prod_w_materia_prima.flag_tracciabilita,\n" +
" riga_ord_prod_w_materia_prima.unt_ord,\n" +
" mtb_partita_mag.rap_conv2,\n" +
" mtb_partita_mag.rap_conv3,\n" +
" dtb_ordt.note,\n" +
" riga_ord_prod_w_materia_prima.rap_conv,\n" +
" dtb_ordt.descrizione_prod,\n" +
" dtb_ordt.descr_estesa_prod,\n" +
" riga_ord_prod_w_materia_prima.num_cnf,\n" +
" mtb_aart.qta_cnf,\n" +
" mtb_aart.gg_scad_partita,\n" +
" mtb_aart.flag_qta_cnf_fissa,\n" +
" riga_ord_prod_w_materia_prima.pos_riga,\n" +
" dtb_ordt.flag_evaso_prod,\n" +
" dtb_ordt.flag_evaso_forzato,\n" +
" dtb_ordt.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" dtb_ord_steps.cod_jfas,\n" +
" dtb_ordt.cod_jfas,\n" +
" dtb_ordt.cod_jcom,\n" +
" mtb_partita_mag.partita_mag,\n" +
" mtb_partita_mag.partita_mag_prod,\n" +
" mtb_partita_mag.data_scad,\n" +
" dtb_ordt.cod_prod,\n" +
" dtb_ordt.data_iniz_prod,\n" +
" dtb_ord_steps.id_step,\n" +
" dtb_ord_steps.data_iniz,\n" +
" dtb_ord_steps.data_fine,\n" +
" dtb_ordt.cod_tcol_UL,\n" +
" dtb_ordt.cod_anag,\n" +
" gtb_anag.rag_soc,\n" +
" gtb_anag.part_iva,\n" +
" dtb_ordt.rif_ord,\n" +
" dtb_ordt.cod_vdes,\n" +
" dtb_ordt.cod_mdep,\n" +
" riga_ord_prod_w_materia_prima.cod_mdep,\n" +
" mtb_aart.colli_pedana,\n" +
" dtb_ord_steps.qta_prod,\n" +
" dtb_ordt.qta_prod,\n" +
" jtb_dist_clav_dir.duration,\n" +
" jtb_comt.descrizione,\n" +
" dtb_ord_steps.elapsed_time,\n" +
" riga_ord_prod_w_materia_prima.colli_pedana,\n" +
" dtb_ord_steps.hr_num,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.unt_mis2,\n" +
" mtb_aart.rap_conv2,\n" +
" mtb_aart.unt_mis3,\n" +
" mtb_aart.rap_conv3,\n" +
" riga_ord_prod_w_materia_prima.unt_ord2,\n" +
" riga_ord_prod_w_materia_prima.unt_ord3,\n" +
" riga_ord_prod_w_materia_prima.qta_ord,\n" +
" riga_ord_prod_w_materia_prima.qta_ord2,\n" +
" riga_ord_prod_w_materia_prima.qta_ord3,\n" +
" riga_ord_prod_w_materia_prima.rap_conv2,\n" +
" riga_ord_prod_w_materia_prima.rap_conv3,\n" +
" riga_ord_prod_w_materia_prima.qta_cnf,\n" +
" riga_ord_prod_w_materia_prima.cal_qta_cnf,\n" +
" riga_ord_prod_w_materia_prima.gg_scad_partita,\n" +
" jtb_cicl.qta_prod,\n" +
" jtb_cicl.rap_conv_prod,\n" +
" dtb_ord_steps.descrizione_attivita,\n" +
" dtb_ord_steps.posizione_out,\n" +
" jtb_cicl.unt_mis_prod,\n" +
" mtb_tcol.descrizione,\n" +
" dtb_ordt.qta_prod,\n" +
" dtb_ordt.rap_conv_prod,\n" +
" setupCaricoImmediato.flag_carico_scarico_immediato,\n" +
" dtb_ord_steps.num_fase, dtb_ord_steps.qta_lav,\n" +
" jl.id_lotto, jlt.data_lotto, mtb_aart.peso_kg, dtb_ordt.data_cons_prod_max,\n" +
" dtb_ord_steps.id_step,\n" +
" dtb_ord_steps.max_fase,\n" +
" dtb_ord_steps.starting_machines)\n" +
" SELECT ROW_NUMBER() OVER (ORDER BY data_ord, num_ord_prod, pos_riga, num_ord) AS sort,\n" +
" cod_jcom,\n" +
" data_ord_prod,\n" +
" num_ord_prod,\n" +
" riga_ord_prod,\n" +
" flag_avviabile,\n" +
" flag_tracciabilita,\n" +
" unt_ord,\n" +
" rap_conv,\n" +
" unt_ord2,\n" +
" rap_conv2,\n" +
" unt_ord3,\n" +
" rap_conv3,\n" +
" descrizione_prod,\n" +
" num_pezzi,\n" +
" num_cnf,\n" +
" gg_scad_partita,\n" +
" qta_cnf,\n" +
" colli_pedana,\n" +
" num_pedane,\n" +
" pos_riga,\n" +
" flag_evaso_prod,\n" +
" flag_evaso_forzato,\n" +
" flag_ordine_evaso,\n" +
" gestione,\n" +
" data_ord,\n" +
" cod_tcol_UL,\n" +
" descrizione_tcol,\n" +
" cod_anag,\n" +
" rag_soc_anag,\n" +
" part_iva,\n" +
" rif_ord,\n" +
" cod_vdes,\n" +
" cod_mdep,\n" +
" cod_mdep_prod,\n" +
" num_ord,\n" +
" cod_jfas,\n" +
" cod_jfas_lav,\n" +
" partita_mag,\n" +
" partita_mag_prod,\n" +
" note_lav,\n" +
" data_scad,\n" +
" cod_prod,\n" +
" descrizione_commessa,\n" +
" data_iniz_prod,\n" +
" id_step,\n" +
" unt_mis_prod,\n" +
" qta_batch_prod,\n" +
" rap_conv_prod,\n" +
" data_iniz,\n" +
" data_fine,\n" +
" qta_prod,\n" +
" qta_lav,\n" +
" max_fase,\n" +
" num_fase,\n" +
" hr_num,\n" +
" descrizione_attivita,\n" +
" posizione_out,\n" +
" prod_std,\n" +
" elapsed_time,\n" +
" qta_trasferite,\n" +
" udc_trasferiti,\n" +
" uds_scaricati,\n" +
" stato,\n" +
" pz_trasferiti,\n" +
" run_time_sec,\n" +
" SUM(run_time_sec) OVER (PARTITION BY cod_jfas, data_ord_prod) AS cumulative_run_time_sec,\n" +
" CONVERT(INT, run_time_sec / 3600) AS run_time_hour,\n" +
" ROUND((run_time_sec / 3600 - CONVERT(INT, run_time_sec / 3600)) * 60, 0) AS run_time_min,\n" +
" CASE\n" +
" WHEN setup_run_time.flag_restart = 'S' THEN\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas, data_ord_prod ORDER BY stato, cod_jfas, data_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" CASE\n" +
" WHEN (data_ord_prod > GETDATE() AND (data_iniz IS NULL OR data_fine IS NOT NULL))\n" +
" THEN DATEADD(HH, 7, data_ord_prod)\n" +
" ELSE GETDATE() END)\n" +
" ELSE\n" +
" DATEADD(SECOND, SUM(run_time_sec)\n" +
" OVER (PARTITION BY cod_jfas ORDER BY stato, cod_jfas, data_ord_prod, num_ord_prod, pos_riga ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),\n" +
" GETDATE())\n" +
" END AS run_time_end,\n" +
" id_lotto,\n" +
" data_lotto,\n" +
" peso_kg,\n" +
" data_cons_prod_max\n" +
" FROM ord_lav\n" +
" CROSS APPLY setup_run_time");
}
@Override
public void down() throws Exception {
}
}

View File

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

View File

@@ -1,186 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251015152419 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomer(IntegryCustomer.Biolevante))
createOrUpdateFunction("MPS_grid", "Create function dbo.MPS_grid(@timeBucket char(1) = 'W' )\n" +
" RETURNS TABLE AS\n" +
" RETURN\n" +
" (\n" +
" --@timeBucket D=giorno; W=settimana (default); M=Mese\n" +
" with horizon as\n" +
" (\n" +
" select dateadd(day,-1,convert(date, getdate())) as t0_from, dateadd(day,-1,convert(date, getdate())) as t0_to,\n" +
" dateadd(day, 0,convert(date, getdate())) as t1_from, \n" +
" case @timeBucket \n" +
" when 'D' then CONVERT(date, getdate())\n" +
" when 'W' then DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) \n" +
" when 'M' then EOMonth(getdate())\n" +
" end as t1_to,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,1,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(DAY,1,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(day,1,EOMonth(getdate()))\n" +
" end as t2_from,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,1,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(WEEK,1,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(MONTH,1,EOMonth(getdate()))\n" +
" end as t2_to,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,1,dateadd(day,1,CONVERT(date, getdate())))\n" +
" when 'W' then dateadd(day,1,dateadd(WEEK,1,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE))))\n" +
" when 'M' then dateadd(day,1,dateadd(MONTH,1,EOMonth(getdate())))\n" +
" end as t3_from,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,2,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(WEEK,2,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(MONTH,2,EOMonth(getdate()))\n" +
" end as t3_to,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,3,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(day,1,dateadd(WEEK,2,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE))))\n" +
" when 'M' then dateadd(day,1,dateadd(MONTH,2,EOMonth(getdate())))\n" +
" end as t4_from,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,3,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(WEEK,3,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(MONTH,3,EOMonth(getdate()))\n" +
" end as t4_to,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,4,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(day,1,dateadd(WEEK,3,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE))))\n" +
" when 'M' then dateadd(day,1,dateadd(MONTH,3,EOMonth(getdate())))\n" +
" end as t5_from,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,4,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(WEEK,4,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(MONTH,4,EOMonth(getdate()))\n" +
" end as t5_to,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,5,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(day,1,dateadd(WEEK,4,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE))))\n" +
" when 'M' then dateadd(day,1,dateadd(MONTH,4,EOMonth(getdate())))\n" +
" end as t6_from,\n" +
" case @timeBucket \n" +
" when 'D' then dateadd(day,5,CONVERT(date, getdate()))\n" +
" when 'W' then dateadd(WEEK,5,DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))\n" +
" when 'M' then dateadd(MONTH,5,EOMonth(getdate()))\n" +
" end as t6_to\n" +
" ),\n" +
"\n" +
" AlberoDiCLassificazione as\n" +
" --Albero classificazione Articoli personalizzato per Olio Levante, da sostituire con vista su database di AI per forecast con algoritmo Tuidi\n" +
" (select distinct --mtb_aart.cod_mart, mtb_aart.descrizione, \n" +
" mtb_aart.cod_mgrp + Replicate('_',3-len(mtb_aart.cod_mgrp))+\n" +
" isNull(mtb_aart.cod_mstp,'0000')+\n" +
" ISNULL(mtb_aart.cod_msfa,'') as hierarchy_code,\n" +
" mtb_aart.cod_mgrp as level_1_code, mtb_grup.descrizione as level_1_description,\n" +
" isNull(mtb_aart.cod_mstp,'000') as level_2_code, isNull(mtb_tipi.descrizione+' '+mtb_stip.descrizione,'000') as level_2_description,\n" +
" mtb_aart.cod_msfa as level_3_code, mtb_sfam.descrizione as level_3_description\n" +
" from mtb_aart inner join mtb_grup on mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" inner join mtb_sgrp on mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp and mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" left outer join mtb_sfam on mtb_aart.cod_mgrp = mtb_sfam.cod_mgrp and mtb_aart.cod_msgr = mtb_sfam.cod_msgr and mtb_aart.cod_msfa = mtb_sfam.cod_msfa\n" +
" left outer join mtb_tipi on mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
" left outer join mtb_stip on mtb_aart.cod_mtip = mtb_stip.cod_mtip and mtb_aart.cod_mstp = mtb_stip.cod_mstp\n" +
" \n" +
" Where mtb_aart.cod_mgrp in ('AP','C','CO','S','SO','SOR') and mtb_aart.flag_stato = 'A'\n" +
" )\n" +
" ,\n" +
" ArticoliRiclassificati as\n" +
" (\n" +
" --Vista Articoli personalizzata per Olio Levante, da sostituire con vista su database di AI per forecast con algoritmo Tuidi\n" +
" select \n" +
" cod_mart as art_code,\n" +
" descrizione_estesa as description,\n" +
" null as art_info,\n" +
" marchio as brand,\n" +
" bar_code as ean,\n" +
" null as img_url,\n" +
" gg_scad_partita as shelf_life,\n" +
" unt_mis as uom_purchase,\n" +
" unt_mis as uom_selling,\n" +
" peso_kg as weight,\n" +
" IIF(flag_stato='A',1,0) as status,\n" +
" mtb_aart.cod_mgrp + Replicate('_',3-len(mtb_aart.cod_mgrp))+\n" +
" isNull(mtb_aart.cod_mstp,'0000')+\n" +
" ISNULL(mtb_aart.cod_msfa,'') as hierarchy_code\n" +
" from mtb_aart inner join mtb_grup on mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" inner join mtb_sgrp on mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp and mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" left outer join mtb_sfam on mtb_aart.cod_mgrp = mtb_sfam.cod_mgrp and mtb_aart.cod_msgr = mtb_sfam.cod_msgr and mtb_aart.cod_msfa = mtb_sfam.cod_msfa\n" +
" left outer join mtb_tipi on mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
" left outer join mtb_stip on mtb_aart.cod_mtip = mtb_stip.cod_mtip and mtb_aart.cod_mstp = mtb_stip.cod_mstp\n" +
" where mtb_aart.cod_mgrp in ('AP','C','CO','S','SO','SOR') and mtb_aart.flag_stato = 'A'\n" +
" ),\n" +
"\n" +
" forecast as\n" +
" (\n" +
" select 'FORECAST' as causale,\n" +
" mtb_aart.cod_mgrp, mtb_aart.cod_msgr,\n" +
" mtb_aart.cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" dateadd(year, 1,vend.data_doc) as data_vend,\n" +
" -vend.qtaVendUM1 as qtaPrevista,\n" +
" null as partita_mag,\n" +
" 0 as qta_progressiva,\n" +
" null as gestione, null as data_ord, null as num_ord,\n" +
" null as cod_mdep,\n" +
" 'N' as isOrdTrasf,\n" +
" 'N' as flag_sospeso,\n" +
" null as stato_partita\n" +
" \n" +
" from OlapPPVendite vend inner join mtb_aart on vend.cod_prod = mtb_aart.cod_mart\n" +
" where data_doc between dateadd(year, -1, CONVERT(date, getDate())) and \n" +
" case @timeBucket\n" +
" when 'D' then DATEADD(DAY,6,dateadd(year, -1, CONVERT(date, getDate())))\n" +
" WHEN 'W' then DATEADD(week,6,dateadd(year, -1, CONVERT(date, getDate())))\n" +
" WHEN 'M' then DATEADD(month,6,dateadd(year, -1, CONVERT(date, getDate())))\n" +
" end\n" +
" )\n" +
"\n" +
"\n" +
" SELECT clas.*, --mrp.cod_mart, mrp.descrizione,\n" +
"\n" +
" --inserire qui la riga del forecast\n" +
" case when causale like 'FORECAST' then '1 - FORECAST'\n" +
" when causale like '%GIACENZA%' then '3 - DISPONIBILITA'\n" +
" when causale like '%ORD.VEND.%' then '2 - ORDINI VENDITA'\n" +
" when causale like '%ORD.LAVORAZ.%' then '4 - ORDINI LAVORAZIONE' end as MPS_row,\n" +
" case when causale like '%GIACENZA%' then mrp.qta else 0 end as bucket0,\n" +
" case when (mrp.data_mrp < horizon.t1_from OR mrp.data_mrp between horizon.t1_from and horizon.t1_to) and causale not like '%GIACENZA%' then mrp.qta else 0 end as bucket1,\n" +
" case when mrp.data_mrp between horizon.t2_from and horizon.t2_to then mrp.qta else 0 end as bucket2,\n" +
" case when mrp.data_mrp between horizon.t3_from and horizon.t3_to then mrp.qta else 0 end as bucket3,\n" +
" case when mrp.data_mrp between horizon.t4_from and horizon.t4_to then mrp.qta else 0 end as bucket4,\n" +
" case when mrp.data_mrp between horizon.t5_from and horizon.t5_to then mrp.qta else 0 end as bucket5,\n" +
" case when mrp.data_mrp between horizon.t6_from and horizon.t6_to then mrp.qta else 0 end as bucket6,\n" +
" case when mrp.data_mrp > horizon.t6_to then mrp.qta else 0 end as bucketOver,\n" +
" mtb_aart.unt_mis,\n" +
" mtb_aart.qta_cnf,\n" +
" isNull(jtb_cicl.lotto_min_ord, mtb_aart.qta_cnf*mtb_aart.colli_pedana) as LotSize,\n" +
" mrp.*\n" +
" FROM (\n" +
" select * from [dbo].[MRP_DailyMaterialReq] () \n" +
" union\n" +
" select * from forecast\n" +
" )\n" +
" \n" +
" mrp inner join ArticoliRiclassificati art on mrp.cod_mart = art.art_code\n" +
" inner join AlberoDiCLassificazione clas on art.hierarchy_code = clas.hierarchy_code\n" +
" inner join horizon on mrp.data_mrp >= horizon.t0_from\n" +
" inner join mtb_aart on mrp.cod_mart = mtb_aart.cod_mart\n" +
" left outer join jtb_cicl on mrp.cod_mart = jtb_cicl.cod_mart\n" +
" )");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,80 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251020113516 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("MPS_albero_classificazione","create view MPS_albero_classificazione as\n" +
"select distinct mtb_aart.cod_mart, mtb_aart.descrizione,\n" +
" mtb_aart.cod_mgrp + Replicate('_', 3 - len(mtb_aart.cod_mgrp)) +\n" +
" isNull(mtb_aart.cod_mstp, '0000') +\n" +
" ISNULL(mtb_aart.cod_msfa, '') as hierarchy_code,\n" +
" mtb_aart.cod_mgrp as level_1_code,\n" +
" mtb_grup.descrizione as level_1_description,\n" +
" isNull(mtb_aart.cod_mstp, '000') as level_2_code,\n" +
" isNull(mtb_tipi.descrizione + ' ' + mtb_stip.descrizione, '000') as level_2_description,\n" +
" mtb_aart.cod_msfa as level_3_code,\n" +
" mtb_sfam.descrizione as level_3_description\n" +
"from mtb_aart\n" +
" inner join mtb_grup on mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" inner join mtb_sgrp\n" +
" on mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp and mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" left outer join mtb_sfam on mtb_aart.cod_mgrp = mtb_sfam.cod_mgrp and\n" +
" mtb_aart.cod_msgr = mtb_sfam.cod_msgr and\n" +
" mtb_aart.cod_msfa = mtb_sfam.cod_msfa\n" +
" left outer join mtb_tipi on mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
" left outer join mtb_stip on mtb_aart.cod_mtip = mtb_stip.cod_mtip and\n" +
" mtb_aart.cod_mstp = mtb_stip.cod_mstp\n" +
"\n" +
"Where mtb_grup.tipo_mgrp in ('PF', 'SL')\n" +
" and mtb_aart.flag_stato = 'A'\n");
if (isCustomerDb(IntegryCustomerDB.Biolevante_Biolevante)){
createOrUpdateView("MPS_albero_classificazione","CREATE view MPS_albero_classificazione as\n" +
" select distinct mtb_aart.cod_mgrp + Replicate('_', 3 - len(mtb_aart.cod_mgrp)) +\n" +
" isNull(mtb_aart.cod_mstp, '0000') +\n" +
" ISNULL(mtb_aart.cod_msfa, '') as hierarchy_code,\n" +
" mtb_aart.cod_mart,\n" +
" mtb_aart.descrizione,\n" +
" mtb_aart.cod_mgrp as level_1_code,\n" +
" mtb_grup.descrizione as level_1_description,\n" +
" mtb_aart.cod_mstp as level_2_code,\n" +
" mtb_tipi.descrizione + ' ' + mtb_stip.descrizione as level_2_description,\n" +
" mtb_aart.cod_msfa as level_3_code,\n" +
" mtb_sfam.descrizione as level_3_description,\n" +
" mtb_aart.unt_mis,\n" +
" (IIF(jtb_cicl.lotto_min_ord > 0, jtb_cicl.lotto_min_ord * jtb_cicl.rap_conv_prod,\n" +
" mtb_aart.qta_cnf * mtb_aart.colli_pedana)) as lot_size\n" +
" from mtb_aart\n" +
" inner join mtb_grup on mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" inner join mtb_sgrp\n" +
" on mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp and mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" left outer join mtb_sfam on mtb_aart.cod_mgrp = mtb_sfam.cod_mgrp and\n" +
" mtb_aart.cod_msgr = mtb_sfam.cod_msgr and\n" +
" mtb_aart.cod_msfa = mtb_sfam.cod_msfa\n" +
" left outer join mtb_tipi on mtb_aart.cod_mtip = mtb_tipi.cod_mtip\n" +
" left outer join mtb_stip on mtb_aart.cod_mtip = mtb_stip.cod_mtip and\n" +
" mtb_aart.cod_mstp = mtb_stip.cod_mstp\n" +
" left outer join jtb_cicl on mtb_aart.cod_mart = jtb_cicl.cod_prod\n" +
"\n" +
"\n" +
" Where mtb_aart.cod_mgrp in ('AP', 'C', 'CO', 'S', 'SO', 'SOR')\n" +
" and not tipo_mgrp = 'ACC'\n" +
" and mtb_aart.flag_stato = 'A'\n" +
" \n");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,26 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251024113416 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE mtb_missione_mag_auto_det " +
"ALTER COLUMN posizione_in VARCHAR (MAX);",
"ALTER TABLE mtb_missione_mag_auto_det " +
"ALTER COLUMN posizione_out VARCHAR (MAX);",
"ALTER TABLE dtb_ord_steps " +
"ALTER COLUMN posizione_out VARCHAR (MAX);");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,34 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.MtbDepoPosizioni;
import it.integry.ems_model.utility.UtilityList;
import it.integry.ems_model.utility.dto.IndexTableDTO;
import java.util.ArrayList;
public class Migration_20251028122833 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createIndex(
new IndexTableDTO()
.setIndexName("ix_metb_depo_posizioni_posizione_cod_mdep")
.setTableName(MtbDepoPosizioni.ENTITY)
.setColumnsIndex(new ArrayList<IndexTableDTO.ColumnIndex>() {{
add(new IndexTableDTO.ColumnIndex("posizione"));
add(new IndexTableDTO.ColumnIndex("cod_mdep"));
}})
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -1,33 +0,0 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.CtbAmac;
import it.integry.ems_model.types.OperationType;
public class Migration_20251106114932 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Biolevante_Biolevante)){
CtbAmac eurofork = new CtbAmac();
eurofork.setCodCmac("MAG-WH1")
.setDescrizione("MAGAZZINO AUTOMATICO EUROFORK L7")
.setCodJfas("L7")
.setPosizione("WH1C3")
.setFlagAttivo(true)
.setMachineType(CtbAmac.MachineType.SILOS_MACHINE.getValue())
.setOperation(OperationType.INSERT);
eurofork.manageWithParentConnection(connection);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -10,6 +10,9 @@ public class Migration_20251114163222 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("ALTER TABLE vtb_dest ADD data_mod DATETIME");
executeStatement("ALTER TABLE ptb_pros ADD data_mod DATETIME");
executeStatement("ALTER TABLE ptb_pros_rif ADD data_mod DATETIME");

View File

@@ -10,6 +10,8 @@ public class Migration_20251117100418 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateProcedure("sp_moveTableToFileGroup", "CREATE PROCEDURE [dbo].[sp_moveTableToFileGroup] (@tableName varchar(max), @fileGroup varchar(max), @fileName varchar(max), @createFile varchar(1) = 'N')\n" +
"AS\n" +

View File

@@ -11,6 +11,9 @@ public class Migration_20251118172320 extends BaseMigration implements Migration
return;
if (isDMS())
return;
createOrUpdateTrigger("tr_changeTipoRiep", "CREATE TRIGGER [dbo].[tr_changeTipoRiep]\n" +
" ON [dbo].[ctb_cont]\n" +
" INSTEAD OF update\n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251119084719 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table dtb_note_doc add flag_bio bit not null default 0");
}

View File

@@ -11,6 +11,9 @@ public class Migration_20251120123843 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table gtb_anag alter column citta varchar(60)");
createOrUpdateFunction("IntToBase36", "CREATE FUNCTION dbo.IntToBase36(@n bigint)\n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251120153047 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table gtb_anag alter column rag_soc varchar(100)");
}

View File

@@ -10,6 +10,8 @@ public class Migration_20251120181812 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateView("cvw_tipi_pdc", "CREATE VIEW cvw_tipi_pdc AS\n" +
"SELECT '1' AS codice, Upper('Attivo') descrizione, '1' as sezione\n" +

View File

@@ -10,6 +10,8 @@ public class Migration_20251121150257 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getMaggiorazioneSpese", "CREATE FUNCTION [dbo].[getMaggiorazioneSpese](@dataValidita datetime, @codVlis varchar(5), @codSpes varchar(5)) \n" +
"RETURNS TABLE AS \n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251124135552 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getGrigliaAcquisto","CREATE FUNCTION [dbo].[getGrigliaAcquisto] (@dataValidita datetime, @codAlis varchar(5), @codMdep varchar(5), @codArtFor varchar(25), @codMart varchar(15)) RETURNS TABLE AS\n" +
"return\n" +
"SELECT *\n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251124164630 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getMaterialiDistinta",
"CREATE FUNCTION [dbo].[getMaterialiDistinta](@codProd VARCHAR(15), @explodeSemilavorati BIT)\n" +
" RETURNS TABLE\n" +

View File

@@ -10,6 +10,9 @@ public class Migration_20251125095325 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateFunction("getMaterialiDistinta",
"CREATE FUNCTION [dbo].[getMaterialiDistinta](@codProd VARCHAR(15), @explodeSemilavorati BIT)\n" +
" RETURNS TABLE\n" +

View File

@@ -0,0 +1,60 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251125100117 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("create table dbo.mtb_livelli_anomalie\n" +
"(\n" +
" id bigint identity\n" +
" constraint pk_mtb_livelli_anomalie\n" +
" primary key,\n" +
" descrizione varchar(255) not null,\n" +
" hex_colore varchar(20) default '#ffffff',\n" +
" escludi_picking_vendita bit default 0 not null,\n" +
" escludi_picking_lavorazione bit default 0 not null\n" +
")");
executeStatement("create table dbo.mtb_anomalie_ul\n" +
"(\n" +
" id bigint identity\n" +
" constraint pk_mtb_anomalie_ul\n" +
" primary key,\n" +
" descrizione varchar(200) not null,\n" +
" annotazioni varchar(400),\n" +
" inizio_anomalia datetime,\n" +
" fine_anomalia datetime,\n" +
" id_livello_anomalia bigint not null\n" +
" constraint mtb_anomalie_ul_mtb_livelli_anomalie_id_fk\n" +
" references dbo.mtb_livelli_anomalie,\n" +
" cod_jfas varchar(5)\n" +
" constraint mtb_anomalie_ul_jtb_fasi_cod_jfas_fk\n" +
" references dbo.jtb_fasi\n" +
")");
executeStatement("alter table dbo.mtb_colt\n" +
" add id_anomalia bigint\n" +
" constraint mtb_colt_mtb_anomalie_ul_id_fk\n" +
" references dbo.mtb_anomalie_ul (id)");
if (isCustomerDb(IntegryCustomerDB.RossoGargano_RossoGargano)) {
executeInsertStatement("INSERT INTO mtb_livelli_anomalie (descrizione, hex_colore, escludi_picking_vendita, escludi_picking_lavorazione) VALUES (N'Prodotto non conforme', N'#FF0000', 1, 1)");
executeInsertStatement("INSERT INTO mtb_livelli_anomalie (descrizione, hex_colore, escludi_picking_vendita, escludi_picking_lavorazione) VALUES (N'Prodotto uscito con alte temperature', N'#E36C0A', 1, 0)");
executeInsertStatement("INSERT INTO mtb_livelli_anomalie (descrizione, hex_colore, escludi_picking_vendita, escludi_picking_lavorazione) VALUES (N'Pedana in osservazione', N'#FFC000', 1, 0)");
executeInsertStatement("INSERT INTO mtb_livelli_anomalie (descrizione, hex_colore, escludi_picking_vendita, escludi_picking_lavorazione) VALUES (N'Barattoli con difetto di marcatura', N'#00B050', 0, 0)");
executeInsertStatement("INSERT INTO mtb_livelli_anomalie (descrizione, hex_colore, escludi_picking_vendita, escludi_picking_lavorazione) VALUES (N'Barattoli difettati', N'#00B0F0', 0, 1)");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -10,6 +10,9 @@ public class Migration_20251125105713 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateProcedure("MRP_UpdateQtaImpProx", "CREATE Procedure [dbo].[MRP_UpdateQtaImpProx](@elencoArticoli varchar(max) = null)\n" +
"AS \n" +

View File

@@ -12,6 +12,9 @@ public class Migration_20251127104634 extends BaseMigration implements Migration
return;
if (!isCustomer(IntegryCustomer.Biolevante)) return;
if (isDMS())
return;
createOrUpdateFunction("f_pp_consuntivo_prod_tracc", "CREATE function [dbo].[f_pp_consuntivo_prod_tracc] (@as_codProdParent varchar(15), @as_partitaMagParent varchar(20), @ac_qtaProdParent numeric(20,5), @as_codProd varchar(15), @as_partitaMag varchar(20), @ac_qtaProd numeric(20, 5), @ai_livello integer, @as_item_id varchar(255), @ai_idRiga integer) \n" +
"RETURNS @dettCosti TABLE(livello integer, \n" +
" item_id varchar(255),\n" +

View File

@@ -15,6 +15,9 @@ public class Migration_20251127114735 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement(
"exec DropForeignKey 'mtb_aart', 'mtb_marchio_linea'",
"exec DropForeignKey 'mtb_aart', 'mtb_marchio_slinea'",

View File

@@ -10,6 +10,9 @@ public class Migration_20251128153854 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("update stb_menu set flag_attivo = 'N' where cod_opz in ('mg077', 'mg078', 'mg079', 'mg080')");
}

View File

@@ -11,6 +11,9 @@ public class Migration_20251128190648 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if (isDMS())
return;
if (isCustomerDb(IntegryCustomerDB.Carelli_Winact)) {
dropTable("crl_amac_manutenzioni_files");
dropTable("ctb_amac_manutenzioni");

View File

@@ -3,14 +3,14 @@ package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251015111009 extends BaseMigration implements MigrationModelInterface {
public class Migration_20251201090147 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table dbo.dtb_ord_steps add posizione_out varchar(40)");
executeStatement("alter table ctb_cont add flag_attivo bit not null default 1");
}
@Override

View File

@@ -0,0 +1,62 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251201105344 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
createOrUpdateTrigger("tr_changeTipoRiep", "CREATE TRIGGER [dbo].[tr_changeTipoRiep]\n" +
" ON [dbo].[ctb_cont]\n" +
" INSTEAD OF update\n" +
"AS\n" +
"BEGIN\n" +
"\tSET NOCOUNT ON;\n" +
"\tdeclare @cnt int = 0\n" +
"\n" +
"\n" +
"\tif Update(tipo_riep ) \n" +
"\tbegin\n" +
"\t\tSELECT @cnt = COUNT(*) from ctb_movr inner join inserted on ctb_movr.cod_ccon = inserted.cod_ccon and \n" +
"\t\t( (inserted.tipo_riep is null and ctb_movr.cod_anag is not null ) or (inserted.tipo_riep is null and ctb_movr.cod_anag is null ) )\n" +
"\tend\n" +
"\t \n" +
"\t \n" +
" IF @cnt > 0\n" +
" BEGIN\n" +
" THROW 50002, 'Update non consentito: esistono movimenti collegati.', 1;\n" +
" RETURN;\n" +
" END\n" +
"\t\n" +
"\tupdate ctb_cont \n" +
"\tset cod_cmas = inserted.cod_cmas,\n" +
"\t\tcod_cgrp = inserted.cod_cgrp,\n" +
"\t\tdescrizione = inserted.descrizione,\n" +
"\t\ttipo_riep = inserted.tipo_riep,\n" +
"\t\tsaldo_att = inserted.saldo_att,\n" +
"\t\tflag_cont_analit = inserted.flag_cont_analit,\n" +
"\t\tcod_biva = inserted.cod_biva,\n" +
"\t\tcod_jfas = inserted.cod_jfas,\n" +
"\t\tcod_csct = inserted.cod_csct,\n" +
"\t\tflag_risconto = inserted.flag_risconto,\n" +
"\t\tperc_ded = inserted.perc_ded,\n" +
"\t\tdiacod = inserted.diacod,\n" +
"\t\tdata_ins = inserted.data_ins,\n" +
"\t\tdata_mod = inserted.data_mod,\n" +
"\t\tflag_attivo = inserted.flag_attivo\n" +
"\tfrom ctb_cont inner join inserted on ctb_cont.cod_ccon = inserted.cod_ccon\n" +
"\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,29 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251201124048 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("PICKING", "ACCETTAZIONE_BOLLA", "FLAG_ENABLE_MARK_RECEIVED", "N",
"Abilita il tasto nell'avanti elenco per poter settare a true il campo merce_ricevuta in wdtb_doct", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
if (isCustomer(IntegryCustomer.Carelli)) {
updateSetupValue("PICKING", "ACCETTAZIONE_BOLLA", "FLAG_ENABLE_MARK_RECEIVED", "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_20251201164935 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("W_DDOCU_TAB_RC", "SETUP", "LOG_PICKING", "N",
"Se impostato a S viene salvato un file di log su ogni singola postazione, un file al giorno, con il log dei passaggi nella fase di picking)", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,32 @@
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_20251201180420 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
String value = null;
if (isCustomerDb(IntegryCustomerDB.RossoGargano_RossoGargano)) {
value = "01";
}
createSetupQuery("COD_MDEP", "COD_MDEP", "SELECT COD_MDEP FROM MTB_DEPO ORDER BY 1");
createSetup("PVM", "MACCHINARI_PROD", "DEPOSITO_RICAMBI", value,
"Deposito sulla quale ci sono i ricambi, usato durante la creazione di ordini di lavoro delle manutenzioni",
false, "COD_MDEP", false, false, false,
false, false, null, false, "SELECT COD_MDEP FROM MTB_DEPO ORDER BY 1");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,31 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251202094633 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomerDb(IntegryCustomerDB.Dulciar_Dulciar))
return;
executeStatement("update stb_gest_setup set value = 'S' where gest_name = 'DTB_ORDT' and key_section in ('NUOVA_PROCEDURA','DISABLE_TRIGGER_ORDL')");
executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'lord%'");
executeStatement("update stb_gest_sync set syncronize = 'R' where gest_name like 'pord%'");
executeStatement("insert into stb_abil \n" +
"select case when gest_name = 'lordi' then 'LG081' else 'AG031' end , user_name, 'S', case when gest_name = 'lordi' then 'lordi_tab' else 'pordi_tab' end from stb_abil \n" +
"where gest_name in ('lordi','pordi') and case when gest_name = 'lordi' then 'LG081' else 'AG031' end + user_name not in (select cod_opz + user_name from stb_abil where cod_opz in ('LG081','AG031'))");
executeStatement("update stb_abil set flag_abil = 'N' where gest_name in ('lordi','pordi')");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -4,23 +4,26 @@ import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250626142053 extends BaseMigration implements MigrationModelInterface {
public class Migration_20251202140350 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("w_cmovi_rc", "SETUP", "PRINT_QUIETANZA", "S",
"chiede e fa stampare la lettera di quietanza", false, null, false, false,
false, false, false, null, false, null);
String reportNamePackingList = null;
if (isCustomer(IntegryCustomer.RossoGargano)) {
reportNamePackingList = "PackingListScarico";
}
createSetup("PVM", "CONTROLLO_GIACENZE", "REPORT_NAME_PACKING_LIST", reportNamePackingList, "Nome report per stampa packing list post trasferimento", "REPORT_NAME");
if(isCustomer(IntegryCustomer.Carelli))
updateSetupValue("w_cmovi_rc", "SETUP", "PRINT_QUIETANZA", "N");
}
@Override
public void down() throws Exception {
}
}
}

View File

@@ -0,0 +1,70 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251202161223 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("cvw_saldo_scad", "CREATE VIEW dbo.cvw_saldo_scad\n" +
" WITH SCHEMABINDING\n" +
" AS\n" +
" SELECT ctb_scad.tipo_anag,\n" +
" ctb_scad.cod_anag,\n" +
" ctb_scad.anno_part,\n" +
" ctb_scad.ser_doc,\n" +
" ctb_scad.num_doc,\n" +
" SUM(ctb_scad.imp_dare) AS dare_scad,\n" +
" SUM(ctb_scad.imp_avere) AS avere_scad,\n" +
" COUNT_BIG(*) AS id\n" +
" FROM dbo.ctb_scad\n" +
" GROUP BY ctb_scad.tipo_anag,\n" +
" ctb_scad.cod_anag,\n" +
" ctb_scad.anno_part,\n" +
" ctb_scad.ser_doc,\n" +
" ctb_scad.num_doc");
executeStatement("CREATE UNIQUE CLUSTERED INDEX ix_cvw_saldo_scad\n" +
" ON dbo.cvw_saldo_scad (\n" +
" tipo_anag,\n" +
" cod_anag,\n" +
" anno_part,\n" +
" ser_doc,\n" +
" num_doc\n" +
" );");
createOrUpdateView("cvw_saldo_part",
"CREATE VIEW dbo.cvw_saldo_part\n" +
" WITH SCHEMABINDING\n" +
"AS\n" +
"SELECT ctb_part.tipo_anag,\n" +
" ctb_part.cod_anag,\n" +
" ctb_part.anno_part,\n" +
" ctb_part.ser_doc,\n" +
" ctb_part.num_doc,\n" +
" SUM(ctb_parr.imp_dare * ctb_part.cambio_divi_cont / ctb_parr.cambio_divi_cont) AS dare_part,\n" +
" SUM(ctb_parr.imp_avere * ctb_part.cambio_divi_cont / ctb_parr.cambio_divi_cont) AS avere_part,\n" +
" COUNT_BIG(*) AS id\n" +
"FROM dbo.ctb_part\n" +
" INNER JOIN dbo.ctb_parr\n" +
" ON ctb_part.tipo_anag = ctb_parr.tipo_anag AND ctb_part.cod_anag = ctb_parr.cod_anag AND\n" +
" ctb_part.anno_part = ctb_parr.anno_part AND ctb_part.ser_doc = ctb_parr.ser_doc AND\n" +
" ctb_part.num_doc = ctb_parr.num_doc\n" +
"GROUP BY ctb_part.tipo_anag, ctb_part.cod_anag, ctb_part.anno_part, ctb_part.ser_doc, ctb_part.num_doc");
executeStatement("CREATE UNIQUE CLUSTERED INDEX ix_cvw_saldo_part\n" +
" ON dbo.cvw_saldo_part (\n" +
" tipo_anag,\n" +
" cod_anag,\n" +
" anno_part,\n" +
" ser_doc,\n" +
" num_doc\n" +
" );");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -4,19 +4,15 @@ import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250728095637 extends BaseMigration implements MigrationModelInterface {
public class Migration_20251203085140 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table dbo.atb_tipi add socio_aziendale BIT default 0 not null");
if (isCustomer(IntegryCustomer.RossoGargano)) {
executeStatement("UPDATE dbo.atb_tipi SET socio_aziendale = 1 where cod_atip in (N'C1050', N'C1055')");
}
if(isCustomer(IntegryCustomer.RossoGargano))
updateSetupValue("w_cmovi_rc", "SETUP", "PRINT_QUIETANZA", "N");
}
@Override

View File

@@ -0,0 +1,46 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251203121227 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("f_AggiungiGiorniScad", "CREATE FUNCTION [dbo].[f_AggiungiGiorniScad](@dataIniz DateTime, @giorni int, @ls_dataRif varchar(20)) \n" +
"RETURNS dateTime\n" +
" begin\n" +
"\n" +
" declare @ldt_dataInizCalc dateTime\n" +
" DECLARE @mesi INT = @giorni / 30;\n" +
"\n" +
" SELECT @ldt_dataInizCalc = \n" +
" CASE WHEN (@giorni % 30) > 0 OR left(@ls_dataRif, 12) = 'DATA FATTURA' THEN \n" +
" DATEADD(Day, @giorni , @dataIniz )\n" +
" ELSE\n" +
" CASE WHEN @ls_dataRif = 'FINE MESE' AND @giorni = 30 AND Datepart(month, @dataIniz) = 1\n" +
" THEN\n" +
" dbo.f_getLastDayOfMonth(Convert(datetime, Cast(Year(@dataIniz) as varchar) + '/02/01' ))\n" +
" ELSE\n" +
" CASE WHEN (@giorni % 30) = 0 AND @ls_dataRif = 'FINE MESE' AND Datepart(month, @dataIniz) = 12\n" +
" THEN\n" +
" dbo.f_getLastDayOfMonth(DATEADD(Month, @mesi , @dataIniz ))\n" +
" ELSE\n" +
" dbo.f_getLastDayOfMonth(DATEADD(Day, @giorni , @dataIniz ))\n" +
" END \n" +
" END\n" +
" END\n" +
" return (@ldt_dataInizCalc)\n" +
" end;");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251203165544 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("exec dbo.DropPrimaryKey 'azienda'\n",
"alter table azienda add id tinyint not null default 1;\n",
"alter table azienda add constraint pk_azienda primary key (id);\n",
"alter table azienda add constraint chk_id_azienda CHECK (id = 1)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,21 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251204131327 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table mtb_aart_desc Add descrizione_html text",
"alter table mtb_aart_equi add flag_equi_anag BIT not null DEFAULT 0"
);
}
@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_20251205101442 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table srl_activity_type_user add activity_default bit not null default 0;\n",
"CREATE UNIQUE INDEX ux_srl_activity_type_user_default\n" +
"ON srl_activity_type_user (user_name, flag_tipologia)\n" +
"WHERE activity_default = 1;");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,256 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251205111526 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateView("mvw_sitart_udc_det_all","CREATE VIEW [dbo].[mvw_sitart_udc_det_all] AS\n" +
"WITH SitMtbColr AS (\n" +
" /*Vengono presi tutti i Colli di carico*/\n" +
" SELECT mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colt.segno,\n" +
" mtb_colt.cod_anag,\n" +
" mtb_colt.cod_vdes,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_colr.cod_jcom,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" mtb_colr.peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.cod_jfas,\n" +
" mtb_colt.id_anomalia as id_anomalia\n" +
" FROM mtb_colr\n" +
" inner join mtb_colt on\n" +
" mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" WHERE mtb_colr.data_collo >= '2020/01/01'\n" +
" AND segno = 1\n" +
"\n" +
" UNION ALL\n" +
" /*Vengono presi, a storno, tutti i colli che fanno riferimento ad altri colli di carico*/\n" +
" SELECT mtb_colr.gestione_rif,\n" +
" mtb_colr.data_collo_rif,\n" +
" mtb_colr.ser_collo_rif,\n" +
" mtb_colr.num_collo_rif,\n" +
" collo_rif.segno,\n" +
" collo_rif.cod_anag,\n" +
" collo_rif.cod_vdes,\n" +
" collo_rif.cod_mdep,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" NULL AS cod_jcom,\n" +
" -qta_col,\n" +
" -num_cnf,\n" +
" qta_cnf,\n" +
" -mtb_colr.peso_netto_kg,\n" +
" -peso_lordo_kg,\n" +
" collo_rif.posizione,\n" +
" collo_rif.cod_jfas,\n" +
" NULL as id_anomalia\n" +
" FROM mtb_colr\n" +
" LEFT OUTER JOIN mtb_colt AS collo_rif\n" +
" ON mtb_colr.gestione_rif = collo_rif.gestione AND\n" +
" mtb_colr.data_collo_rif = collo_rif.data_collo AND\n" +
" mtb_colr.num_collo_rif = collo_rif.num_collo AND\n" +
" mtb_colr.ser_collo_rif = collo_rif.ser_collo\n" +
" WHERE mtb_colr.data_collo >= '2020/01/01'\n" +
" AND gestione_rif IS NOT NULL /*and mtb_colt.segno = -1 */\n" +
" UNION ALL\n" +
" /*Vengono presi anche tutti i colli di scarico non ancora agganciati a documento tranne quelli di scarico a lavorazione perche' il materiale versato nelle linee di produzione si ritiene subito consumato*/\n" +
" SELECT mtb_colt.gestione,\n" +
" mtb_colt.data_collo,\n" +
" mtb_colt.ser_collo,\n" +
" mtb_colt.num_collo,\n" +
" mtb_colt.segno,\n" +
" mtb_colt.cod_anag,\n" +
" mtb_colt.cod_vdes,\n" +
" mtb_colt.cod_mdep,\n" +
" mtb_colr.cod_mart,\n" +
" mtb_colr.cod_col,\n" +
" mtb_colr.cod_tagl,\n" +
" mtb_colr.partita_mag,\n" +
" mtb_colr.cod_jcom,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" mtb_colr.peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" mtb_colt.posizione,\n" +
" mtb_colt.cod_jfas,\n" +
" NULL as id_anomalia\n" +
" FROM mtb_colr\n" +
" inner join mtb_colt on\n" +
" mtb_colt.gestione = mtb_colr.gestione\n" +
" AND mtb_colt.data_collo = mtb_colr.data_collo\n" +
" AND mtb_colt.num_collo = mtb_colr.num_collo\n" +
" AND mtb_colt.ser_collo = mtb_colr.ser_collo\n" +
" WHERE mtb_colr.data_collo >= '2020/01/01'\n" +
" AND segno = -1\n" +
" AND cod_dtip IS NULL\n" +
" AND mtb_colt.gestione <> 'L'),\n" +
" SitMtbColt AS (SELECT SitMtbColr.gestione,\n" +
" SitMtbColr.data_collo,\n" +
" SitMtbColr.ser_collo,\n" +
" SitMtbColr.num_collo,\n" +
" SitMtbColr.segno,\n" +
" SitMtbColr.cod_mdep,\n" +
" SitMtbColr.posizione,\n" +
" SitMtbColr.cod_mart,\n" +
" SitMtbColr.cod_col,\n" +
" SitMtbColr.cod_tagl,\n" +
" SitMtbColr.partita_mag,\n" +
" mtb_partita_mag.data_scad,\n" +
" MAX(SitMtbColr.cod_jcom) AS cod_jcom,\n" +
" SUM(qta_col) AS qta_col,\n" +
" SUM(num_cnf) AS num_cnf,\n" +
" AVG(SitMtbColr.qta_cnf) AS qta_cnf,\n" +
" SUM(SitMtbColr.peso_netto_kg) AS peso_netto_kg,\n" +
" SUM(peso_lordo_kg) AS peso_lordo_kg,\n" +
" SitMtbColr.cod_jfas,\n" +
" flag_qta_cnf_fissa,\n" +
" MAX(SitMtbColr.id_anomalia) as id_anomalia\n" +
" FROM SitMtbColr\n" +
" LEFT OUTER JOIN mtb_partita_mag ON SitMtbColr.cod_mart = mtb_partita_mag.cod_mart AND\n" +
" SitMtbColr.partita_mag = mtb_partita_mag.partita_mag\n" +
" INNER JOIN mtb_aart ON SitMtbColr.cod_mart = mtb_aart.cod_mart\n" +
" GROUP BY SitMtbColr.gestione, SitMtbColr.data_collo, SitMtbColr.ser_collo, SitMtbColr.num_collo,\n" +
" SitMtbColr.segno, SitMtbColr.cod_mdep,\n" +
" SitMtbColr.posizione, SitMtbColr.cod_mart, SitMtbColr.cod_col, SitMtbColr.cod_tagl,\n" +
" SitMtbColr.partita_mag,\n" +
" mtb_partita_mag.data_scad, SitMtbColr.cod_jfas, mtb_aart.flag_qta_cnf_fissa)\n" +
"SELECT gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" cod_mdep,\n" +
" SitMtbColt.posizione,\n" +
" SitMtbColt.cod_mart,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" partita_mag,\n" +
" data_scad,\n" +
" cod_jcom,\n" +
" CASE\n" +
" WHEN flag_dig = 'S' THEN\n" +
" CAST(qta_col AS INT)\n" +
" ELSE ROUND(qta_col, cifre_dec)\n" +
" END as qta_col,\n" +
" CASE\n" +
" WHEN flag_dig = 'S' THEN\n" +
" CASE\n" +
" WHEN flag_dig = 'S' THEN\n" +
" CAST(qta_col AS INT)\n" +
" ELSE ROUND(qta_col, cifre_dec)\n" +
" END / case when SitMtbColt.qta_cnf = 0 then 1 else SitMtbColt.qta_cnf end\n" +
" ELSE num_cnf\n" +
" END as num_cnf,\n" +
" --qta_col,\n" +
" --num_cnf,\n" +
" CASE\n" +
" WHEN SitMtbColt.flag_qta_cnf_fissa = 'S'\n" +
" THEN SitMtbColt.qta_cnf\n" +
" ELSE qta_col / CASE WHEN num_cnf = 0 THEN 1 ELSE num_cnf END\n" +
" END AS qta_cnf,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" SitMtbColt.flag_qta_cnf_fissa,\n" +
" mtb_unt_mis.flag_dig,\n" +
" mtb_unt_mis.cifre_dec,\n" +
" SitMtbColt.id_anomalia\n" +
"FROM SitMtbColt\n" +
" INNER JOIN mtb_aart ON SitMtbColt.cod_mart = mtb_aart.cod_mart\n" +
" INNER JOIN mtb_unt_mis ON mtb_aart.unt_mis = mtb_unt_mis.unt_mis");
createOrUpdateView("mvw_sitart_udc_det","CREATE VIEW [dbo].[mvw_sitart_udc_det] AS\n" +
"SELECT gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" cod_mdep,\n" +
" posizione,\n" +
" cod_mart,\n" +
" cod_col,\n" +
" cod_tagl,\n" +
" partita_mag,\n" +
" data_scad,\n" +
" cod_jcom,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" qta_cnf,\n" +
" peso_netto_kg,\n" +
" peso_lordo_kg,\n" +
" cod_jfas,\n" +
" id_anomalia\n" +
"FROM mvw_sitart_udc_det_all\n" +
"WHERE qta_col > 0");
createOrUpdateView("mvw_sitart_udc_det_inventario","CREATE VIEW [dbo].[mvw_sitart_udc_det_inventario] as\n" +
"SELECT UL.gestione,\n" +
" data_collo,\n" +
" ser_collo,\n" +
" num_collo,\n" +
" segno,\n" +
" UL.cod_mdep,\n" +
" UL.posizione,\n" +
" mtb_depo_posizioni.priorita,\n" +
" mtb_aart.cod_mgrp AS codGruppo,\n" +
" mtb_grup.descrizione AS Gruppo,\n" +
" mtb_aart.cod_msgr AS CodSgruppo,\n" +
" mtb_sgrp.descrizione AS Sottogruppo,\n" +
" UL.cod_mart,\n" +
" diacod,\n" +
" mtb_aart.descrizione_estesa,\n" +
" partita_mag,\n" +
" UL.cod_jcom,\n" +
" jtb_comt.descrizione AS commessa,\n" +
" mtb_aart.unt_mis,\n" +
" qta_col,\n" +
" num_cnf,\n" +
" UL.qta_cnf,\n" +
" UL.peso_netto_kg,\n" +
" UL.peso_lordo_kg,\n" +
" UL.cod_jfas,\n" +
" UL.id_anomalia\n" +
"FROM [mvw_sitart_udc_det] UL\n" +
" LEFT OUTER JOIN jtb_comt ON UL.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN mtb_depo_posizioni\n" +
" on UL.cod_mdep = mtb_depo_posizioni.cod_mdep and UL.posizione = mtb_depo_posizioni.posizione,\n" +
" mtb_aart,\n" +
" mtb_grup,\n" +
" mtb_sgrp\n" +
"WHERE UL.cod_mart = mtb_aart.cod_mart\n" +
" AND mtb_aart.cod_mgrp = mtb_grup.cod_mgrp\n" +
" AND mtb_aart.cod_mgrp = mtb_sgrp.cod_mgrp\n" +
" AND mtb_aart.cod_msgr = mtb_sgrp.cod_msgr\n" +
" AND qta_col <> 0\n");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,44 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251205130201 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if ( !existsColumn("mtb_depo", "data_iniz_vent" ))
executeStatement("ALTER TABLE mtb_depo ADD data_iniz_vent datetime");
if ( !existsColumn("mtb_depo", "data_fine_vent" ))
executeStatement("ALTER TABLE mtb_depo ADD data_fine_vent datetime");
if ( !existsColumn("ctb_movi", "ventilazione" ))
executeStatement("ALTER TABLE ctb_movi ADD ventilazione bit not null default 1");
if (isCustomer(IntegryCustomer.CapelliMonelli) && isCustomerDb(IntegryCustomerDB.Gramm_GrammUsa)) {
executeStatement(
"CREATE TABLE [oltb_operregi_log] (data_file DATETIME, prog_file INT, cod_CUA VARCHAR (16), ID_depo NUMERIC (10, 0), num_operaz INT, data_operaz DATETIME, id_err INT, error_text VARCHAR (MAX), tipo_errore INT)",
"ALTER TABLE [atb_offt] ADD flag_tipo_off INT",
"ALTER TABLE [ctb_varbeni] ADD num_cmov INT",
"CREATE TABLE [mtb_list_costo_lisa_data] (id BIGINT, listino VARCHAR (5), data_rif DATETIME, cod_mart VARCHAR (15), cod_art_for VARCHAR (25), cod_promo VARCHAR (10), costo_lisa DECIMAL (20, 5))",
"ALTER TABLE [atb_tipi] ADD socio_aziendale BIT",
"ALTER TABLE [dtb_dif_bolle] ADD targa VARCHAR (20), posti_pallet INT",
"CREATE TABLE [oltb_categorie] (cod_ocat VARCHAR (5), categoria VARCHAR (80))",
"ALTER TABLE [ctb_movi] ADD ventilazione BIT",
"CREATE TABLE [oltb_macroaree] (Cod_omar VARCHAR (5), acronimo VARCHAR (5), macro_area VARCHAR (80), flag_ObbligOrigSpec VARCHAR (1), flag_DopIgp VARCHAR (1))",
"ALTER TABLE [dtb_ord_steps] ADD posizione_out VARCHAR (MAX)",
"CREATE TABLE [oltb_origspec] (cod_omar VARCHAR (5), cod_oorspec VARCHAR (5), acronimo VARCHAR (5), origine_spec VARCHAR (80))"
);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,46 @@
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_20251205154053 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("DELETE FROM STB_GEST_SETUP WHERE GEST_NAME LIKE '%DOCUMENTI DI VENDITA'");
createSetup("EXPORT_DOCUMENTI VENDITA", "MD", "ATTIVO", "N",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("EXPORT_DOCUMENTI VENDITA", "MD", "EMAIL_FOR_LOG", null,
"Inserire il file l'indirizzo email per inviare il log dell'importazione", false, null, false, false,
false, false, false, null, false, null);
createSetup("EXPORT_DOCUMENTI VENDITA", "MD", "GG_CANC_FILE", null,
"Giorni per la cancellazione dei file dalla cartella di appoggio", false, null, false, false,
false, false, false, null, false, null);
createSetup("EXPORT_DOCUMENTI VENDITA", "MD", "IMPORT_REST", "S",
"Inserire S/N per attivare/disattivare il salvataggio con i servizi REST", false, null, false, false,
false, false, false, null, false, null);
createSetup("EXPORT_DOCUMENTI VENDITA", "MD", "PATH_FILE", null,
"Directory dove vengono salvati i file temporanei, se non è configurata i file saranno salvati in c:\\mlSetupWS\\TEMP_EXPORT", false, null, false, false,
false, false, false, null, false, null);
if (!isCustomer(IntegryCustomer.Sardinya)) return;
updateSetupValue("EXPORT_DOCUMENTI VENDITA", "MD", "ATTIVO", "S",
"Inserire S/N per attivare/disattivare il tipo di importazione", false, null, false, false,
false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,38 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.entity.StbGestSetup;
public class Migration_20251205173303 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
StbGestSetup setupMovimentoFiscale = getStbGestSetup("PICKING", "RETTIFICA_GIACENZE", "TIPO_MOVIMENTO_FISCALE");
deleteSetup("PICKING", "RETTIFICA_GIACENZE", "TIPO_MOVIMENTO_FISCALE");
createSetup(setupMovimentoFiscale.getGestName(),
setupMovimentoFiscale.getSection(),
setupMovimentoFiscale.getKeySection() + "_CAR",
setupMovimentoFiscale.getValue(),
setupMovimentoFiscale.getDescription(),
setupMovimentoFiscale.getQueryDefault());
createSetup(setupMovimentoFiscale.getGestName(),
setupMovimentoFiscale.getSection(),
setupMovimentoFiscale.getKeySection() + "_SCAR",
setupMovimentoFiscale.getValue(),
setupMovimentoFiscale.getDescription(),
setupMovimentoFiscale.getQueryDefault());
}
@Override
public void down() throws Exception {
}
}

View File

@@ -3,15 +3,14 @@ package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251021114611 extends BaseMigration implements MigrationModelInterface {
public class Migration_20251209114959 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("ALTER TABLE mtb_missione_mag_auto\n" +
" ADD priorita SMALLINT DEFAULT 0 NOT NULL");
executeStatement("alter table dbo.mtb_cols add valore varchar(200)");
}
@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_20251211162655 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("PVM", "ORDINI_V_SLIM2K", "EXPORT_ORDINI", "N",
"Esporta gli ordini già esportati", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -8,10 +8,7 @@ public enum IntegryApplicationEnum {
TASK("478f3a4c51824ad23cb50c1c60670c0f"),
SALESBOOK("f0484398-1f8b-42f5-ab79-5282c164e1d8"),
CONSEGNA("c012124f-4f11-471c-ae12-81bd4a97626c"),
WINCLOCK("54ceebf0-494f-49f1-850b-b15c57666146"),
//Service Applications
SERVICE_EUROFORK_CONNECTOR("eadadd1c-13bb-4aae-87fd-4672573f8088");
WINCLOCK("54ceebf0-494f-49f1-850b-b15c57666146");
private final String text;

View File

@@ -84,7 +84,7 @@ public class AccountingBusinessLogic {
"Attezione, codice pagamento non presente nel documento %s/%s del %s, %s %s",
testata.getSerDoc(),
testata.getNumDoc(),
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY_SLASHED).format(testata.getDataDoc()),
new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(testata.getDataDoc()),
(testata.getTipoAnag().equalsIgnoreCase("F") ? "fornitore" : "cliente"),
testata.getCodAnag()));
@@ -420,7 +420,7 @@ public class AccountingBusinessLogic {
+ "ctb_caur_rc.cod_ccon as 'cod_ccon',"
+ "ctb_caur_rc.tipo_anag as 'tipo_anag', "
+ "CASE WHEN ctb_caur_rc.tipo_anag is not null and ctb_grup.tipo = 2 and ctb_grup.sezione = 1 then " + UtilityDB.valueToString(testata.getCodAnag()) + " else null end as 'cod_anag', "
+ "CAST(CASE WHEN ctb_caur_rc.tipo_anag is not null and ctb_grup.tipo = 2 and ctb_grup.sezione = 1 then Cast(DatePart(yy, " + UtilityDB.valueDateToString(testata.getDataDoc(), CommonConstants.DATE_FORMAT_YMD_SLASHED) + ") as varchar) else null end as int) as 'anno_part', "
+ "CAST(CASE WHEN ctb_caur_rc.tipo_anag is not null and ctb_grup.tipo = 2 and ctb_grup.sezione = 1 then Cast(DatePart(yy, " + UtilityDB.valueDateToString(testata.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + ") as varchar) else null end as int) as 'anno_part', "
+ "CASE WHEN ctb_caur_rc.tipo_anag is not null and ctb_grup.tipo = 2 and ctb_grup.sezione = 1 then " + UtilityDB.valueToString(testata.getSerDoc()) + " else null end as 'ser_doc', "
+ "CAST( CASE WHEN ctb_caur_rc.tipo_anag is not null and ctb_grup.tipo = 2 and ctb_grup.sezione = 1 then " + UtilityDB.valueToString(testata.getNumDoc()) + " else null end as int) as 'num_doc', "
+ "CONVERT ( numeric(20,5), CASE ctb_caur_rc.imp_dare "
@@ -642,7 +642,7 @@ public class AccountingBusinessLogic {
String whereCond = String.format("%s BETWEEN data_iniz AND data_fine", UtilityDB.valueToString(data));
GtbPeriodoFisc gtbPeriodoFisc = getPeriodoFisc(conn, whereCond);
if (gtbPeriodoFisc == null) {
throw new Exception("Impossibile individuare il periodo fiscale per la data " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY_SLASHED).format(data));
throw new Exception("Impossibile individuare il periodo fiscale per la data " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(data));
}
return gtbPeriodoFisc;
}

View File

@@ -22,7 +22,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -84,7 +83,7 @@ public class DocumentBusinessLogic {
Optional<DtbDoct> bollaMax = Stream.of(dtbDoct.getDtbDoctBolle()).max((o1, o2) -> o1.getDataDoc().compareTo(o2.getDataDoc()));
if (bollaMax.isPresent()) {
ctbMovt.setDataCompIva(UtilityLocalDate.localDateToDate(bollaMax.get().getDataDoc()));
ctbMovt.setDataCompIva(bollaMax.get().getDataDoc());
}
}
@@ -142,11 +141,11 @@ public class DocumentBusinessLogic {
codCconPaga = (String) datiCausPaga.get("cod_ccon_cassa");
}
LocalDate dataReg = UtilityLocalDate.localDateFromDate(dtbDoct.getDataCmov());
Date dataReg = dtbDoct.getDataCmov();
if (dataReg == null) {
dataReg = dtbDoct.getDataReg();
}
LocalDate dataDoc = dtbDoct.getDataDoc();
Date dataDoc = dtbDoct.getDataDoc();
String serDoc = dtbDoct.getSerDoc();
Integer numDoc = dtbDoct.getNumDoc();
String codJcom = dtbDoct.getCodJcom();
@@ -167,10 +166,10 @@ public class DocumentBusinessLogic {
//TESTATA
ctbMovt
.setNumCmov(numCmov)
.setDataCmov(UtilityLocalDate.localDateToDate(dataReg))
.setDataCmov(dataReg)
.setCodJcom(codJcom)
.setCodCcau(codCcau)
.setDataDoc(UtilityLocalDate.localDateToDate(dataDoc))
.setDataDoc(dataDoc)
.setNumDoc(numDoc)
.setSerDoc(serDoc)
.setNumProt(numProt)
@@ -196,7 +195,7 @@ public class DocumentBusinessLogic {
String idAttach = dtbDoct.getDrlDocAttached().get(0).getIdAttach();
String sqlAttach =
"SELECT CASE WHEN " + UtilityDB.valueDateToString(dataRicMin, CommonConstants.DATE_FORMAT_YMD_DASHED) + " is not null AND datetime_attach >= " + UtilityDB.valueDateToString(dataRicMin, CommonConstants.DATE_FORMAT_YMD_DASHED) + " THEN datetime_attach ELSE null END " +
"SELECT CASE WHEN " + UtilityDB.valueDateToString(dataRicMin, CommonConstants.DATE_FORMAT_YMD) + " is not null AND datetime_attach >= " + UtilityDB.valueDateToString(dataRicMin, CommonConstants.DATE_FORMAT_YMD) + " THEN datetime_attach ELSE null END " +
" FROM stb_files_attached " +
" WHERE id_attach = " + UtilityDB.valueToString(idAttach);
@@ -219,7 +218,7 @@ public class DocumentBusinessLogic {
"SELECT * " +
" FROM ctb_part " +
"WHERE cod_anag = " + UtilityDB.valueToString(dtbDoct.getCodAnag()) + " AND " +
" data_doc = " + UtilityDB.valueToString(dtbDoct.getDataDoc()) + " AND " +
" data_doc = " + UtilityDB.valueDateToString(dtbDoct.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" ser_doc = " + UtilityDB.valueToString(dtbDoct.getSerDoc()) + " AND " +
" num_doc = " + UtilityDB.valueToString(dtbDoct.getNumDoc()) + " AND " +
" tipo_partita = " + UtilityDB.valueToString(tipoPartita);
@@ -347,9 +346,9 @@ public class DocumentBusinessLogic {
//REGISTRAZIONE ACCONTO
if (!UtilityString.isNullOrEmpty(codCcauAnt) && acconto.compareTo(BigDecimal.ZERO) != 0) {
Integer annoPart = dataDoc.getYear();
Integer annoPart = Integer.parseInt(new SimpleDateFormat("yyyy").format(dataDoc));
regAcconto(insImpDare, codIreg, codCcauAnt, codCconAnt, numIreg, numProt, riga, ctbMovt, righeMov,
UtilityLocalDate.localDateToDate(dataReg), tipoAnag, codAnag, codJcom, acconto, numCmov, codCconAnag,
dataReg, tipoAnag, codAnag, codJcom, acconto, numCmov, codCconAnag,
annoPart, serDoc, numDoc);
if ("S".equalsIgnoreCase(ctbMovt.getGeneraScad()) && stornaAcconto) {
AccountingBusinessLogic.pagaScadenze(ctbMovt.getDataCmov(), acconto, elencoScad);
@@ -362,7 +361,7 @@ public class DocumentBusinessLogic {
if (!UtilityString.isNullOrEmpty(codCcauAnt)) {
totDoc = totDoc.subtract(acconto);
}
regPagamento(insImpDare, regIva, riga, righeMov, UtilityLocalDate.localDateToDate(dataDoc), tipoAnag, codAnag, serDoc, numDoc, totDoc,
regPagamento(insImpDare, regIva, riga, righeMov, dataDoc, tipoAnag, codAnag, serDoc, numDoc, totDoc,
codCconAnag, codCconPaga, codCcauPaga, elencoScad,
ctbMovt.getGeneraScad(), ctbMovt.getDataCmov());
@@ -565,7 +564,7 @@ public class DocumentBusinessLogic {
if (regIva) {
ctbMovr
.setAnnoPart(dtbDoct.getDataDoc().getYear())
.setAnnoPart(Integer.parseInt(new SimpleDateFormat("yyyy").format(dtbDoct.getDataDoc())))
.setSerDoc(dtbDoct.getSerDoc())
.setNumDoc(dtbDoct.getNumDoc());
}
@@ -787,7 +786,7 @@ public class DocumentBusinessLogic {
.setCodAnag(dtbDoct.getCodAnag());
if (regIva) {
ctbMovr
.setAnnoPart(dtbDoct.getDataDoc().getYear())
.setAnnoPart(Integer.parseInt(new SimpleDateFormat("yyyy").format(dtbDoct.getDataDoc())))
.setSerDoc(dtbDoct.getSerDoc())
.setNumDoc(dtbDoct.getNumDoc());

View File

@@ -8,9 +8,9 @@ import it.integry.ems.rules.businessLogic.enums.FlagSezione;
import it.integry.ems.rules.completing.PackagesRules;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
import it.integry.ems_model.entity.key.MtbColtKey;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
@@ -24,7 +24,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static it.integry.ems.rules.completing.QueryRules.getSingleValue;
@@ -56,24 +55,12 @@ public class LoadColliService {
this.currentAzienda = Azienda.getDefaultAzienda(multiDBTransactionManager.getPrimaryConnection());
String whereCond = "";
for (MtbColt mtbColt : loadColli.getColli()) {
mtbColt.setOperation(OperationType.SELECT_OBJECT);
mtbColt.getMtbColr().forEach(mtbColr -> mtbColr.setOperation(OperationType.SELECT_OBJECT));
mtbColt.getMtbCols().forEach(mtbCols -> mtbCols.setOperation(OperationType.SELECT_OBJECT));
if(loadDatiFromDB){
entityProcessor.processEntity(mtbColt, true, multiDBTransactionManager);
}
if (mtbColt.getNumCollo() == null && mtbColt.getDataCollo() == null) {
mtbColt.setDataCollo(UtilityLocalDate.getNow());
int numCollo = PackagesRules.completeNumCollo(multiDBTransactionManager.getPrimaryConnection(),
mtbColt.getSerCollo(),
mtbColt.getDataCollo(),
mtbColt.getGestione());
mtbColt.setNumCollo(numCollo);
}
}
if (UtilityString.isNullOrEmpty(loadColli.getGestione()) && !UtilityString.isNullOrEmpty(loadColli.getCodDtip())) {
@@ -87,31 +74,35 @@ public class LoadColliService {
}
// String whereCond = "";
// for (MtbColt collo : loadColli.getColli()) {
// if (!UtilityString.isNullOrEmpty(whereCond)) {
// whereCond += " OR ";
// }
//
// whereCond += "( mtb_colt.gestione = " + UtilityDB.valueToString(collo.getGestione()) + " AND " +
// " mtb_colt.data_collo = " + UtilityDB.valueToString(collo.getDataCollo()) + " AND " +
// " mtb_colt.ser_collo = " + UtilityDB.valueToString(collo.getSerCollo()) + " AND " +
// " mtb_colt.num_collo = " + UtilityDB.valueToString(collo.getNumCollo()) + ") ";
// }
checkColli(loadColli.getColli().stream()
.map(MtbColt::getKey)
.collect(Collectors.toList()), loadColli);
if (loadDatiFromDB) {
for (EntityBase entity : loadColli.getColli()) {
entityProcessor.processEntity(entity, false, multiDBTransactionManager);
}
}
String whereCondColli = UtilityQuery.concatFieldListInWhereCond(loadColli.getColli().stream()
.map(x -> new HashMap<String, Object>() {{
put("mtb_colt.gestione", x.getGestione());
put("mtb_colt.num_collo", x.getNumCollo());
put("mtb_colt.data_collo", x.getDataCollo());
put("mtb_colt.ser_collo", x.getSerCollo());
}})
.collect(Collectors.toList()));
for (MtbColt mtbColt : loadColli.getColli()) {
if (mtbColt.getNumCollo() == null && mtbColt.getDataCollo() == null) {
mtbColt.setDataCollo(UtilityLocalDate.getNow());
int numCollo = PackagesRules.completeNumCollo(multiDBTransactionManager.getPrimaryConnection(),
mtbColt.getSerCollo(),
mtbColt.getDataCollo(),
mtbColt.getGestione());
mtbColt.setNumCollo(numCollo);
}
}
for (MtbColt collo : loadColli.getColli()) {
if (!UtilityString.isNullOrEmpty(whereCond)) {
whereCond += " OR ";
}
whereCond += "( mtb_colt.gestione = " + UtilityDB.valueToString(collo.getGestione()) + " AND " +
" mtb_colt.data_collo = " + UtilityDB.valueToString(collo.getDataCollo()) + " AND " +
" mtb_colt.ser_collo = " + UtilityDB.valueToString(collo.getSerCollo()) + " AND " +
" mtb_colt.num_collo = " + UtilityDB.valueToString(collo.getNumCollo()) + ") ";
}
checkColli(whereCond, loadColli);
DtbDoct dtbDoct;
String query;
@@ -184,7 +175,7 @@ public class LoadColliService {
" gtb_divi," +
"(SELECT segno_qta_scar FROM dtb_tipi WHERE cod_dtip = " + UtilityDB.valueToString(loadColli.getCodDtip()) + ") tipoDoc " +
" WHERE dtb_ordt.gestione =" + UtilityDB.valueToString(loadColli.getGestione()) + " AND" +
" dtb_ordt.data_ord = " + UtilityDB.valueToString(loadColli.getDataOrd()) + " AND" +
" dtb_ordt.data_ord = " + UtilityDB.valueDateToString(loadColli.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND" +
" dtb_ordt.num_ord = " + UtilityDB.valueToString(loadColli.getNumOrd()) + " AND" +
" gtb_divi.cod_divi = dtb_ordt.cod_divi ";
@@ -194,17 +185,15 @@ public class LoadColliService {
throw new Exception("Codice Deposito obbligatorio");
}
if (loadDatiFromDB) {
query = "SELECT DISTINCT mtb_colt.cod_vlis AS listino, " +
" mtb_colt.cod_vdes " +
" FROM mtb_colt " +
" INNER JOIN mtb_colr ON mtb_colr.gestione = mtb_colt.gestione AND " +
" FROM mtb_colt, mtb_colr " +
"WHERE mtb_colr.gestione = mtb_colt.gestione AND " +
" mtb_colr.data_collo = mtb_colt.data_collo AND " +
" mtb_colr.ser_collo = mtb_colt.ser_collo AND " +
" mtb_colr.num_collo = mtb_colt.num_collo " +
" WHERE " + whereCondColli;
" mtb_colr.num_collo = mtb_colt.num_collo ";
query = UtilityDB.addwhereCond(query, whereCond, false);
dtbDoct = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), query, DtbDoct.class);
} else {
dtbDoct = new DtbDoct();
@@ -240,7 +229,7 @@ public class LoadColliService {
" vtb_list.descrizione ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
if (!results.isEmpty()) {
dtbDoct.setCodDivi(UtilityHashMap.<String>getValueIfExists(results.get(0), "cod_divi"));
@@ -253,7 +242,7 @@ public class LoadColliService {
if (loadColli.getColli().isEmpty() && loadDatiFromDB) {
query = "SELECT gestione, data_collo, ser_collo, num_collo " +
" FROM mtb_colt ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
PreparedStatement ps = multiDBTransactionManager.prepareStatement(query);
ResultSet rs = ps.executeQuery();
@@ -267,7 +256,7 @@ public class LoadColliService {
// Acquisizione ID_LOTTO del primo collo da agganciare
if (loadDatiFromDB) {
query = "SELECT TOP 1 id_lotto FROM mtb_colt ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
Integer idLotto = (Integer) getSingleValue(multiDBTransactionManager.getPrimaryConnection(), query);
if (idLotto != null) {
dtbDoct.setIdLotto(idLotto);
@@ -311,7 +300,7 @@ public class LoadColliService {
//VERIFICARE CHE USERNAME VENGA PASSATO
List<DtbDocr> dtbDocr = loadRigheCollo(whereCondColli, loadColli);
List<DtbDocr> dtbDocr = loadRigheCollo(whereCond, loadColli);
if (!dtbDocr.isEmpty()) {
dtbDocr.stream()
@@ -332,19 +321,9 @@ public class LoadColliService {
}
private void checkColli(final List<MtbColtKey> mtbColtKeys, final LoadColliDTO loadColliDTO) throws Exception {
private void checkColli(String whereCond, final LoadColliDTO loadColliDTO) throws Exception {
String query;
String whereCondColli = UtilityQuery.concatFieldListInWhereCond(mtbColtKeys.stream()
.map(x -> new HashMap<String, Object>() {{
put("mtb_colt.gestione", x.getGestione());
put("mtb_colt.num_collo", x.getNumCollo());
put("mtb_colt.data_collo", x.getDataCollo());
put("mtb_colt.ser_collo", x.getSerCollo());
}})
.collect(Collectors.toList()));
//CONTROLLO COLLI AGGANCIATI A DOCUMENTI
if (loadDatiFromDB) {
query =
@@ -362,7 +341,7 @@ public class LoadColliService {
" mtb_colt.ser_collo = mtb_colr.ser_collo and " +
" mtb_colt.num_collo = mtb_colr.num_collo ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
for (HashMap<String, Object> result : results) {
@@ -374,21 +353,20 @@ public class LoadColliService {
int numDoc = UtilityHashMap.getValueIfExists(result, "num_doc");
throw new Exception("Il collo n° " + numCollo +
" del " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY_SLASHED).format(dataCollo) +
" del " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataCollo) +
" già agganciato al documento " + codDtip +
" del " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY_SLASHED).format(dataDoc) +
" del " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(dataDoc) +
" n. " + numDoc);
}
} else {
List<MtbColt> mtbColtWithDocAlready = loadColliDTO.getColli().stream()
.filter(mtbColt -> !UtilityString.isNullOrEmpty(mtbColt.getCodDtip()))
.collect(Collectors.toList());
List<MtbColt> mtbColtWithDocAlready = Stream.of(loadColliDTO.getColli())
.filter(mtbColt -> !UtilityString.isNullOrEmpty(mtbColt.getCodDtip())).toList();
if (!mtbColtWithDocAlready.isEmpty()) {
if (mtbColtWithDocAlready != null && !mtbColtWithDocAlready.isEmpty()) {
throw new Exception("Il collo n° " + mtbColtWithDocAlready.get(0).getNumCollo() +
" del " + CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(mtbColtWithDocAlready.get(0).getDataCollo()) +
" già agganciato al documento " + mtbColtWithDocAlready.get(0).getCodDtip() +
" del " + CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(mtbColtWithDocAlready.get(0).getDataDoc()) +
" del " + new SimpleDateFormat(CommonConstants.DATE_FORMAT_DMY).format(mtbColtWithDocAlready.get(0).getDataDoc()) +
" n. " + mtbColtWithDocAlready.get(0).getNumDoc());
}
}
@@ -403,7 +381,7 @@ public class LoadColliService {
"FROM mtb_colt " +
"WHERE mtb_colt.cod_mdep <> " + UtilityDB.valueToString(loadColliDTO.getCodMdep());
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
if (!results.isEmpty()) {
@@ -429,7 +407,7 @@ public class LoadColliService {
" mtb_colr.data_ord = dtb_ordt.data_ord AND " +
" mtb_colr.num_ord = dtb_ordt.num_ord ";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
if (!results.isEmpty()) {
@@ -453,7 +431,7 @@ public class LoadColliService {
" mtb_colr.num_ord = dtb_ordt.num_ord " +
"WHERE dtb_ordt.flag_sospeso = 'S'";
query = UtilityDB.addwhereCond(query, whereCondColli, false);
query = UtilityDB.addwhereCond(query, whereCond, false);
List<HashMap<String, Object>> results = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
@@ -704,7 +682,7 @@ public class LoadColliService {
mtbTcol.setOperation(OperationType.SELECT_OBJECT);
mtbTcol.setCodTcol(mtbColt.getCodTcol());
entityProcessor.processEntity(mtbTcol,true, multiDBTransactionManager);
entityProcessor.processEntity(mtbTcol, multiDBTransactionManager);
if (mtbColt.getPesoKg() == null) mtbColt.setPesoKg(BigDecimal.ZERO);
@@ -726,18 +704,18 @@ public class LoadColliService {
MtbAart mtbAart = new MtbAart();
mtbAart.setCodMart(mtbColr.getCodMart());
mtbAart.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(mtbAart,true, multiDBTransactionManager);
entityProcessor.processEntity(mtbAart, multiDBTransactionManager);
//Retrieve della riga ordine
DtbOrdr dtbOrdr = null;
if (mtbColr.getNumOrd() != null && mtbColr.getRigaOrd() != null && mtbColr.getDataOrd() != null) {
dtbOrdr = new DtbOrdr();
dtbOrdr.setNumOrd(mtbColr.getNumOrd());
dtbOrdr.setDataOrd(mtbColr.getDataOrd());
dtbOrdr.setDataOrd(UtilityLocalDate.localDateToDate(mtbColr.getDataOrd()));
dtbOrdr.setRigaOrd(mtbColr.getRigaOrd());
dtbOrdr.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(dtbOrdr,true, multiDBTransactionManager);
entityProcessor.processEntity(dtbOrdr, multiDBTransactionManager);
}
DtbDocr dtbDocr = new DtbDocr();

View File

@@ -3,7 +3,6 @@ package it.integry.ems.rules.businessLogic.dto;
import it.integry.ems_model.entity.MtbColt;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -14,13 +13,13 @@ public class LoadColliDTO {
private String codDtip;
private String codAnag;
private String codVdes;
private LocalDate dataDoc;
private Date dataDoc;
private String serDoc;
private Integer numDoc;
private String codMdep;
private String calcPrz;
private boolean flagLeggiDatiOrd;
private LocalDate dataOrd;
private Date dataOrd;
private Integer numOrd;
private String flagEvasoForzato;
private Date dataVers;
@@ -75,11 +74,11 @@ public class LoadColliDTO {
return this;
}
public LocalDate getDataDoc() {
public Date getDataDoc() {
return dataDoc;
}
public LoadColliDTO setDataDoc(LocalDate dataDoc) {
public LoadColliDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
@@ -129,11 +128,11 @@ public class LoadColliDTO {
return this;
}
public LocalDate getDataOrd() {
public Date getDataOrd() {
return dataOrd;
}
public LoadColliDTO setDataOrd(LocalDate dataOrd) {
public LoadColliDTO setDataOrd(Date dataOrd) {
this.dataOrd = dataOrd;
return this;
}

View File

@@ -140,13 +140,14 @@ public class AccountingRules extends QueryRules {
public static Integer completeNumDocMov(Connection conn, CtbMovt entity) throws Exception {
return DocumentRules.nextNumDoc(conn,
UtilityLocalDate.localDateFromDate(entity.getDataDoc()),
entity.getDataDoc(),
entity.getCodIreg(),
entity.getSerDoc(),
entity.getNumIreg(),
entity.getNumDoc() == null ? 0 : entity.getNumDoc());
}
public static Integer getAnnoComp(Connection conn, LocalDate dataCmov) throws SQLException {
if (dataCmov == null)
return UtilityLocalDate.getNow().getYear();
@@ -205,7 +206,7 @@ public class AccountingRules extends QueryRules {
String setCompetenzaDaDoc = setupGest.getSetup(connection, "CTB_MOVI", "SETUP", "COMPETENZA_IVA_" + gestione);
sql = "SELECT dbo.f_getDataLiquidazioneIva(" + UtilityDB.valueDateToString(ctbMovt.getDataDoc(), CommonConstants.DATE_FORMAT_YMD_SLASHED) + ")";
sql = "SELECT dbo.f_getDataLiquidazioneIva(" + UtilityDB.valueDateToString(ctbMovt.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + ")";
Date dataCheck = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);

View File

@@ -950,7 +950,7 @@ public class CommonRules extends QueryRules {
BigDecimal rapConv = entity.getRapConv();
LocalDate dataValidita = null;
Date dataValidita = null;
if (entity instanceof DtbOrdr || entity instanceof WdtbOrdr) {
dataValidita = entity.getDataOrd();
} else if (entity instanceof DtbDocr || entity instanceof WdtbDocr) {
@@ -964,10 +964,10 @@ public class CommonRules extends QueryRules {
return valUnt;
}
public static BigDecimal completeValUntULTC(Connection conn, String codMdep, String codMart, LocalDate dataValidita, BigDecimal rapConv) throws Exception {
public static BigDecimal completeValUntULTC(Connection conn, String codMdep, String codMart, Date dataValidita, BigDecimal rapConv) throws Exception {
if (rapConv.compareTo(BigDecimal.ZERO) == 0) rapConv = BigDecimal.ONE;
String sql = "SELECT Round(isNull(dbo.f_GetCostoUltArt_depo("
+ UtilityDB.valueToString(dataValidita) + ","
+ UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ","
+ UtilityDB.valueToString(codMdep) + "," + UtilityDB.valueToString(codMart) + "), 0)*" + UtilityDB.valueToString(rapConv) + ", 5) as costo_ult";
BigDecimal valUnt = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
return valUnt;
@@ -976,7 +976,7 @@ public class CommonRules extends QueryRules {
public static BigDecimal completeValUntDIST(Connection conn, EntityBase entity) throws SQLException {
String codMart = null, codMdep = null;
LocalDate dataValidita = null;
Date dataValidita = null;
if (entity instanceof DtbOrdr) {
codMart = ((DtbOrdr) entity).getCodMart();
codMdep = ((DtbOrdr) entity).getCodMdep();
@@ -994,7 +994,7 @@ public class CommonRules extends QueryRules {
+ UtilityDB.valueToString(codMart) + ","
+ "1, "
+ "0, "
+ UtilityDB.valueToString(dataValidita) + ","
+ UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ","
+ UtilityDB.valueToString(codMdep) + ") as costo_dist";
BigDecimal valUnt = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
if (valUnt == null)
@@ -1005,7 +1005,7 @@ public class CommonRules extends QueryRules {
public static BigDecimal completeValUntCMED(Connection conn, EntityBase entity) throws SQLException {
String codMart = null;
LocalDate dataValidita = null;
Date dataValidita = null;
if (entity instanceof DtbOrdr) {
codMart = ((DtbOrdr) entity).getCodMart();
dataValidita = ((DtbOrdr) entity).getDataOrd();
@@ -1014,7 +1014,7 @@ public class CommonRules extends QueryRules {
dataValidita = ((MtbInvenr) entity).getDataInventario();
}
String sql = "SELECT dbo.f_GetCostoMedArt("
+ UtilityDB.valueToString(dataValidita) + ","
+ UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ","
+ UtilityDB.valueToString(codMart) + ") as costo_med";
List<HashMap<String, Object>> list = execQuery(conn, sql);
if (list.isEmpty()) {
@@ -1170,7 +1170,7 @@ public class CommonRules extends QueryRules {
" FROM wdtb_doct " +
" WHERE wdtb_doct.cod_anag = " + UtilityDB.valueToString(entity.getCodAnag()) + " AND " +
" wdtb_doct.cod_dtip = " + UtilityDB.valueToString(entity.getCodDtip()) + " AND " +
" wdtb_doct.data_doc = " + UtilityDB.valueToString(entity.getDataDoc()) + " AND " +
" wdtb_doct.data_doc = " + UtilityDB.valueDateToString(entity.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" wdtb_doct.ser_doc = " + UtilityDB.valueToString(entity.getSerDoc()) + " AND " +
" wdtb_doct.num_doc = " + UtilityDB.valueToString(entity.getNumDoc());
@@ -1311,41 +1311,28 @@ public class CommonRules extends QueryRules {
return maxProgressivoUl + 1;
}
public static int retrieveNextProgressivoUlRG(Connection conn, String gestione, LocalDate dataOrd, int numOrd, int segno, String codJfas) throws Exception {
return CommonRules.retrieveNextProgressivoUlRG(conn, gestione, dataOrd, numOrd, segno, codJfas, null);
}
public static int retrieveNextProgressivoUlRG(Connection conn, String gestione, LocalDate dataOrd, int numOrd, int segno, String codJfas, String partitaMag) throws Exception {
// boolean isScadenzaMultipla = setupGest.getSetupDetBoolean(conn, "MES", "SETUP", "CONTROLLO_SCADENZA_MULTIPLA", codJfas);
// if (!isScadenzaMultipla) {
// return retrieveNextProgressivoUl(conn, gestione, dataOrd, numOrd, segno);
// }
partitaMag = UtilityString.isNull(partitaMag, "dot.partita_mag");
public static int retrieveNextProgressivoUlRG(Connection conn, String gestione, LocalDate dataOrd, int numOrd, int segno) throws SQLException {
String sql = Query.format(
"WITH partite AS (SELECT dot.cod_prod AS cod_mart, mpm.partita_mag_prod, dot.cod_jfas\n" +
" FROM dtb_ordt dot\n" +
" INNER JOIN mtb_partita_mag mpm\n" +
" ON dot.cod_prod = mpm.cod_mart AND [partitaMag] = mpm.partita_mag\n" +
" WHERE dot.data_ord = %s\n" +
" AND dot.num_ord = %s\n" +
" AND dot.gestione = [gestione])\n" +
"SELECT ISNULL(MAX(progressivo_ul), 0) AS progressivo_ul\n" +
"FROM mtb_colt\n" +
" INNER JOIN mtb_colr mcr ON mtb_colt.gestione = mcr.gestione AND mtb_colt.data_collo = mcr.data_collo AND\n" +
" mtb_colt.ser_collo = mcr.ser_collo AND mtb_colt.num_collo = mcr.num_collo\n" +
" INNER JOIN mtb_partita_mag mpm ON mcr.cod_mart = mpm.cod_mart AND mcr.partita_mag = mpm.partita_mag\n" +
" INNER JOIN partite ON mcr.cod_mart = partite.cod_mart AND mpm.partita_mag_prod = partite.partita_mag_prod\n" +
" AND mtb_colt.cod_jfas = partite.cod_jfas\n" +
"WHERE mtb_colt.gestione = [gestione]\n" +
" AND segno = %s",
dataOrd,
numOrd,
segno
)
.replace("[partitaMag]", partitaMag.equalsIgnoreCase("dot.partita_mag") ? partitaMag : UtilityDB.valueToString(partitaMag))
.replace("[gestione]", UtilityDB.valueToString(gestione));
"WITH partite AS (SELECT dot.cod_prod AS cod_mart, mpm.partita_mag_prod, dot.cod_jfas\n" +
" FROM dtb_ordt dot\n" +
" INNER JOIN mtb_partita_mag mpm\n" +
" ON dot.cod_prod = mpm.cod_mart AND dot.partita_mag = mpm.partita_mag\n" +
" WHERE dot.data_ord = %s\n" +
" AND dot.num_ord = %s\n" +
" AND dot.gestione = [gestione])\n" +
"SELECT ISNULL(MAX(progressivo_ul), 0) AS progressivo_ul\n" +
"FROM mtb_colt\n" +
" INNER JOIN mtb_colr mcr ON mtb_colt.gestione = mcr.gestione AND mtb_colt.data_collo = mcr.data_collo AND\n" +
" mtb_colt.ser_collo = mcr.ser_collo AND mtb_colt.num_collo = mcr.num_collo\n" +
" INNER JOIN mtb_partita_mag mpm ON mcr.cod_mart = mpm.cod_mart AND mcr.partita_mag = mpm.partita_mag\n" +
" INNER JOIN partite ON mcr.cod_mart = partite.cod_mart AND mpm.partita_mag_prod = partite.partita_mag_prod\n" +
" AND mtb_colt.cod_jfas = partite.cod_jfas\n" +
"WHERE mtb_colt.gestione = [gestione]\n" +
" AND segno = %s",
dataOrd,
numOrd,
segno
).replace("[gestione]", UtilityDB.valueToString(gestione));
int maxProgressivoUl = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
return maxProgressivoUl + 1;
@@ -1354,7 +1341,7 @@ public class CommonRules extends QueryRules {
public static void updateDatiInv(Connection conn, DtbDoct entity) throws Exception {
String codAnagOld = null, serDocOld = null, codDtipOld = null;
Integer numDocOld = null;
LocalDate dataDocOld = null;
Date dataDocOld = null;
HashMap<String, Object> oldPk = entity.getOldPk();
if (oldPk != null && !oldPk.isEmpty()) {
@@ -1363,7 +1350,7 @@ public class CommonRules extends QueryRules {
else codAnagOld = entity.getCodAnag();
if (oldPk.containsKey("codDtip")) codDtipOld = (String) oldPk.get("codDtip");
else codDtipOld = entity.getCodDtip();
if (oldPk.containsKey("dataDoc")) dataDocOld = UtilityString.parseLocalDate((String) oldPk.get("dataDoc"));
if (oldPk.containsKey("dataDoc")) dataDocOld = UtilityString.parseDate((String) oldPk.get("dataDoc"));
else dataDocOld = entity.getDataDoc();
if (oldPk.containsKey("serDoc")) serDocOld = (String) oldPk.get("serDoc");
else serDocOld = entity.getSerDoc();
@@ -1379,7 +1366,7 @@ public class CommonRules extends QueryRules {
"UPDATE mtb_invent " +
"SET cod_anag = " + UtilityDB.valueToString(entity.getCodAnag()) + ", " +
"cod_dtip = " + UtilityDB.valueToString(entity.getCodDtip()) + ", " +
"data_doc = " + UtilityDB.valueToString(entity.getDataDoc()) + ", " +
"data_doc = " + UtilityDB.valueDateToString(entity.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + ", " +
"ser_doc = " + UtilityDB.valueToString(entity.getSerDoc()) + ", " +
"num_doc = " + UtilityDB.valueToString(entity.getNumDoc());
sql = UtilityDB.addwhereCond(sql, entity.getWhereCondOldPk(null), false);
@@ -1391,12 +1378,12 @@ public class CommonRules extends QueryRules {
public static boolean getChkCompatibilitaCarat(Connection connection, String codMart, String carat) throws SQLException {
String sql =
Query.format("SELECT chk_compatibilita\n" +
"FROM mtb_aart\n" +
" INNER JOIN mtb_tipi_carat ON mtb_aart.cod_mtip = mtb_tipi_carat.cod_mtip AND\n" +
" mtb_aart.cod_mstp = mtb_tipi_carat.cod_mstp\n" +
"WHERE mtb_aart.cod_mart = %s\n" +
" AND mtb_tipi_carat.carat = %s\n",
codMart, carat);
"FROM mtb_aart\n" +
" INNER JOIN mtb_tipi_carat ON mtb_aart.cod_mtip = mtb_tipi_carat.cod_mtip AND\n" +
" mtb_aart.cod_mstp = mtb_tipi_carat.cod_mstp\n" +
"WHERE mtb_aart.cod_mart = %s\n" +
" AND mtb_tipi_carat.carat = %s\n" ,
codMart, carat);
Boolean chkCompatibilita = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
if (chkCompatibilita == null) chkCompatibilita = false;

View File

@@ -21,7 +21,6 @@ import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.*;
import java.util.Map.Entry;
@@ -40,7 +39,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
segno = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
}
LocalDate dataReg = null, dataValidita = null;
Date dataReg = null, dataValidita = null;
if (row instanceof DtbDocr) {
dataReg = ((DtbDocr) row).getDataReg();
dataValidita = ((DtbDocr) row).getDataDoc();
@@ -191,22 +190,22 @@ public class DocOrdCalTotaliRules extends QueryRules {
componenti.add(rigaDocOrd);
} else if (!esponiComp && "C".equals(flagCalcPrz)) {
if (CommonConstants.ULTC.equalsIgnoreCase(listino)) {
sql = " SELECT dbo.f_GetCostoUltArt_depo( " + UtilityDB.valueToString(dataReg) + ", "
sql = " SELECT dbo.f_GetCostoUltArt_depo( " + UtilityDB.valueDateToString(dataReg, CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(codMdep) + ", "
+ UtilityDB.valueToString(codComp) + ") as val_unt ";
} else if ("V".equalsIgnoreCase(gestione)) {
if (flagPrzIva) {
sql = "SELECT dbo.f_getPrzVendIva(" + UtilityDB.valueToString(dataValidita) + ", "
sql = "SELECT dbo.f_getPrzVendIva(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(listino) + ","
+ UtilityDB.valueToString(codComp) + ", 'S' ) as val_unt ";
} else {
sql = "SELECT dbo.f_getPrzVend(" + UtilityDB.valueToString(dataValidita) + ", "
sql = "SELECT dbo.f_getPrzVend(" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(listino) + ","
+ UtilityDB.valueToString(codComp) + ", 'S' ) as val_unt ";
}
} else if ("A".equalsIgnoreCase(gestione)) {
sql = "SELECT dbo.f_getPrzNettoAcqArt (" + UtilityDB.valueToString(dataValidita) + ", "
sql = "SELECT dbo.f_getPrzNettoAcqArt (" + UtilityDB.valueDateToString(dataValidita, CommonConstants.DATE_FORMAT_YMD) + ", "
+ UtilityDB.valueToString(listino) + ", "
+ "NULL, "
+ UtilityDB.valueToString(codComp) + ") as val_unt ";
@@ -241,7 +240,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
public static void calcSconti(Connection conn, DtbDoct testata) throws Exception {
List<DtbDocOrdR> rows = new ArrayList<>(Stream.of(testata.getDtbDocr()).filter(x -> x.getRigaOrd() == null).toList());
calcSconti(conn, UtilityLocalDate.localDateToDate(testata.getDataDoc()), rows);
calcSconti(conn, testata.getDataDoc(), rows);
testata.setDtbDocr(Stream.of(rows).map(x -> (DtbDocr) x).toList());
testata.getDtbDocr().addAll(Stream.of(testata.getDtbDocr()).filter(x -> x.getRigaOrd() != null).toList());
@@ -266,7 +265,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
for (HashMap<String, String> artLisv : distinctArtLisv) {
String sql = "SELECT cod_mart, sconto_cartoni, sconto_strato, sconto_pedane " +
"FROM getListinoVendita (" + UtilityDB.valueDateToString(dataListino, CommonConstants.DATE_FORMAT_YMD_DASHED) + ", " +
"FROM getListinoVendita (" + UtilityDB.valueDateToString(dataListino, CommonConstants.DATE_FORMAT_YMD) + ", " +
UtilityDB.valueToString(UtilityHashMap.getValueIfExists(artLisv, "listino")) + ", " +
UtilityDB.valueToString(UtilityHashMap.getValueIfExists(artLisv, "cod_mart")) + ")";
@@ -473,7 +472,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
//Dati Bolla
String codDtipBolla = null, serDocBolla = null;
LocalDate dataDocBolla = null;
Date dataDocBolla = null;
Integer numDocBolla = null;
if (testata.getOperation() == OperationType.NO_OP) {
@@ -648,12 +647,12 @@ public class DocOrdCalTotaliRules extends QueryRules {
}
throw new Exception(String.format(
"Impossibile salvare l'ordine %s del %s n. %s, riga %s senza aliquota IVA",
gestione, CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(row.getDataOrd()), row.getNumOrd(), riga));
gestione, UtilityDate.formatDate(row.getDataOrd(), CommonConstants.DATE_FORMAT_DMY), row.getNumOrd(), riga));
} else {
throw new Exception(String.format(
"Impossibile salvare il documento %s del %s n. %s/%s, articolo %s senza aliquota IVA",
((DtbBaseDocR) row).getCodDtip(),
CommonConstants.DATE_DMY_SLASHED_FORMATTER.format(((DtbBaseDocR) row).getDataDoc()),
UtilityDate.formatDate(((DtbBaseDocR) row).getDataDoc(), CommonConstants.DATE_FORMAT_DMY),
((DtbBaseDocR) row).getSerDoc(),
((DtbBaseDocR) row).getNumDoc(), (codMart == null ? "" : codMart + " - ") + row.getDescrizione()
));
@@ -726,7 +725,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
" FROM dtb_docr " +
" WHERE dtb_docr.cod_anag = " + UtilityDB.valueToString(dtbDocr.getCodAnag()) + " AND " +
"dtb_docr.cod_dtip = " + UtilityDB.valueToString(dtbDocr.getCodDtipBolla()) + " AND " +
"dtb_docr.data_doc = " + UtilityDB.valueDateToString(dtbDocr.getDataDocBolla(), CommonConstants.DATE_FORMAT_YMD_DASHED) + " AND " +
"dtb_docr.data_doc = " + UtilityDB.valueDateToString(dtbDocr.getDataDocBolla(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
"dtb_docr.ser_doc = " + UtilityDB.valueToString(dtbDocr.getSerDocBolla()) + " AND " +
"dtb_docr.num_doc = " + UtilityDB.valueToString(dtbDocr.getNumDocBolla()) + " AND " +
"dtb_docr.id_riga = " + UtilityDB.valueToString(dtbDocr.getIdRigaBolla());
@@ -1184,7 +1183,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
}
private static List<CostiDTO> addCosti(final DtbDocr dtbDocr, List<
BigDecimal> sconti, List<CostiDTO> listaCosti, String codJfasTestata) {
BigDecimal> sconti, List<CostiDTO> listaCosti, String codJfasTestata) throws Exception {
BigDecimal importo = dtbDocr.getImportoRiga();
for (BigDecimal sconto : sconti) {
if (sconto != null) {
@@ -1195,8 +1194,8 @@ public class DocOrdCalTotaliRules extends QueryRules {
if (!UtilityBigDecimal.isNullOrZero(importo)) {
String codJfas = UtilityString.isNull(dtbDocr.getCodJfas(), codJfasTestata);
Date dataInizComp = UtilityDate.isNull(dtbDocr.getDataInizComp(), UtilityLocalDate.localDateToDate(dtbDocr.getDataDoc()));
Date dataFineComp = UtilityDate.isNull(dtbDocr.getDataFineComp(), UtilityLocalDate.localDateToDate(dtbDocr.getDataDoc()));
Date dataInizComp = UtilityDate.isNull(dtbDocr.getDataInizComp(), dtbDocr.getDataDoc());
Date dataFineComp = UtilityDate.isNull(dtbDocr.getDataFineComp(), dtbDocr.getDataDoc());
Optional<CostiDTO> optCosti = Stream.of(listaCosti)
.filter(value -> UtilityString.equalsIgnoreCase(value.getCodCcon(), dtbDocr.getCodCcon()) &&
UtilityString.equalsIgnoreCase(value.getCodJcom(), dtbDocr.getCodJcom()) &&
@@ -1261,7 +1260,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
" FROM mtb_spes INNER JOIN gtb_spes ON gtb_spes.cod_spes = mtb_spes.cod_spes " +
" INNER JOIN mtb_aart ON mtb_aart.cod_mart = mtb_spes.cod_mart " +
" LEFT OUTER JOIN mtb_unt_mis ON gtb_spes.unt_mis = mtb_unt_mis.unt_mis " +
" LEFT OUTER JOIN dbo.getDatiCodSpesCONAI(null, " + UtilityDB.valueToString(testata.getCodAnag()) + ", " + UtilityDB.valueToString(testata.getDataDoc()) + ")spesConai ON mtb_spes.cod_spes = spesConai.cod_conai " +
" LEFT OUTER JOIN dbo.getDatiCodSpesCONAI(null, " + UtilityDB.valueToString(testata.getCodAnag()) + ", " + UtilityDB.valueDateToString(testata.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + ")spesConai ON mtb_spes.cod_spes = spesConai.cod_conai " +
" WHERE mtb_spes.cod_mart = " + UtilityDB.valueToString(row.getCodMart()) + " AND " +
" mtb_spes.flag_inc_in_prz = 'N' AND " +
" dbo.f_chkFlagSpesaArtGestione(mtb_spes.cod_mart, mtb_spes.cod_spes, " + UtilityDB.valueToString(testata.getGestione()) + ") = 'S'";
@@ -1411,7 +1410,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
private static Integer setDtbDocs(DtbDoct testata, List<CtbMovi> castelletto,
GtbSpes gtbSpes, BigDecimal qta, BigDecimal importo,
List<DtbDocs> speseCalc, Integer maxRigaSpesa,
Boolean ventilazione) {
Boolean ventilazione) throws Exception {
maxRigaSpesa++;
DtbDocs dtbDocs = new DtbDocs();
dtbDocs.setEntityHolder(testata.getEntityHolder());
@@ -1637,7 +1636,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
"SELECT saldo " +
" FROM dbo.GetSaldoContoAnalitico(" + UtilityDB.valueToString(testata.getDtbTipi().getCodCcauAnt()) + ','
+ UtilityDB.valueToString(testata.getCodAnag()) + ","
+ UtilityDB.valueToString(testata.getDataDoc()) + ")";
+ UtilityDB.valueDateToString(testata.getDataDoc(), CommonConstants.DATE_FORMAT_YMD) + ")";
BigDecimal saldoAcconto = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, sql);
if (UtilityBigDecimal.isNullOrZero(saldoAcconto)) {
@@ -1655,7 +1654,7 @@ public class DocOrdCalTotaliRules extends QueryRules {
} else if (DtbTipi.AccontoDa.fromValue(testata.getDtbTipi().getFlagAcconto()) == DtbTipi.AccontoDa.BOLLA && testata.getDtbTipi().getTipoEmissioneEnum() == TipoEmissione.DIFFERITA) {
List<DtbDoct> elencoBolle = Stream.of(testata.getDtbDoctBolle()).distinctBy(dtbDoct -> dtbDoct.getCodAnag() + " - " +
dtbDoct.getCodDtip() + " - " +
CommonConstants.DATE_YMD_DASHED_FORMATTER.format(dtbDoct.getDataDoc()) + " - " +
UtilityDate.formatDate(dtbDoct.getDataDoc(), CommonConstants.DATETIME_FORMAT_YMD) + " - " +
dtbDoct.getSerDoc() + " - " +
dtbDoct.getNumDoc()).toList();
for (DtbDoct bolla : elencoBolle) {

View File

@@ -5,6 +5,7 @@ import com.annimon.stream.Stream;
import it.integry.common.var.CommonConstants;
import it.integry.ems.sync.MultiDBTransaction.Connection;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.base.EntityInterface;
import it.integry.ems_model.config.EmsRestConstants;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.*;
@@ -23,7 +24,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -52,7 +53,7 @@ public class DocOrdRules extends QueryRules {
"SELECT DISTINCT id_viaggio " +
" FROM dtb_ordr " +
"WHERE gestione = " + UtilityDB.valueToString(ordT.getGestione()) + " AND " +
" data_ord = " + UtilityDB.valueToString(ordT.getDataOrd()) + " AND " +
" data_ord = " + UtilityDB.valueDateToString(ordT.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " AND " +
" num_ord = " + UtilityDB.valueToString(ordT.getNumOrd()) + " AND " +
" id_viaggio IS NOT NULL;";
PreparedStatement ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
@@ -115,7 +116,7 @@ public class DocOrdRules extends QueryRules {
String listino = entity.getListino();
String gestione = entity.getGestione();
LocalDate dataDivisa;
Date dataDivisa;
String errorMessage;
if (entity instanceof DtbDoct || entity instanceof WdtbDoct) {
@@ -154,7 +155,7 @@ public class DocOrdRules extends QueryRules {
codDivi = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, query);
if (UtilityString.isNullOrEmpty(codDivi)) {
query = "SELECT cod_divi_cont_prima as cod_divi from gtb_anni_divi WHERE anno = DatePart(yy, " + UtilityDB.valueToString(dataDivisa) + ")";
query = "SELECT cod_divi_cont_prima as cod_divi from gtb_anni_divi WHERE anno = DatePart(yy, " + UtilityDB.valueDateToString(dataDivisa, CommonConstants.DATE_FORMAT_YMD) + ")";
codDivi = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, query);
}
@@ -365,6 +366,7 @@ public class DocOrdRules extends QueryRules {
}
if (isOrdine) {
sql = "SELECT gtb_spes.descrizione, "
+ " CAST(0 AS NUMERIC(20, 5)) as qta, "
@@ -376,6 +378,7 @@ public class DocOrdRules extends QueryRules {
+ " gtb_divi "
+ " WHERE gtb_divi.cod_divi = " + UtilityDB.valueToString(codDivi) + " and "
+ " gtb_spes.cod_spes = " + UtilityDB.valueToString(codSpes);
} else {
sql = "SELECT gtb_spes.descrizione, "
+ " CAST(0 AS NUMERIC(20, 5)) as qta, "
@@ -417,6 +420,8 @@ public class DocOrdRules extends QueryRules {
} else if (columnName.equals("untMis")) {
columnValue = untMisServ;
}
} else if (spese instanceof DtbOrds && ((DtbOrds) spese).getValUnt() != null && columnName.equals("importo")) {
valueEntity = ((DtbOrds) spese).getValUnt().multiply(((DtbOrds) spese).getQta());
}
if (valueEntity == null) {
@@ -613,24 +618,24 @@ public class DocOrdRules extends QueryRules {
}
public static BigDecimal completeDatiQtaInProdOrd(Connection conn, DtbOrdSteps entity) throws Exception {
public static BigDecimal completeDatiQtaInProdOrd(Connection conn, EntityBase entity) throws Exception {
HashMap<String, Object> campi = new HashMap<String, Object>();
BigDecimal qtaImmesseDB = BigDecimal.ZERO, qtaScartateDB = BigDecimal.ZERO, qtaTrasferiteDB = BigDecimal.ZERO, qtaInProdNew = BigDecimal.ZERO;
LocalDate dataOrd = entity.getDataOrd();
Integer numOrd = entity.getNumOrd();
String gestione = entity.getGestione();
Integer idRiga = entity.getIdRiga();
Integer idStep = entity.getIdStep();
BigDecimal qtaImmessa = entity.getQtaImmesse();
BigDecimal qtaTrasferite = entity.getQtaTrasferite();
BigDecimal qtaScartate = entity.getQtaScartate();
Date dataOrd = (Date) DroolsUtil.getEntityFieldValue(entity, "data_ord");
Integer numOrd = (Integer) DroolsUtil.getEntityFieldValue(entity, "num_ord");
String gestione = (String) DroolsUtil.getEntityFieldValue(entity, "gestione");
Integer idRiga = (Integer) DroolsUtil.getEntityFieldValue(entity, "id_riga");
Integer idStep = (Integer) DroolsUtil.getEntityFieldValue(entity, "id_step");
BigDecimal qtaImmessa = (BigDecimal) DroolsUtil.getEntityFieldValue(entity, "qta_immesse");
BigDecimal qtaTrasferite = (BigDecimal) DroolsUtil.getEntityFieldValue(entity, "qta_trasferite");
BigDecimal qtaScartate = (BigDecimal) DroolsUtil.getEntityFieldValue(entity, "qta_scartate");
String query =
" select qta_immesse, qta_trasferite, qta_scartate, qta_in_prod " +
" from dtb_ord_steps " +
" where gestione = " + UtilityDB.valueToString(gestione) + " and " +
" data_ord = " + UtilityDB.valueToString(dataOrd) + " and " +
" data_ord = " + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + " and " +
" num_ord = " + UtilityDB.valueToString(numOrd) + " and " +
" id_riga = " + UtilityDB.valueToString(idRiga) + " and " +
" id_step = " + UtilityDB.valueToString(idStep);
@@ -674,7 +679,7 @@ public class DocOrdRules extends QueryRules {
" from (select gestione, data_ord, num_ord, cod_jfas, num_fase, MAX(id_step) as id_step_max " +
" from dtb_ord_steps " +
" where gestione = " + UtilityDB.valueToString(dtbOrdSteps.getGestione()) + " and " +
" data_ord = " + UtilityDB.valueToString(dtbOrdSteps.getDataOrd()) + " and " +
" data_ord = " + UtilityDB.valueDateToString(dtbOrdSteps.getDataOrd(), CommonConstants.DATE_FORMAT_YMD) + " and " +
" num_ord = " + UtilityDB.valueToString(dtbOrdSteps.getNumOrd()) + " and " +
" num_fase = " + UtilityDB.valueToString(dtbOrdSteps.getNumFase()) + " and " +
" cod_jfas = " + UtilityDB.valueToString(dtbOrdSteps.getCodJfas()) + " " +
@@ -812,7 +817,7 @@ public class DocOrdRules extends QueryRules {
public static DtbDocr completeDatiDocComp(Connection connection, DtbDocr dtbDocr) throws Exception {
if (!dtbDocr.getCodDtip().equalsIgnoreCase(dtbDocr.getCodDtipComp()) ||
!dtbDocr.getSerDoc().equalsIgnoreCase(dtbDocr.getSerDocComp()) ||
!dtbDocr.getDataDoc().isEqual(dtbDocr.getDataDocComp()) ||
dtbDocr.getDataDoc().compareTo(dtbDocr.getDataDocComp()) != 0 ||
!dtbDocr.getNumDoc().equals(dtbDocr.getNumDocComp())) {
String sql =
"SELECT TOP 1 * " +
@@ -972,12 +977,12 @@ public class DocOrdRules extends QueryRules {
.setGeneraOrdLavDaProd(false);
dtbOrdtProd.setOperation(OperationType.NO_OP);
/*
/*
BigDecimal valUnt = new BigDecimal(0);
if (dtbOrdt.getQtaProd().compareTo(BigDecimal.ZERO) > 0) {
valUnt = dtbOrdt.getTotImponib().divide(dtbOrdt.getQtaProd(), 5, BigDecimal.ROUND_HALF_UP);
}*/
}
*/
DtbOrdr dtbOrdrProd =
new DtbOrdr().setRigaOrd(dtbOrdt.getRigaOrdRif());
if (dtbOrdt.getOperation() == OperationType.DELETE) {
@@ -993,7 +998,7 @@ public class DocOrdRules extends QueryRules {
.setRapConv(dtbOrdt.getRapConvProd())
.setQtaOrd(dtbOrdt.getQtaProd())
.setQtaEvasa(dtbOrdt.getQtaEvasaProd())
/*.setValUnt(valUnt)*/
//.setValUnt(valUnt)
.setSconto5(dtbOrdt.getSconto1())
.setSconto6(dtbOrdt.getSconto2())
.setSconto7(dtbOrdt.getSconto3())

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