HostData düzenelemsi
This commit is contained in:
parent
6174253a40
commit
d38e4f851a
7 changed files with 1196 additions and 412 deletions
|
|
@ -5550,6 +5550,22 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
|
||||||
EditorOptions=EditorOptionValues.NumberStandartFormat(),
|
EditorOptions=EditorOptionValues.NumberStandartFormat(),
|
||||||
TotalSummaryJson = DefaultColumnTotalSummaryJson("TotalPrice")
|
TotalSummaryJson = DefaultColumnTotalSummaryJson("TotalPrice")
|
||||||
},
|
},
|
||||||
|
new ListFormField
|
||||||
|
{
|
||||||
|
ListFormCode = listForm.ListFormCode,
|
||||||
|
CultureName = LanguageCodes.En,
|
||||||
|
SourceDbType = DbType.Boolean,
|
||||||
|
FieldName = "IsActive",
|
||||||
|
CaptionName = "App.Listform.ListformField.IsActive",
|
||||||
|
Width = 0,
|
||||||
|
ListOrderNo = 10,
|
||||||
|
Visible = true,
|
||||||
|
IsActive = true,
|
||||||
|
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
||||||
|
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||||
|
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
|
||||||
|
PivotSettingsJson = DefaultPivotSettingsJson
|
||||||
|
},
|
||||||
new()
|
new()
|
||||||
{
|
{
|
||||||
ListFormCode = listForm.ListFormCode,
|
ListFormCode = listForm.ListFormCode,
|
||||||
|
|
@ -5558,7 +5574,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
|
||||||
FieldName = "TenantId",
|
FieldName = "TenantId",
|
||||||
CaptionName = "App.Listform.ListformField.TenantId",
|
CaptionName = "App.Listform.ListformField.TenantId",
|
||||||
Width = 0,
|
Width = 0,
|
||||||
ListOrderNo = 10,
|
ListOrderNo = 11,
|
||||||
Visible = false,
|
Visible = false,
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,917 @@
|
||||||
|
CREATE OR REPLACE FUNCTION dbo."Sas_H_ListFormFieldsDictionaryJson"
|
||||||
|
(
|
||||||
|
p_definition_culture_name VARCHAR(10) DEFAULT 'en',
|
||||||
|
p_ui_culture_name VARCHAR(10) DEFAULT 'tr',
|
||||||
|
p_list_form_code VARCHAR(64) DEFAULT NULL,
|
||||||
|
p_only_base_definitions BOOLEAN DEFAULT TRUE,
|
||||||
|
p_resource_name VARCHAR(64) DEFAULT NULL
|
||||||
|
)
|
||||||
|
RETURNS JSONB
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
v_result JSONB;
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
WITH list_form_source AS
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
l."Id",
|
||||||
|
l."ListFormCode",
|
||||||
|
l."CultureName",
|
||||||
|
l."Name",
|
||||||
|
|
||||||
|
lt_name."Value" AS name_value,
|
||||||
|
|
||||||
|
l."Title",
|
||||||
|
lt_title."Value" AS title_value,
|
||||||
|
|
||||||
|
l."Description",
|
||||||
|
lt_desc."Value" AS description_value,
|
||||||
|
|
||||||
|
l."TableName",
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
BTRIM(l."SelectCommand"::TEXT),
|
||||||
|
''
|
||||||
|
) AS select_command_text,
|
||||||
|
|
||||||
|
l."KeyFieldName",
|
||||||
|
l."UserId",
|
||||||
|
l."RoleId"
|
||||||
|
|
||||||
|
FROM dbo."Sas_H_ListForm" l
|
||||||
|
|
||||||
|
/*
|
||||||
|
SQL Server OUTER APPLY TOP (1)
|
||||||
|
PostgreSQL LEFT JOIN LATERAL ... LIMIT 1
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT lt."Value"
|
||||||
|
FROM dbo."Sas_H_LanguageText" lt
|
||||||
|
WHERE lt."CultureName" = p_ui_culture_name
|
||||||
|
AND lt."Key" = l."Name"
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_resource_name IS NULL
|
||||||
|
OR lt."ResourceName" = p_resource_name
|
||||||
|
)
|
||||||
|
ORDER BY lt."ResourceName"
|
||||||
|
LIMIT 1
|
||||||
|
) lt_name ON TRUE
|
||||||
|
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT lt."Value"
|
||||||
|
FROM dbo."Sas_H_LanguageText" lt
|
||||||
|
WHERE lt."CultureName" = p_ui_culture_name
|
||||||
|
AND lt."Key" = l."Title"
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_resource_name IS NULL
|
||||||
|
OR lt."ResourceName" = p_resource_name
|
||||||
|
)
|
||||||
|
ORDER BY lt."ResourceName"
|
||||||
|
LIMIT 1
|
||||||
|
) lt_title ON TRUE
|
||||||
|
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT lt."Value"
|
||||||
|
FROM dbo."Sas_H_LanguageText" lt
|
||||||
|
WHERE lt."CultureName" = p_ui_culture_name
|
||||||
|
AND lt."Key" = l."Description"
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_resource_name IS NULL
|
||||||
|
OR lt."ResourceName" = p_resource_name
|
||||||
|
)
|
||||||
|
ORDER BY lt."ResourceName"
|
||||||
|
LIMIT 1
|
||||||
|
) lt_desc ON TRUE
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
(
|
||||||
|
p_definition_culture_name IS NULL
|
||||||
|
OR l."CultureName" = p_definition_culture_name
|
||||||
|
)
|
||||||
|
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_list_form_code IS NULL
|
||||||
|
OR l."ListFormCode" = p_list_form_code
|
||||||
|
)
|
||||||
|
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_only_base_definitions = FALSE
|
||||||
|
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
l."UserId" IS NULL
|
||||||
|
AND l."RoleId" IS NULL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
list_forms_json AS
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
jsonb_build_object
|
||||||
|
(
|
||||||
|
'listFormCode',
|
||||||
|
l."ListFormCode",
|
||||||
|
|
||||||
|
'displayName',
|
||||||
|
COALESCE(
|
||||||
|
l.name_value::TEXT,
|
||||||
|
l."Name",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'title',
|
||||||
|
COALESCE(
|
||||||
|
l.title_value::TEXT,
|
||||||
|
l."Title",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'description',
|
||||||
|
COALESCE(
|
||||||
|
l.description_value::TEXT,
|
||||||
|
l."Description",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'tableName',
|
||||||
|
COALESCE(
|
||||||
|
l."TableName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'sqlSourceName',
|
||||||
|
COALESCE(
|
||||||
|
NULLIF(
|
||||||
|
l."TableName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
l.select_command_text,
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'sourceKind',
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN COALESCE(
|
||||||
|
NULLIF(
|
||||||
|
l."TableName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
l.select_command_text
|
||||||
|
) IS NULL
|
||||||
|
THEN 'unknown'
|
||||||
|
|
||||||
|
WHEN UPPER(
|
||||||
|
BTRIM(
|
||||||
|
COALESCE(
|
||||||
|
NULLIF(
|
||||||
|
l."TableName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
l.select_command_text
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) LIKE 'SELECT%'
|
||||||
|
THEN 'selectSql'
|
||||||
|
|
||||||
|
ELSE 'table'
|
||||||
|
|
||||||
|
END,
|
||||||
|
|
||||||
|
'keyFieldName',
|
||||||
|
COALESCE(
|
||||||
|
l."KeyFieldName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'searchText',
|
||||||
|
CONCAT_WS(
|
||||||
|
' ',
|
||||||
|
l."ListFormCode",
|
||||||
|
l."TableName",
|
||||||
|
l.select_command_text,
|
||||||
|
|
||||||
|
COALESCE(
|
||||||
|
l.name_value::TEXT,
|
||||||
|
l."Name"
|
||||||
|
),
|
||||||
|
|
||||||
|
COALESCE(
|
||||||
|
l.title_value::TEXT,
|
||||||
|
l."Title"
|
||||||
|
),
|
||||||
|
|
||||||
|
COALESCE(
|
||||||
|
l.description_value::TEXT,
|
||||||
|
l."Description"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'fields',
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
jsonb_agg
|
||||||
|
(
|
||||||
|
jsonb_build_object
|
||||||
|
(
|
||||||
|
'field',
|
||||||
|
f."FieldName",
|
||||||
|
|
||||||
|
'displayName',
|
||||||
|
COALESCE(
|
||||||
|
lt_cap."Value"::TEXT,
|
||||||
|
f."CaptionName",
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'sqlDataType',
|
||||||
|
sc.sql_data_type,
|
||||||
|
|
||||||
|
'listOrderNo',
|
||||||
|
f."ListOrderNo",
|
||||||
|
|
||||||
|
'isVisible',
|
||||||
|
COALESCE(
|
||||||
|
f."Visible",
|
||||||
|
TRUE
|
||||||
|
),
|
||||||
|
|
||||||
|
'isBooleanColumn',
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN sc.sql_data_type = 'boolean'
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
WHEN f."FieldName" LIKE 'Is%'
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
WHEN f."FieldName" LIKE 'Has%'
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
WHEN f."FieldName" IN
|
||||||
|
(
|
||||||
|
'Monday',
|
||||||
|
'Tuesday',
|
||||||
|
'Wednesday',
|
||||||
|
'Thursday',
|
||||||
|
'Friday',
|
||||||
|
'Saturday',
|
||||||
|
'Sunday'
|
||||||
|
)
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
WHEN f."FieldName" IN
|
||||||
|
(
|
||||||
|
'EmailConfirmed',
|
||||||
|
'TwoFactorEnabled',
|
||||||
|
'IsVerified',
|
||||||
|
'IsDefault',
|
||||||
|
'IsPublic',
|
||||||
|
'IsEnabled',
|
||||||
|
'IsPublished',
|
||||||
|
'IsPinned',
|
||||||
|
'IsAnonymous',
|
||||||
|
'IsFixed',
|
||||||
|
'IsCustomized',
|
||||||
|
'IsEncrypted',
|
||||||
|
'IsInherited',
|
||||||
|
'ZipRequired',
|
||||||
|
'StateRequired'
|
||||||
|
)
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
ELSE FALSE
|
||||||
|
|
||||||
|
END,
|
||||||
|
|
||||||
|
'lookupJsonText',
|
||||||
|
lj.lookup_json_text_decoded,
|
||||||
|
|
||||||
|
'lookupTableName',
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN lj.lookup_json IS NOT NULL
|
||||||
|
THEN COALESCE
|
||||||
|
(
|
||||||
|
lj.lookup_json ->> 'tableName',
|
||||||
|
lj.lookup_json ->> 'sqlTableName',
|
||||||
|
lj.lookup_json ->> 'lookupTableName',
|
||||||
|
lj.lookup_json #>> '{dataSource,tableName}',
|
||||||
|
lj.lookup_json #>> '{dataSource,sqlTableName}'
|
||||||
|
)
|
||||||
|
END,
|
||||||
|
|
||||||
|
lkp.parsed_lookup_table_name
|
||||||
|
),
|
||||||
|
|
||||||
|
'lookupValueColumn',
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN lj.lookup_json IS NOT NULL
|
||||||
|
THEN COALESCE
|
||||||
|
(
|
||||||
|
lj.lookup_json ->> 'valueExpr',
|
||||||
|
lj.lookup_json ->> 'valueField',
|
||||||
|
lj.lookup_json ->> 'valueColumn',
|
||||||
|
lj.lookup_json ->> 'keyField',
|
||||||
|
lj.lookup_json ->> 'keyFieldName'
|
||||||
|
)
|
||||||
|
END,
|
||||||
|
|
||||||
|
lkp.parsed_lookup_value_column
|
||||||
|
),
|
||||||
|
|
||||||
|
'lookupDisplayColumn',
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
CASE
|
||||||
|
WHEN lj.lookup_json IS NOT NULL
|
||||||
|
THEN COALESCE
|
||||||
|
(
|
||||||
|
lj.lookup_json ->> 'displayExpr',
|
||||||
|
lj.lookup_json ->> 'displayField',
|
||||||
|
lj.lookup_json ->> 'displayColumn',
|
||||||
|
lj.lookup_json ->> 'textField',
|
||||||
|
lj.lookup_json ->> 'textColumn',
|
||||||
|
lj.lookup_json ->> 'nameField',
|
||||||
|
lj.lookup_json ->> 'nameColumn'
|
||||||
|
)
|
||||||
|
END,
|
||||||
|
|
||||||
|
lkp.parsed_lookup_display_column
|
||||||
|
),
|
||||||
|
|
||||||
|
'lookupJoinMode',
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN lj.lookup_json_text_decoded IS NOT NULL
|
||||||
|
AND f."FieldName" NOT LIKE '%Id'
|
||||||
|
AND COALESCE(
|
||||||
|
lkp.parsed_lookup_value_column,
|
||||||
|
''
|
||||||
|
) IN
|
||||||
|
(
|
||||||
|
'Name',
|
||||||
|
'Code',
|
||||||
|
'Key',
|
||||||
|
'Value',
|
||||||
|
'key',
|
||||||
|
'value'
|
||||||
|
)
|
||||||
|
THEN 'direct-string'
|
||||||
|
|
||||||
|
WHEN lj.lookup_json_text_decoded IS NOT NULL
|
||||||
|
AND f."FieldName" NOT LIKE '%Id'
|
||||||
|
THEN 'direct-string'
|
||||||
|
|
||||||
|
WHEN lj.lookup_json_text_decoded IS NOT NULL
|
||||||
|
OR f."FieldName" LIKE '%Id'
|
||||||
|
THEN 'convert-nvarchar-safe'
|
||||||
|
|
||||||
|
ELSE NULL
|
||||||
|
|
||||||
|
END,
|
||||||
|
|
||||||
|
'lookupFallbackToSourceColumn',
|
||||||
|
CASE
|
||||||
|
WHEN
|
||||||
|
lj.lookup_json_text_decoded IS NOT NULL
|
||||||
|
AND f."FieldName" NOT LIKE '%Id'
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
ELSE FALSE
|
||||||
|
END,
|
||||||
|
|
||||||
|
'lookupSearchText',
|
||||||
|
CASE
|
||||||
|
WHEN lj.lookup_json_text_decoded IS NOT NULL
|
||||||
|
THEN CONCAT_WS
|
||||||
|
(
|
||||||
|
' ',
|
||||||
|
f."FieldName",
|
||||||
|
f."CaptionName",
|
||||||
|
lt_cap."Value"::TEXT,
|
||||||
|
lj.lookup_json_text_decoded
|
||||||
|
)
|
||||||
|
END,
|
||||||
|
|
||||||
|
'isActiveStatusColumn',
|
||||||
|
f."FieldName" IN
|
||||||
|
(
|
||||||
|
'IsActive',
|
||||||
|
'IsEnabled',
|
||||||
|
'IsPublished'
|
||||||
|
),
|
||||||
|
|
||||||
|
'isDeletedStatusColumn',
|
||||||
|
f."FieldName" IN
|
||||||
|
(
|
||||||
|
'IsDeleted',
|
||||||
|
'Deleted',
|
||||||
|
'IsRemoved'
|
||||||
|
),
|
||||||
|
|
||||||
|
'isSensitive',
|
||||||
|
CASE
|
||||||
|
WHEN f."FieldName" LIKE '%Password%'
|
||||||
|
OR f."FieldName" LIKE '%ConnectionString%'
|
||||||
|
OR f."FieldName" LIKE '%Token%'
|
||||||
|
OR f."FieldName" LIKE '%Secret%'
|
||||||
|
OR f."FieldName" LIKE '%ApiKey%'
|
||||||
|
OR f."FieldName" LIKE '%PrivateKey%'
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
ELSE FALSE
|
||||||
|
END,
|
||||||
|
|
||||||
|
'isDefaultSelectColumn',
|
||||||
|
CASE
|
||||||
|
WHEN
|
||||||
|
COALESCE(
|
||||||
|
f."Visible",
|
||||||
|
TRUE
|
||||||
|
) = TRUE
|
||||||
|
|
||||||
|
AND COALESCE(
|
||||||
|
f."IsActive",
|
||||||
|
TRUE
|
||||||
|
) = TRUE
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%Password%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%ConnectionString%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%Token%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%Secret%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%ApiKey%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT LIKE '%PrivateKey%'
|
||||||
|
|
||||||
|
AND f."FieldName" NOT IN
|
||||||
|
(
|
||||||
|
'Avatar',
|
||||||
|
'ExtraProperties'
|
||||||
|
)
|
||||||
|
|
||||||
|
THEN TRUE
|
||||||
|
|
||||||
|
ELSE FALSE
|
||||||
|
END
|
||||||
|
)
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
COALESCE(
|
||||||
|
f."ListOrderNo",
|
||||||
|
999999
|
||||||
|
),
|
||||||
|
f."FieldName"
|
||||||
|
)
|
||||||
|
|
||||||
|
FROM dbo."Sas_H_ListFormField" f
|
||||||
|
|
||||||
|
/*
|
||||||
|
SQL Server:
|
||||||
|
sys.tables
|
||||||
|
sys.columns
|
||||||
|
TYPE_NAME()
|
||||||
|
|
||||||
|
PostgreSQL:
|
||||||
|
information_schema.columns
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
c.data_type AS sql_data_type
|
||||||
|
|
||||||
|
FROM information_schema.columns c
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
c.table_schema = 'dbo'
|
||||||
|
|
||||||
|
AND c.table_name =
|
||||||
|
l."TableName"
|
||||||
|
|
||||||
|
AND c.column_name =
|
||||||
|
f."FieldName"
|
||||||
|
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
|
) sc ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
LookupJson decode
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
NULLIF
|
||||||
|
(
|
||||||
|
BTRIM
|
||||||
|
(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
NULLIF(
|
||||||
|
BTRIM(
|
||||||
|
f."LookupJson"::TEXT
|
||||||
|
),
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'\\u0022',
|
||||||
|
'"'
|
||||||
|
),
|
||||||
|
|
||||||
|
'\u0022',
|
||||||
|
'"'
|
||||||
|
),
|
||||||
|
|
||||||
|
'\\u0027',
|
||||||
|
''''
|
||||||
|
),
|
||||||
|
|
||||||
|
'\u0027',
|
||||||
|
''''
|
||||||
|
),
|
||||||
|
|
||||||
|
'"',
|
||||||
|
'"'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
''
|
||||||
|
) AS lookup_json_text_decoded
|
||||||
|
|
||||||
|
) lj_text ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
PostgreSQL'de ISJSON yerine
|
||||||
|
güvenli JSON parse işlemi gerekiyor.
|
||||||
|
|
||||||
|
LookupJson kolonu zaten JSON/JSONB ise
|
||||||
|
doğrudan kullanılabilir.
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
lj_text.lookup_json_text_decoded,
|
||||||
|
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN
|
||||||
|
lj_text.lookup_json_text_decoded
|
||||||
|
~ '^\s*[\{\[]'
|
||||||
|
|
||||||
|
THEN
|
||||||
|
lj_text.lookup_json_text_decoded::JSONB
|
||||||
|
|
||||||
|
ELSE NULL
|
||||||
|
|
||||||
|
END AS lookup_json
|
||||||
|
|
||||||
|
) lj ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
LookupQuery değerini al
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
CASE
|
||||||
|
WHEN lj.lookup_json IS NOT NULL
|
||||||
|
THEN
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'LookupQuery'
|
||||||
|
END AS lookup_query_text
|
||||||
|
|
||||||
|
) lq ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
LookupQuery temizleme
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
NULLIF
|
||||||
|
(
|
||||||
|
BTRIM
|
||||||
|
(
|
||||||
|
REGEXP_REPLACE
|
||||||
|
(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
COALESCE(
|
||||||
|
lq.lookup_query_text,
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'"',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'[',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
']',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'`',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'\s+',
|
||||||
|
' ',
|
||||||
|
'g'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
''
|
||||||
|
) AS clean_lookup_query
|
||||||
|
|
||||||
|
) lqc ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
SQL Server prosedürü LookupQuery içerisindeki
|
||||||
|
SELECT ... FROM ... ifadesini string işlemleri
|
||||||
|
ile parse ediyor.
|
||||||
|
|
||||||
|
PostgreSQL'de regexp_match daha temiz.
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
(
|
||||||
|
REGEXP_MATCH
|
||||||
|
(
|
||||||
|
lqc.clean_lookup_query,
|
||||||
|
|
||||||
|
'(?i)\bFROM\s+([a-zA-Z0-9_\."]+)'
|
||||||
|
)
|
||||||
|
)[1] AS parsed_table,
|
||||||
|
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'ValueExpr',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'valueExpr',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'valueField',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'valueColumn',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'keyField',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'keyFieldName',
|
||||||
|
''
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AS parsed_lookup_value_column,
|
||||||
|
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'DisplayExpr',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'displayExpr',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'displayField',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'displayColumn',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'textField',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'textColumn',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'nameField',
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
NULLIF(
|
||||||
|
lj.lookup_json
|
||||||
|
->> 'nameColumn',
|
||||||
|
''
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AS parsed_lookup_display_column
|
||||||
|
|
||||||
|
) parsed ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
NULLIF
|
||||||
|
(
|
||||||
|
REGEXP_REPLACE
|
||||||
|
(
|
||||||
|
COALESCE(
|
||||||
|
parsed.parsed_table,
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
'^(?i:dbo\.)',
|
||||||
|
|
||||||
|
''
|
||||||
|
),
|
||||||
|
|
||||||
|
''
|
||||||
|
)
|
||||||
|
AS parsed_lookup_table_name,
|
||||||
|
|
||||||
|
parsed.parsed_lookup_value_column,
|
||||||
|
|
||||||
|
parsed.parsed_lookup_display_column
|
||||||
|
|
||||||
|
) lkp ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Caption translation
|
||||||
|
*/
|
||||||
|
LEFT JOIN LATERAL
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
lt."Value"
|
||||||
|
|
||||||
|
FROM dbo."Sas_H_LanguageText" lt
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
lt."CultureName" =
|
||||||
|
p_ui_culture_name
|
||||||
|
|
||||||
|
AND lt."Key" =
|
||||||
|
f."CaptionName"
|
||||||
|
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_resource_name IS NULL
|
||||||
|
|
||||||
|
OR lt."ResourceName" =
|
||||||
|
p_resource_name
|
||||||
|
)
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
lt."ResourceName"
|
||||||
|
|
||||||
|
LIMIT 1
|
||||||
|
|
||||||
|
) lt_cap ON TRUE
|
||||||
|
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
|
||||||
|
f."ListFormCode" =
|
||||||
|
l."ListFormCode"
|
||||||
|
|
||||||
|
AND f."CultureName" =
|
||||||
|
l."CultureName"
|
||||||
|
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_definition_culture_name IS NULL
|
||||||
|
|
||||||
|
OR f."CultureName" =
|
||||||
|
p_definition_culture_name
|
||||||
|
)
|
||||||
|
|
||||||
|
AND
|
||||||
|
(
|
||||||
|
p_only_base_definitions = FALSE
|
||||||
|
|
||||||
|
OR
|
||||||
|
(
|
||||||
|
f."UserId" IS NULL
|
||||||
|
AND f."RoleId" IS NULL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
),
|
||||||
|
|
||||||
|
'[]'::JSONB
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AS form_json,
|
||||||
|
|
||||||
|
l."ListFormCode"
|
||||||
|
|
||||||
|
FROM list_form_source l
|
||||||
|
)
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
jsonb_build_object
|
||||||
|
(
|
||||||
|
'listForms',
|
||||||
|
|
||||||
|
COALESCE
|
||||||
|
(
|
||||||
|
jsonb_agg
|
||||||
|
(
|
||||||
|
form_json
|
||||||
|
|
||||||
|
ORDER BY
|
||||||
|
"ListFormCode"
|
||||||
|
),
|
||||||
|
|
||||||
|
'[]'::JSONB
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
INTO v_result
|
||||||
|
|
||||||
|
FROM list_forms_json;
|
||||||
|
|
||||||
|
|
||||||
|
RETURN COALESCE
|
||||||
|
(
|
||||||
|
v_result,
|
||||||
|
|
||||||
|
jsonb_build_object
|
||||||
|
(
|
||||||
|
'listForms',
|
||||||
|
'[]'::JSONB
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
@ -0,0 +1,239 @@
|
||||||
|
CREATE OR REPLACE FUNCTION dbo."Sas_H_ListFormFieldsDictionaryJson_SaveDbTableColumns"
|
||||||
|
(
|
||||||
|
p_tenant_name VARCHAR(128) DEFAULT 'Sozsoft',
|
||||||
|
p_definition_culture_name VARCHAR(10) DEFAULT 'en',
|
||||||
|
p_ui_culture_name VARCHAR(10) DEFAULT 'tr',
|
||||||
|
p_list_form_code VARCHAR(64) DEFAULT NULL,
|
||||||
|
p_only_base_definitions BOOLEAN DEFAULT TRUE,
|
||||||
|
p_resource_name VARCHAR(64) DEFAULT NULL,
|
||||||
|
p_max_forms INTEGER DEFAULT 500,
|
||||||
|
p_deactivate_previous BOOLEAN DEFAULT TRUE,
|
||||||
|
p_note VARCHAR(4000) DEFAULT NULL
|
||||||
|
)
|
||||||
|
RETURNS TABLE
|
||||||
|
(
|
||||||
|
"TenantName" VARCHAR,
|
||||||
|
"DictionaryType" VARCHAR,
|
||||||
|
"DefinitionCultureName" VARCHAR,
|
||||||
|
"UiCultureName" VARCHAR,
|
||||||
|
"ListFormCode" VARCHAR,
|
||||||
|
"OnlyBaseDefinitions" BOOLEAN,
|
||||||
|
"ResourceName" VARCHAR,
|
||||||
|
"MaxForms" INTEGER,
|
||||||
|
"CacheKey" TEXT,
|
||||||
|
"FormCount" INTEGER,
|
||||||
|
"FieldCount" INTEGER,
|
||||||
|
"JsonLength" INTEGER,
|
||||||
|
"IsActive" BOOLEAN,
|
||||||
|
"RefreshedAt" TIMESTAMP,
|
||||||
|
"SourceProcedure" VARCHAR,
|
||||||
|
"Note" VARCHAR
|
||||||
|
)
|
||||||
|
LANGUAGE plpgsql
|
||||||
|
AS $$
|
||||||
|
DECLARE
|
||||||
|
v_json_data JSONB;
|
||||||
|
v_cache_key TEXT;
|
||||||
|
v_form_count INTEGER := 0;
|
||||||
|
v_field_count INTEGER := 0;
|
||||||
|
v_json_length INTEGER := 0;
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
/*
|
||||||
|
SQL Server:
|
||||||
|
EXEC dbo.Sas_H_ListFormFieldsDictionaryJson
|
||||||
|
|
||||||
|
PostgreSQL tarafında bunun JSON / JSONB döndüren bir FUNCTION
|
||||||
|
olduğu varsayılmıştır.
|
||||||
|
*/
|
||||||
|
SELECT dbo."Sas_H_ListFormFieldsDictionaryJson"
|
||||||
|
(
|
||||||
|
p_definition_culture_name,
|
||||||
|
p_ui_culture_name,
|
||||||
|
p_list_form_code,
|
||||||
|
p_only_base_definitions,
|
||||||
|
p_resource_name
|
||||||
|
)
|
||||||
|
INTO v_json_data;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
JSON boş kontrolü
|
||||||
|
*/
|
||||||
|
IF v_json_data IS NULL THEN
|
||||||
|
RAISE EXCEPTION
|
||||||
|
'JSON veri sözlüğü boş döndü. dbo.Sas_H_ListFormFieldsDictionaryJson çıktısını kontrol edin.'
|
||||||
|
USING ERRCODE = 'P0001';
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
CacheKey oluşturulması
|
||||||
|
*/
|
||||||
|
v_cache_key :=
|
||||||
|
'ListFormJson|'
|
||||||
|
|| COALESCE(p_tenant_name, '')
|
||||||
|
|| '|'
|
||||||
|
|| COALESCE(p_definition_culture_name, '')
|
||||||
|
|| '|'
|
||||||
|
|| COALESCE(p_ui_culture_name, '')
|
||||||
|
|| '|'
|
||||||
|
|| COALESCE(p_list_form_code, '')
|
||||||
|
|| '|'
|
||||||
|
|| CASE
|
||||||
|
WHEN COALESCE(p_only_base_definitions, TRUE)
|
||||||
|
THEN '1'
|
||||||
|
ELSE '0'
|
||||||
|
END
|
||||||
|
|| '|'
|
||||||
|
|| COALESCE(p_resource_name, '')
|
||||||
|
|| '|'
|
||||||
|
|| COALESCE(p_max_forms, 500)::TEXT;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Form sayısı
|
||||||
|
|
||||||
|
JSON:
|
||||||
|
{
|
||||||
|
"listForms": [...]
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
IF jsonb_typeof(v_json_data -> 'listForms') = 'array' THEN
|
||||||
|
|
||||||
|
v_form_count :=
|
||||||
|
jsonb_array_length(v_json_data -> 'listForms');
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Toplam Field sayısı
|
||||||
|
|
||||||
|
Her listForms elemanının:
|
||||||
|
{
|
||||||
|
"fields": [...]
|
||||||
|
}
|
||||||
|
|
||||||
|
alanındaki kayıtlar sayılır.
|
||||||
|
*/
|
||||||
|
SELECT COUNT(*)::INTEGER
|
||||||
|
INTO v_field_count
|
||||||
|
FROM jsonb_array_elements(
|
||||||
|
COALESCE(
|
||||||
|
v_json_data -> 'listForms',
|
||||||
|
'[]'::JSONB
|
||||||
|
)
|
||||||
|
) AS lf
|
||||||
|
CROSS JOIN LATERAL jsonb_array_elements(
|
||||||
|
CASE
|
||||||
|
WHEN jsonb_typeof(lf -> 'fields') = 'array'
|
||||||
|
THEN lf -> 'fields'
|
||||||
|
ELSE '[]'::JSONB
|
||||||
|
END
|
||||||
|
) AS ff;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
JSON karakter uzunluğu
|
||||||
|
*/
|
||||||
|
v_json_length := LENGTH(v_json_data::TEXT);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
PostgreSQL function çağrısı kendi transaction'ı içerisinde
|
||||||
|
çalıştığı için SQL Server'daki BEGIN TRAN / COMMIT burada
|
||||||
|
ayrıca kullanılmaz.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Önceki aktif kaydı pasif yap
|
||||||
|
*/
|
||||||
|
IF p_deactivate_previous THEN
|
||||||
|
|
||||||
|
UPDATE dbo."Sas_H_DbTableColumn"
|
||||||
|
SET "IsActive" = FALSE
|
||||||
|
WHERE "DictionaryType" = 'ListFormJson'
|
||||||
|
AND "CacheKey" = v_cache_key
|
||||||
|
AND COALESCE("IsActive", FALSE) = TRUE;
|
||||||
|
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Yeni JSON kaydını ekle
|
||||||
|
*/
|
||||||
|
INSERT INTO dbo."Sas_H_DbTableColumn"
|
||||||
|
(
|
||||||
|
"TenantName",
|
||||||
|
"DictionaryType",
|
||||||
|
"DefinitionCultureName",
|
||||||
|
"UiCultureName",
|
||||||
|
"ListFormCode",
|
||||||
|
"OnlyBaseDefinitions",
|
||||||
|
"ResourceName",
|
||||||
|
"MaxForms",
|
||||||
|
"CacheKey",
|
||||||
|
"JsonData",
|
||||||
|
"FormCount",
|
||||||
|
"FieldCount",
|
||||||
|
"JsonLength",
|
||||||
|
"IsActive",
|
||||||
|
"RefreshedAt",
|
||||||
|
"SourceProcedure",
|
||||||
|
"Note"
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
COALESCE(p_tenant_name, 'Sozsoft'),
|
||||||
|
'ListFormJson',
|
||||||
|
COALESCE(p_definition_culture_name, 'en'),
|
||||||
|
COALESCE(p_ui_culture_name, 'tr'),
|
||||||
|
p_list_form_code,
|
||||||
|
COALESCE(p_only_base_definitions, TRUE),
|
||||||
|
p_resource_name,
|
||||||
|
COALESCE(p_max_forms, 500),
|
||||||
|
v_cache_key,
|
||||||
|
v_json_data,
|
||||||
|
v_form_count,
|
||||||
|
v_field_count,
|
||||||
|
v_json_length,
|
||||||
|
TRUE,
|
||||||
|
CURRENT_TIMESTAMP,
|
||||||
|
'dbo.Sas_H_ListFormFieldsDictionaryJson',
|
||||||
|
p_note
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Eklenen aktif kaydı döndür
|
||||||
|
*/
|
||||||
|
RETURN QUERY
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
T."TenantName",
|
||||||
|
T."DictionaryType",
|
||||||
|
T."DefinitionCultureName",
|
||||||
|
T."UiCultureName",
|
||||||
|
T."ListFormCode",
|
||||||
|
T."OnlyBaseDefinitions",
|
||||||
|
T."ResourceName",
|
||||||
|
T."MaxForms",
|
||||||
|
T."CacheKey",
|
||||||
|
T."FormCount",
|
||||||
|
T."FieldCount",
|
||||||
|
T."JsonLength",
|
||||||
|
T."IsActive",
|
||||||
|
T."RefreshedAt",
|
||||||
|
T."SourceProcedure",
|
||||||
|
T."Note"
|
||||||
|
FROM dbo."Sas_H_DbTableColumn" T
|
||||||
|
WHERE T."DictionaryType" = 'ListFormJson'
|
||||||
|
AND T."CacheKey" = v_cache_key
|
||||||
|
AND T."IsActive" = TRUE
|
||||||
|
ORDER BY T."RefreshedAt" DESC
|
||||||
|
LIMIT 1;
|
||||||
|
|
||||||
|
END;
|
||||||
|
$$;
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
CREATE OR REPLACE VIEW dbo."Sas_H_OrderItem_ByTenantId"
|
||||||
|
AS
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
oi."Id",
|
||||||
|
o."TenantId",
|
||||||
|
oi."ProductId",
|
||||||
|
oi."ProductName",
|
||||||
|
oi."BillingCycle",
|
||||||
|
oi."Period",
|
||||||
|
oi."Quantity",
|
||||||
|
oi."Price",
|
||||||
|
oi."VatRate",
|
||||||
|
oi."VatAmount",
|
||||||
|
oi."TotalPrice",
|
||||||
|
oi."OrderId",
|
||||||
|
o."IsActive"
|
||||||
|
|
||||||
|
FROM dbo."Sas_H_Order" o
|
||||||
|
|
||||||
|
INNER JOIN dbo."Sas_H_OrderItem" oi
|
||||||
|
ON o."Id" = oi."OrderId";
|
||||||
|
|
@ -3,6 +3,6 @@ CREATE OR ALTER VIEW [dbo].[Sas_H_OrderItem_ByTenantId]
|
||||||
AS
|
AS
|
||||||
|
|
||||||
SELECT dbo.Sas_H_OrderItem.Id, dbo.Sas_H_Order.TenantId, dbo.Sas_H_OrderItem.ProductId, dbo.Sas_H_OrderItem.ProductName, dbo.Sas_H_OrderItem.BillingCycle, dbo.Sas_H_OrderItem.Period, dbo.Sas_H_OrderItem.Quantity,
|
SELECT dbo.Sas_H_OrderItem.Id, dbo.Sas_H_Order.TenantId, dbo.Sas_H_OrderItem.ProductId, dbo.Sas_H_OrderItem.ProductName, dbo.Sas_H_OrderItem.BillingCycle, dbo.Sas_H_OrderItem.Period, dbo.Sas_H_OrderItem.Quantity,
|
||||||
dbo.Sas_H_OrderItem.Price, dbo.Sas_H_OrderItem.VatRate, dbo.Sas_H_OrderItem.VatAmount, dbo.Sas_H_OrderItem.TotalPrice, dbo.Sas_H_OrderItem.OrderId
|
dbo.Sas_H_OrderItem.Price, dbo.Sas_H_OrderItem.VatRate, dbo.Sas_H_OrderItem.VatAmount, dbo.Sas_H_OrderItem.TotalPrice, dbo.Sas_H_OrderItem.OrderId, dbo.Sas_H_Order.IsActive
|
||||||
FROM dbo.Sas_H_Order INNER JOIN
|
FROM dbo.Sas_H_Order INNER JOIN
|
||||||
dbo.Sas_H_OrderItem ON dbo.Sas_H_Order.Id = dbo.Sas_H_OrderItem.OrderId
|
dbo.Sas_H_OrderItem ON dbo.Sas_H_Order.Id = dbo.Sas_H_OrderItem.OrderId
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
IF OBJECT_ID(N'[dbo].[Sal_T_Approval]', 'U') IS NULL
|
|
||||||
BEGIN
|
|
||||||
CREATE TABLE [dbo].[Sal_T_Approval]
|
|
||||||
(
|
|
||||||
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
|
||||||
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
|
|
||||||
[CreatorId] uniqueidentifier NULL,
|
|
||||||
[LastModificationTime] datetime2 NULL,
|
|
||||||
[LastModifierId] uniqueidentifier NULL,
|
|
||||||
[IsDeleted] bit NOT NULL DEFAULT 0,
|
|
||||||
[DeletionTime] datetime2 NULL,
|
|
||||||
[DeleterId] uniqueidentifier NULL,
|
|
||||||
[TenantId] uniqueidentifier NULL,
|
|
||||||
[ApprovalUserName] nvarchar(256) NULL,
|
|
||||||
[ApprovalStatus] nvarchar(50) NULL,
|
|
||||||
[ApprovalDate] datetime NULL,
|
|
||||||
[ApprovalDescription] nvarchar(200) NULL,
|
|
||||||
[Name] nvarchar(100) NULL,
|
|
||||||
CONSTRAINT [PK_Sal_T_Approval] PRIMARY KEY NONCLUSTERED
|
|
||||||
(
|
|
||||||
[Id] ASC
|
|
||||||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
|
|
||||||
) ON [PRIMARY]
|
|
||||||
END
|
|
||||||
GO
|
|
||||||
|
|
@ -1,385 +0,0 @@
|
||||||
{
|
|
||||||
"Wizard": {
|
|
||||||
"WizardName": "Approval",
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"MenuCode": "App.Wizard.Approval",
|
|
||||||
"IsTenant": true,
|
|
||||||
"IsBranch": false,
|
|
||||||
"IsOrganizationUnit": false,
|
|
||||||
"AllowAdding": true,
|
|
||||||
"AllowUpdating": true,
|
|
||||||
"AllowDeleting": true,
|
|
||||||
"AllowDetail": false,
|
|
||||||
"ConfirmDelete": true,
|
|
||||||
"DefaultLayout": "grid",
|
|
||||||
"Grid": true,
|
|
||||||
"Pivot": true,
|
|
||||||
"Tree": true,
|
|
||||||
"Chart": true,
|
|
||||||
"Gantt": true,
|
|
||||||
"Scheduler": true,
|
|
||||||
"LanguageTextMenuEn": "Approval",
|
|
||||||
"LanguageTextMenuTr": "Approval",
|
|
||||||
"LanguageTextTitleEn": "Approval",
|
|
||||||
"LanguageTextTitleTr": "Onaylama",
|
|
||||||
"LanguageTextDescEn": "Approval",
|
|
||||||
"LanguageTextDescTr": "Onaylama",
|
|
||||||
"LanguageTextMenuParentEn": "Sales",
|
|
||||||
"LanguageTextMenuParentTr": "Sat\u0131\u015F",
|
|
||||||
"PermissionGroupName": "App.Wizard.Sales",
|
|
||||||
"MenuParentCode": "App.Wizard.Sales",
|
|
||||||
"MenuParentIcon": "FcAssistant",
|
|
||||||
"MenuIcon": "FcAndroidOs",
|
|
||||||
"DataSourceCode": "Default",
|
|
||||||
"DataSourceConnectionString": "",
|
|
||||||
"SelectCommandType": 1,
|
|
||||||
"SelectCommand": "Sal_T_Approval",
|
|
||||||
"KeyFieldName": "Id",
|
|
||||||
"KeyFieldDbSourceType": 9,
|
|
||||||
"TreeKeyExpr": "",
|
|
||||||
"TreeParentIdExpr": "",
|
|
||||||
"TreeAutoExpandAll": false,
|
|
||||||
"GanttKeyExpr": "",
|
|
||||||
"GanttParentIdExpr": "",
|
|
||||||
"GanttAutoExpandAll": false,
|
|
||||||
"GanttTitleExpr": "",
|
|
||||||
"GanttStartExpr": "",
|
|
||||||
"GanttEndExpr": "",
|
|
||||||
"GanttProgressExpr": "",
|
|
||||||
"SchedulerTextExpr": "",
|
|
||||||
"SchedulerStartDateExpr": "",
|
|
||||||
"SchedulerEndDateExpr": "",
|
|
||||||
"Groups": [
|
|
||||||
{
|
|
||||||
"Caption": "",
|
|
||||||
"ColCount": 1,
|
|
||||||
"Items": [
|
|
||||||
{
|
|
||||||
"DataField": "Id",
|
|
||||||
"CaptionName": "App.Listform.ListformField.Id",
|
|
||||||
"EditorType": "dxTextBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": true,
|
|
||||||
"IncludeInEditingForm": true,
|
|
||||||
"DbSourceType": 9,
|
|
||||||
"TurkishCaption": "Id",
|
|
||||||
"EnglishCaption": "Id",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DataField": "Name",
|
|
||||||
"CaptionName": "App.Listform.ListformField.Name",
|
|
||||||
"EditorType": "dxTextBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": true,
|
|
||||||
"IncludeInEditingForm": true,
|
|
||||||
"DbSourceType": 16,
|
|
||||||
"TurkishCaption": "Name",
|
|
||||||
"EnglishCaption": "Name",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DataField": "ApprovalUserName",
|
|
||||||
"CaptionName": "App.Listform.ListformField.ApprovalUserName",
|
|
||||||
"EditorType": "dxTextBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": false,
|
|
||||||
"IncludeInEditingForm": false,
|
|
||||||
"DbSourceType": 16,
|
|
||||||
"TurkishCaption": "Approval User Name",
|
|
||||||
"EnglishCaption": "Approval User Name",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DataField": "ApprovalStatus",
|
|
||||||
"CaptionName": "App.Listform.ListformField.ApprovalStatus",
|
|
||||||
"EditorType": "dxTextBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": false,
|
|
||||||
"IncludeInEditingForm": false,
|
|
||||||
"DbSourceType": 16,
|
|
||||||
"TurkishCaption": "Approval Status",
|
|
||||||
"EnglishCaption": "Approval Status",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DataField": "ApprovalDate",
|
|
||||||
"CaptionName": "App.Listform.ListformField.ApprovalDate",
|
|
||||||
"EditorType": "dxDateBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": false,
|
|
||||||
"IncludeInEditingForm": false,
|
|
||||||
"DbSourceType": 6,
|
|
||||||
"TurkishCaption": "Approval Date",
|
|
||||||
"EnglishCaption": "Approval Date",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"DataField": "ApprovalDescription",
|
|
||||||
"CaptionName": "App.Listform.ListformField.ApprovalDescription",
|
|
||||||
"EditorType": "dxTextBox",
|
|
||||||
"EditorOptions": "",
|
|
||||||
"EditorScript": "",
|
|
||||||
"ColSpan": 1,
|
|
||||||
"IsRequired": false,
|
|
||||||
"IncludeInEditingForm": false,
|
|
||||||
"DbSourceType": 16,
|
|
||||||
"TurkishCaption": "Approval Description",
|
|
||||||
"EnglishCaption": "Approval Description",
|
|
||||||
"LookupDataSourceType": 1,
|
|
||||||
"ValueExpr": "Key",
|
|
||||||
"DisplayExpr": "Name",
|
|
||||||
"LookupQuery": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"SubForms": [],
|
|
||||||
"Widgets": [],
|
|
||||||
"Workflow": {
|
|
||||||
"ApprovalUserFieldName": "ApprovalUserName",
|
|
||||||
"IsFilterUserName": true,
|
|
||||||
"ApprovalDateFieldName": "ApprovalDate",
|
|
||||||
"ApprovalStatusFieldName": "ApprovalStatus",
|
|
||||||
"ApprovalDescriptionFieldName": "ApprovalDescription",
|
|
||||||
"Criteria": [
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Start",
|
|
||||||
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "",
|
|
||||||
"NextOnStart": "N002",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 34,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Approval",
|
|
||||||
"Title": "Onay1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "admin@sozsoft.com",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "N003",
|
|
||||||
"NextOnReject": "N004",
|
|
||||||
"PositionX": 323,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N002"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Approval",
|
|
||||||
"Title": "Onay2",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "demo@sozsoft.com",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "N004",
|
|
||||||
"NextOnReject": "N004",
|
|
||||||
"PositionX": 586,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N003"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Inform",
|
|
||||||
"Title": "Bilgilendirme1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "system@sozsoft.com",
|
|
||||||
"NextOnStart": "N005",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 458,
|
|
||||||
"PositionY": 411,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N004"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "End",
|
|
||||||
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 792,
|
|
||||||
"PositionY": 412,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N005"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"WorkflowCriteria": [
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Start",
|
|
||||||
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "",
|
|
||||||
"NextOnStart": "N002",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 34,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Approval",
|
|
||||||
"Title": "Onay1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "admin@sozsoft.com",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "N003",
|
|
||||||
"NextOnReject": "N004",
|
|
||||||
"PositionX": 323,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N002"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Approval",
|
|
||||||
"Title": "Onay2",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "demo@sozsoft.com",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "N004",
|
|
||||||
"NextOnReject": "N004",
|
|
||||||
"PositionX": 586,
|
|
||||||
"PositionY": 104,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N003"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "Inform",
|
|
||||||
"Title": "Bilgilendirme1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "system@sozsoft.com",
|
|
||||||
"NextOnStart": "N005",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 458,
|
|
||||||
"PositionY": 411,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N004"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ListFormCode": "App.Wizard.Approval",
|
|
||||||
"Kind": "End",
|
|
||||||
"Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir1",
|
|
||||||
"CompareColumn": "Price",
|
|
||||||
"CompareOperator": "\u003E",
|
|
||||||
"CompareValue": 5000,
|
|
||||||
"Approver": "",
|
|
||||||
"NextOnStart": "",
|
|
||||||
"NextOnTrue": "",
|
|
||||||
"NextOnFalse": "",
|
|
||||||
"NextOnApprove": "",
|
|
||||||
"NextOnReject": "",
|
|
||||||
"PositionX": 792,
|
|
||||||
"PositionY": 412,
|
|
||||||
"CompareOutcomes": [],
|
|
||||||
"Id": "N005"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"IsDeletedField": true,
|
|
||||||
"IsCreatedField": true,
|
|
||||||
"InsertedRecords": {
|
|
||||||
"LanguageKeys": [
|
|
||||||
"App.Wizard.Approval",
|
|
||||||
"App.Wizard.Approval.Title",
|
|
||||||
"App.Wizard.Approval.Desc",
|
|
||||||
"App.Listform.ListformField.ApprovalUserName",
|
|
||||||
"App.Listform.ListformField.ApprovalStatus",
|
|
||||||
"App.Listform.ListformField.ApprovalDate",
|
|
||||||
"App.Listform.ListformField.ApprovalDescription"
|
|
||||||
],
|
|
||||||
"PermissionGroupNames": [
|
|
||||||
"App.Wizard.Sales"
|
|
||||||
],
|
|
||||||
"PermissionNames": [
|
|
||||||
"App.Wizard.Approval",
|
|
||||||
"App.Wizard.Approval.Create",
|
|
||||||
"App.Wizard.Approval.Update",
|
|
||||||
"App.Wizard.Approval.Delete",
|
|
||||||
"App.Wizard.Approval.Export",
|
|
||||||
"App.Wizard.Approval.Import",
|
|
||||||
"App.Wizard.Approval.Note"
|
|
||||||
],
|
|
||||||
"MenuCodes": [
|
|
||||||
"App.Wizard.Approval"
|
|
||||||
],
|
|
||||||
"DataSourceCodes": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue