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(),
|
||||
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()
|
||||
{
|
||||
ListFormCode = listForm.ListFormCode,
|
||||
|
|
@ -5558,7 +5574,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
|
|||
FieldName = "TenantId",
|
||||
CaptionName = "App.Listform.ListformField.TenantId",
|
||||
Width = 0,
|
||||
ListOrderNo = 10,
|
||||
ListOrderNo = 11,
|
||||
Visible = false,
|
||||
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
|
||||
|
||||
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
|
||||
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