Add migration for function getNumDoc4NumDocForn
Some checks are pending
IntegryManagementSystem_Multi/pipeline/head Build queued...

This commit is contained in:
2025-09-15 16:03:01 +02:00
parent 24db8fbcec
commit 0f65aaffab

View File

@@ -0,0 +1,74 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250915155856 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getNumDoc4NumDocForn", "-- =============================================\n" +
"-- Author: <Author,,Name>\n" +
"-- Create date: <Create Date,,>\n" +
"-- Description: <Description,,>\n" +
"-- =============================================\n" +
"CREATE FUNCTION getNumDoc4NumDocForn\n" +
"( \n" +
" @numdocOrig varchar(60), @annoComp varchar(4)\n" +
")\n" +
"\n" +
"RETURNS @numTable TABLE \n" +
"(\n" +
" num_doc_orig varchar(max), num_doc int\n" +
")\n" +
"AS\n" +
"BEGIN\n" +
" \n" +
" declare @sep varchar(5), @numDoc varchar(60), @rowc int\n" +
"\n" +
" select @numdocOrig = LTRIM(RTRIM(@numdocOrig))\n" +
"\n" +
" declare @tmpChar table (sep varchar(5));\n" +
" declare @splitString table (numOrig varchar(60), numNew varchar(60), is_numeric int);\n" +
"\n" +
" SET @numdocOrig = REPLACE(@numdocOrig, '-', ',');\n" +
" SET @numdocOrig = REPLACE(@numdocOrig, '.', ',');\n" +
" SET @numdocOrig = REPLACE(@numdocOrig, ' ', ',');\n" +
" SET @numdocOrig = REPLACE(@numdocOrig, '/', ',');\n" +
" SET @numdocOrig = REPLACE(@numdocOrig, '\', ',');\n" +
" \n" +
" ;with tab_p as (\n" +
" select value_string as num_new, \n" +
" COUNT(*) over (partition by (select 1)) as tot_row, \n" +
" ROW_NUMBER() over (order by (select 1)) as id,\n" +
" LEN(value_string) as lunghezza\n" +
" from dbo.parseStringIntoArray(@numdocOrig, ',')\n" +
" where ISNUMERIC(value_string) = 1 )\n" +
" \n" +
" insert into @numTable\n" +
" select @numdocOrig as num_doc_forn, cast(num_new as int ) as num_doc\n" +
" from (\n" +
" select * from tab_p ) t\n" +
" where (tot_row = 1 or (tot_row > 1 AND \n" +
" num_new <> cast(@annoComp as varchar) and\n" +
" num_new <> cast(right(@annoComp,2) as varchar) )) \n" +
" union all\n" +
" select @numdocOrig, @numdocOrig\n" +
" where not exists (select * from tab_p)\n" +
" \n" +
" \n" +
"\n" +
" RETURN \n" +
"END");
}
@Override
public void down() throws Exception {
}
}