Lisans bilgileri takip ekranı

This commit is contained in:
Sedat Öztürk 2026-07-14 23:25:04 +03:00
parent 248af7ca1a
commit 6174253a40
16 changed files with 583 additions and 368 deletions

View file

@ -185,6 +185,7 @@ public static class LookupQueryValues
$"LEFT OUTER JOIN \"{FullNameTable(TableNameEnum.LanguageText)}\" " + $"LEFT OUTER JOIN \"{FullNameTable(TableNameEnum.LanguageText)}\" " +
$"ON \"{FullNameTable(TableNameEnum.Product)}\".\"Name\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Key\" " + $"ON \"{FullNameTable(TableNameEnum.Product)}\".\"Name\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Key\" " +
$"WHERE \"{FullNameTable(TableNameEnum.Product)}\".\"IsDeleted\" = 'false' " + $"WHERE \"{FullNameTable(TableNameEnum.Product)}\".\"IsDeleted\" = 'false' " +
$"AND \"{FullNameTable(TableNameEnum.LanguageText)}\".\"CultureName\" = 'tr' " +
$"ORDER BY \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\";"; $"ORDER BY \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\";";
public static string MenuCodeValues = public static string MenuCodeValues =

View file

@ -1506,6 +1506,18 @@
"en": "Settings", "en": "Settings",
"tr": "Ayarlar" "tr": "Ayarlar"
}, },
{
"resourceName": "Platform",
"key": "App.Licence",
"en": "Licence",
"tr": "Lisans"
},
{
"resourceName": "Platform",
"key": "App.LicenceItem",
"en": "Licence Items",
"tr": "Lisans Kalemleri"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Settings", "key": "App.Settings",

View file

@ -5124,51 +5124,38 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
GroupPanelJson = DefaultGroupPanelJson(), GroupPanelJson = DefaultGroupPanelJson(),
SelectionJson = DefaultSelectionSingleJson, SelectionJson = DefaultSelectionSingleJson,
ColumnOptionJson = DefaultColumnOptionJson(), ColumnOptionJson = DefaultColumnOptionJson(),
DeleteCommand = DefaultDeleteCommand("AbpTenants"),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson(),
PagerOptionJson = DefaultPagerOptionJson, PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 900, 500, false, false, false, false, false, false),
PermissionJson = DefaultPermissionJson(listFormName), PermissionJson = DefaultPermissionJson(listFormName),
EditingOptionJson = DefaultEditingOptionJson(listFormName, 900, 500, false, false, false, false, false, false),
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>() EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{ {
new() { Order=1, ColCount=4, ColSpan=1, ItemType="group", Items = new() { Order=1, ColCount=4, ColSpan=1, ItemType="group", Items =
[ [
new EditingFormItemDto { Order=1, DataField = "OrganizationName", ColSpan=4, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=1, DataField = "OrganizationName", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=2, DataField = "Name", ColSpan=1, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=2, DataField = "Name", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=3, DataField = "Founder", ColSpan=1, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=3, DataField = "Founder", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=4, DataField = "VknTckn", ColSpan=1, EditorType2=EditorTypes.dxNumberBox }, new EditingFormItemDto { Order=4, DataField = "VknTckn", ColSpan=1, EditorType2=EditorTypes.dxNumberBox },
new EditingFormItemDto { Order=5, DataField = "TaxOffice", ColSpan=1, EditorType2=EditorTypes.dxTextBox }, new EditingFormItemDto { Order=5, DataField = "TaxOffice", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=6, DataField = "MobileNumber", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions }, new EditingFormItemDto { Order=6, DataField = "PhoneNumber", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions },
new EditingFormItemDto { Order=7, DataField = "PhoneNumber", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions }, new EditingFormItemDto { Order=7, DataField = "Email", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=8, DataField = "FaxNumber", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions }, new EditingFormItemDto { Order=8, DataField = "Website", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=9, DataField = "MenuGroup", ColSpan=1, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=10, DataField = "Email", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=11, DataField = "Website", ColSpan=1, EditorType2=EditorTypes.dxTextBox },
new EditingFormItemDto { Order=12, DataField = "IsActive", ColSpan=1, EditorType2=EditorTypes.dxCheckBox },
new EditingFormItemDto { Order=13, DataField = "Country", ColSpan=1, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=14, DataField = "City", ColSpan=1, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=15, DataField = "District", ColSpan=1, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=16, DataField = "Township", ColSpan=1, EditorType2=EditorTypes.dxSelectBox, EditorOptions=EditorOptionValues.ShowClearButton, EditorScript = PlatformConsts.EditorScriptValues.SourceFieldItemWritetoDestination("Township", "Group", "PostalCode") },
new EditingFormItemDto { Order=17, DataField = "PostalCode", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.ShowClearButton },
new EditingFormItemDto { Order=18, DataField = "Address1", ColSpan=4, EditorType2=EditorTypes.dxTextArea },
new EditingFormItemDto { Order=19, DataField = "Address2", ColSpan=4, EditorType2=EditorTypes.dxTextArea },
] ]
} }
}), }),
// SubFormsJson = JsonSerializer.Serialize(new List<dynamic>() { SubFormsJson = JsonSerializer.Serialize(new List<dynamic>() {
// new { new {
// TabType = ListFormTabTypeEnum.List, TabType = ListFormTabTypeEnum.List,
// TabTitle = AppCodes.Branches, TabTitle = AppCodes.LicenceItem,
// Code = AppCodes.Branches, Code = AppCodes.LicenceItem,
// Relation = new List<dynamic>() { Relation = new List<dynamic>() {
// new { new {
// ParentFieldName = "Id", ParentFieldName = "Id",
// DbType = DbType.Guid, DbType = DbType.Guid,
// ChildFieldName = "TenantId" ChildFieldName = "TenantId"
// } }
// } }
// }} }}
// ) )
}, autoSave: true }, autoSave: true
); );
@ -5275,163 +5262,6 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
new ListFormField new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Country",
CaptionName = "App.Listform.ListformField.Country",
Width = 0,
ListOrderNo = 7,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = LookupQueryValues.CountryValues,
CascadeEmptyFields = "City,District,Township"
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "City",
CaptionName = "App.Listform.ListformField.City",
Width = 0,
ListOrderNo = 8,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = LookupQueryValues.CityValues,
CascadeRelationField = "Country",
CascadeFilterOperator="=",
CascadeParentFields = "Country",
CascadeEmptyFields = "District,Township"
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "District",
CaptionName = "App.Listform.ListformField.District",
Width = 0,
ListOrderNo = 9,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = LookupQueryValues.DistrictValues,
CascadeRelationField = "City",
CascadeFilterOperator="=",
CascadeParentFields = "Country,City",
CascadeEmptyFields = "Township",
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Township",
CaptionName = "App.Listform.ListformField.Township",
Width = 0,
ListOrderNo = 10,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = LookupQueryValues.TownshipValues,
CascadeRelationField = "District",
CascadeFilterOperator="=",
CascadeParentFields = "Country,City,District"
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Address1",
CaptionName = "App.Listform.ListformField.Address1",
Width = 0,
ListOrderNo = 11,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Address2",
CaptionName = "App.Listform.ListformField.Address2",
Width = 0,
ListOrderNo = 12,
Visible = true,
IsActive = true,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "PostalCode",
CaptionName = "App.Listform.ListformField.PostalCode",
Width = 0,
ListOrderNo = 13,
Visible = true,
IsActive = true,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{ {
ListFormCode = listForm.ListFormCode, ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
@ -5439,7 +5269,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "Email", FieldName = "Email",
CaptionName = "App.Listform.ListformField.Email", CaptionName = "App.Listform.ListformField.Email",
Width = 0, Width = 0,
ListOrderNo = 14, ListOrderNo = 7,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
AllowSearch = true, AllowSearch = true,
@ -5456,7 +5286,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "Website", FieldName = "Website",
CaptionName = "App.Listform.ListformField.Website", CaptionName = "App.Listform.ListformField.Website",
Width = 0, Width = 0,
ListOrderNo = 15, ListOrderNo = 8,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
AllowSearch = true, AllowSearch = true,
@ -5473,7 +5303,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
FieldName = "PhoneNumber", FieldName = "PhoneNumber",
CaptionName = "Abp.Identity.User.UserInformation.PhoneNumber", CaptionName = "Abp.Identity.User.UserInformation.PhoneNumber",
Width = 0, Width = 0,
ListOrderNo = 16, ListOrderNo = 9,
Visible = true, Visible = true,
IsActive = true, IsActive = true,
AllowSearch = true, AllowSearch = true,
@ -5483,77 +5313,260 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PermissionJson = DefaultFieldPermissionJson(listForm.Name), PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson PivotSettingsJson = DefaultPivotSettingsJson
}, },
new ListFormField ], autoSave: true);
{ #endregion
ListFormCode = listForm.ListFormCode, }
CultureName = LanguageCodes.En, #endregion
SourceDbType = DbType.String,
FieldName = "MobileNumber", #region Licence Item
CaptionName = "App.Listform.ListformField.MobileNumber", listFormName = AppCodes.LicenceItem;
Width = 0, if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
ListOrderNo = 17, {
Visible = true, var listForm = await _listFormRepository.InsertAsync(
IsActive = true, new ListForm()
AllowSearch = true, {
EditorOptions = EditorOptionValues.PhoneEditorOptions, ListFormType = ListFormTypeEnum.List,
ColumnCustomizationJson = DefaultColumnCustomizationJson, PageSize = 10,
PermissionJson = DefaultFieldPermissionJson(listForm.Name), ExportJson = DefaultExportJson,
PivotSettingsJson = DefaultPivotSettingsJson IsSubForm = true,
}, ShowNote = false,
new ListFormField LayoutJson = DefaultLayoutJson(),
{ CultureName = LanguageCodes.En,
ListFormCode = listForm.ListFormCode, ListFormCode = listFormName,
CultureName = LanguageCodes.En, Name = listFormName,
SourceDbType = DbType.Int64, Title = listFormName,
FieldName = "FaxNumber", DataSourceCode = SeedConsts.DataSources.DefaultCode,
CaptionName = "App.Listform.ListformField.FaxNumber", IsTenant = false,
Width = 0, IsBranch = false,
ListOrderNo = 18, IsOrganizationUnit = false,
Visible = true, Description = listFormName,
IsActive = true, SelectCommandType = SelectCommandTypeEnum.View,
AllowSearch = true, SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.OrderItem_ByTenantId)),
EditorOptions = EditorOptionValues.PhoneEditorOptions, KeyFieldName = "Id",
ColumnCustomizationJson = DefaultColumnCustomizationJson, KeyFieldDbSourceType = DbType.Guid,
PermissionJson = DefaultFieldPermissionJson(listForm.Name), SortMode = GridOptions.SortModeSingle,
PivotSettingsJson = DefaultPivotSettingsJson FilterRowJson = DefaultFilterRowJson(),
}, HeaderFilterJson = DefaultHeaderFilterJson(),
new ListFormField SearchPanelJson = DefaultSearchPanelJson(),
{ GroupPanelJson = DefaultGroupPanelJson(),
ListFormCode = listForm.ListFormCode, SelectionJson = DefaultSelectionSingleJson,
CultureName = LanguageCodes.En, ColumnOptionJson = DefaultColumnOptionJson(),
SourceDbType = DbType.Boolean, PermissionJson = DefaultPermissionJson(listFormName),
FieldName = "IsActive", PagerOptionJson = DefaultPagerOptionJson,
CaptionName = "App.Listform.ListformField.IsActive", EditingOptionJson = DefaultEditingOptionJson(listFormName, 600, 450, false, false, false, false, false),
Width = 0, }, autoSave: true
ListOrderNo = 19, );
Visible = true,
IsActive = true, #region Licence Item Fields
ColumnCustomizationJson = DefaultColumnCustomizationJson, await _listFormFieldRepository.InsertManyAsync([
PermissionJson = DefaultFieldPermissionJson(listForm.Name), new ListFormField
PivotSettingsJson = DefaultPivotSettingsJson {
}, ListFormCode = listForm.ListFormCode,
new ListFormField CultureName = LanguageCodes.En,
{ SourceDbType = DbType.Guid,
ListFormCode = listForm.ListFormCode, FieldName = "Id",
CultureName = LanguageCodes.En, CaptionName = "App.Listform.ListformField.Id",
SourceDbType = DbType.String, Width = 0,
FieldName = "MenuGroup", ListOrderNo = 1,
CaptionName = "App.Listform.ListformField.MenuGroup", Visible = false,
Width = 0, IsActive = true,
ListOrderNo = 20,
Visible = true, SortIndex = 0,
IsActive = true, ValidationRuleJson = DefaultValidationRuleRequiredJson,
LookupJson = JsonSerializer.Serialize(new LookupDto { ColumnCustomizationJson = DefaultColumnCustomizationJson,
DataSourceType = UiLookupDataSourceTypeEnum.Query, PermissionJson = DefaultFieldPermissionJson(listForm.Name),
DisplayExpr = "name", PivotSettingsJson = DefaultPivotSettingsJson
ValueExpr = "key", },
LookupQuery = LookupQueryValues.MenuGroupValues, new ListFormField
}), {
ValidationRuleJson = DefaultValidationRuleRequiredJson, ListFormCode = listForm.ListFormCode,
ColumnCustomizationJson = DefaultColumnCustomizationJson, CultureName = LanguageCodes.En,
PermissionJson = DefaultFieldPermissionJson(listForm.Name), SourceDbType = DbType.Guid,
PivotSettingsJson = DefaultPivotSettingsJson FieldName = "ProductId",
}, CaptionName = "App.Listform.ListformField.ProductId",
Width = 0,
ListOrderNo = 2,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto {
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "name",
ValueExpr = "key",
LookupQuery = LookupQueryValues.ProductValues,
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "BillingCycle",
CaptionName = "App.Listform.ListformField.BillingCycle",
Width = 0,
ListOrderNo = 3,
Visible = true,
IsActive = true,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto {
DataSourceType = UiLookupDataSourceTypeEnum.StaticData,
DisplayExpr = "name",
ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="yearly", Name="Yearly" },
new () { Key="monthly", Name="Monthly" },
}),
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int32,
FieldName = "Quantity",
CaptionName = "App.Listform.ListformField.Quantity",
Alignment = "right",
Width = 0,
ListOrderNo = 4,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions=EditorOptionValues.NumberStandartFormat()
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "Price",
CaptionName = "App.Listform.ListformField.Price",
Alignment = "right",
Width = 0,
ListOrderNo = 5,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions=EditorOptionValues.NumberStandartFormat()
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int32,
FieldName = "Period",
CaptionName = "App.Listform.ListformField.Period",
Alignment = "right",
Width = 0,
ListOrderNo = 6,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions=EditorOptionValues.NumberStandartFormat()
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "VatRate",
CaptionName = "App.Listform.ListformField.VatRate",
Alignment = "right",
Width = 0,
ListOrderNo = 7,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions=EditorOptionValues.NumberStandartFormat()
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "VatAmount",
CaptionName = "App.Listform.ListformField.VatAmount",
Alignment = "right",
Width = 0,
ListOrderNo = 8,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions = EditorOptionValues.NumberStandartFormat(),
TotalSummaryJson = DefaultColumnTotalSummaryJson("VatAmount")
},
new ListFormField
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "TotalPrice",
CaptionName = "App.Listform.ListformField.TotalPrice",
Alignment = "right",
Width = 0,
ListOrderNo = 9,
Visible = true,
IsActive = true,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
EditorOptions=EditorOptionValues.NumberStandartFormat(),
TotalSummaryJson = DefaultColumnTotalSummaryJson("TotalPrice")
},
new()
{
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "TenantId",
CaptionName = "App.Listform.ListformField.TenantId",
Width = 0,
ListOrderNo = 10,
Visible = false,
IsActive = true,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson,
}
], autoSave: true); ], autoSave: true);
#endregion #endregion
} }

View file

@ -1083,11 +1083,21 @@
"RequiredPermissionName": "App.Definitions.OrgChart", "RequiredPermissionName": "App.Definitions.OrgChart",
"IsDisabled": false "IsDisabled": false
}, },
{
"ParentCode": "App.Administration",
"Code": "App.Licence",
"DisplayName": "App.Licence",
"Order": 2,
"Url": "/admin/form/App.Licence",
"Icon": "FcRules",
"RequiredPermissionName": "App.Licence",
"IsDisabled": false
},
{ {
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Setting", "Code": "App.Setting",
"DisplayName": "App.Setting", "DisplayName": "App.Setting",
"Order": 2, "Order": 3,
"Url": "/admin/settings", "Url": "/admin/settings",
"Icon": "FcSettings", "Icon": "FcSettings",
"RequiredPermissionName": "App.Setting", "RequiredPermissionName": "App.Setting",
@ -1097,7 +1107,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Administration.Intranet", "Code": "App.Administration.Intranet",
"DisplayName": "App.Intranet", "DisplayName": "App.Intranet",
"Order": 3, "Order": 4,
"Url": null, "Url": null,
"Icon": "FcConferenceCall", "Icon": "FcConferenceCall",
"RequiredPermissionName": null, "RequiredPermissionName": null,
@ -1167,7 +1177,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Administration.Restrictions", "Code": "App.Administration.Restrictions",
"DisplayName": "App.Restrictions", "DisplayName": "App.Restrictions",
"Order": 4, "Order": 5,
"Url": null, "Url": null,
"Icon": "FaLock", "Icon": "FaLock",
"RequiredPermissionName": null, "RequiredPermissionName": null,
@ -1197,7 +1207,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "Abp.Identity", "Code": "Abp.Identity",
"DisplayName": "Abp.Identity", "DisplayName": "Abp.Identity",
"Order": 5, "Order": 6,
"Url": null, "Url": null,
"Icon": "FcConferenceCall", "Icon": "FcConferenceCall",
"RequiredPermissionName": null, "RequiredPermissionName": null,
@ -1287,7 +1297,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Reports.Management", "Code": "App.Reports.Management",
"DisplayName": "App.Reports.Management", "DisplayName": "App.Reports.Management",
"Order": 6, "Order": 7,
"Url": null, "Url": null,
"Icon": "FcDocument", "Icon": "FcDocument",
"RequiredPermissionName": null, "RequiredPermissionName": null,
@ -1317,7 +1327,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Videoroom.Dashboard", "Code": "App.Videoroom.Dashboard",
"DisplayName": "App.Videoroom.Dashboard", "DisplayName": "App.Videoroom.Dashboard",
"Order": 7, "Order": 8,
"Url": "/admin/videoroom/dashboard", "Url": "/admin/videoroom/dashboard",
"Icon": "FcVideoCall", "Icon": "FcVideoCall",
"RequiredPermissionName": "App.Videoroom.Dashboard", "RequiredPermissionName": "App.Videoroom.Dashboard",
@ -1327,7 +1337,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Files", "Code": "App.Files",
"DisplayName": "App.Files", "DisplayName": "App.Files",
"Order": 8, "Order": 9,
"Url": "/admin/files", "Url": "/admin/files",
"Icon": "FcFolder", "Icon": "FcFolder",
"RequiredPermissionName": "App.Files", "RequiredPermissionName": "App.Files",
@ -1337,7 +1347,7 @@
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Forum", "Code": "App.Forum",
"DisplayName": "App.Forum", "DisplayName": "App.Forum",
"Order": 9, "Order": 10,
"Url": "/admin/forum", "Url": "/admin/forum",
"Icon": "FcLink", "Icon": "FcLink",
"RequiredPermissionName": "App.ForumManagement.Publish", "RequiredPermissionName": "App.ForumManagement.Publish",

View file

@ -4175,7 +4175,7 @@
"DisplayName": "App.Intranet.Survey", "DisplayName": "App.Intranet.Survey",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4184,7 +4184,7 @@
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4193,7 +4193,7 @@
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4202,7 +4202,7 @@
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4211,7 +4211,7 @@
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4220,7 +4220,7 @@
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4229,7 +4229,7 @@
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4238,7 +4238,7 @@
"DisplayName": "Widget", "DisplayName": "Widget",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4247,7 +4247,7 @@
"DisplayName": "App.Intranet.SurveyQuestion", "DisplayName": "App.Intranet.SurveyQuestion",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4256,7 +4256,7 @@
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4265,7 +4265,7 @@
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4274,7 +4274,7 @@
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4283,7 +4283,7 @@
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4292,7 +4292,7 @@
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4301,7 +4301,7 @@
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4310,7 +4310,7 @@
"DisplayName": "App.Intranet.SurveyQuestionOption", "DisplayName": "App.Intranet.SurveyQuestionOption",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4319,7 +4319,7 @@
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4328,7 +4328,7 @@
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4337,7 +4337,7 @@
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4346,7 +4346,7 @@
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4355,7 +4355,7 @@
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4364,7 +4364,7 @@
"DisplayName": "App.Intranet.SurveyResponse", "DisplayName": "App.Intranet.SurveyResponse",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4373,7 +4373,7 @@
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4382,7 +4382,7 @@
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4391,7 +4391,7 @@
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4400,7 +4400,7 @@
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4409,7 +4409,7 @@
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4418,7 +4418,7 @@
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4427,7 +4427,7 @@
"DisplayName": "App.Intranet.SurveyAnswer", "DisplayName": "App.Intranet.SurveyAnswer",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4436,7 +4436,7 @@
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4445,7 +4445,7 @@
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4454,7 +4454,7 @@
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4463,7 +4463,7 @@
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4472,7 +4472,7 @@
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4480,8 +4480,8 @@
"ParentName": null, "ParentName": null,
"DisplayName": "App.Videoroom", "DisplayName": "App.Videoroom",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 2, "MultiTenancySide": 3,
"MenuGroup": "Kurs" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4489,8 +4489,8 @@
"ParentName": "App.Videoroom", "ParentName": "App.Videoroom",
"DisplayName": "App.Videoroom.Dashboard", "DisplayName": "App.Videoroom.Dashboard",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 2, "MultiTenancySide": 3,
"MenuGroup": "Kurs" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4498,8 +4498,8 @@
"ParentName": "App.Videoroom", "ParentName": "App.Videoroom",
"DisplayName": "App.Videoroom.List", "DisplayName": "App.Videoroom.List",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 2, "MultiTenancySide": 3,
"MenuGroup": "Kurs" "MenuGroup": "Erp|Kurs"
}, },
{ {
"GroupName": "App.Administration", "GroupName": "App.Administration",
@ -4507,8 +4507,116 @@
"ParentName": "App.Videoroom", "ParentName": "App.Videoroom",
"DisplayName": "App.Videoroom.RoomDetail", "DisplayName": "App.Videoroom.RoomDetail",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 2, "MultiTenancySide": 3,
"MenuGroup": "Kurs" "MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence",
"ParentName": null,
"DisplayName": "App.Licence",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence.Create",
"ParentName": "App.Licence",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence.Update",
"ParentName": "App.Licence",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence.Delete",
"ParentName": "App.Licence",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence.Export",
"ParentName": "App.Licence",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.Licence.Import",
"ParentName": "App.Licence",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem",
"ParentName": null,
"DisplayName": "App.LicenceItem",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem.Create",
"ParentName": "App.LicenceItem",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem.Update",
"ParentName": "App.LicenceItem",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem.Delete",
"ParentName": "App.LicenceItem",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem.Export",
"ParentName": "App.LicenceItem",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
},
{
"GroupName": "App.Administration",
"Name": "App.LicenceItem.Import",
"ParentName": "App.LicenceItem",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp|Kurs"
} }
] ]
} }

View file

@ -0,0 +1,8 @@
-- Create View
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
FROM dbo.Sas_H_Order INNER JOIN
dbo.Sas_H_OrderItem ON dbo.Sas_H_Order.Id = dbo.Sas_H_OrderItem.OrderId

View file

@ -63,6 +63,7 @@ public enum TableNameEnum
InstallmentOption, InstallmentOption,
Order, Order,
OrderItem, OrderItem,
OrderItem_ByTenantId,
BlogCategory, BlogCategory,
BlogPost, BlogPost,
Demo, Demo,
@ -94,5 +95,5 @@ public enum TableNameEnum
VideoroomAttandance, VideoroomAttandance,
VideoroomChat, VideoroomChat,
Sequence, Sequence,
DbTableColumn DbTableColumn,
} }

View file

@ -59,6 +59,7 @@ public static class TableNameResolver
{ nameof(TableNameEnum.InstallmentOption), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.InstallmentOption), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Order), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.Order), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.OrderItem), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.OrderItem), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.OrderItem_ByTenantId), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BlogCategory), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.BlogCategory), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.BlogPost), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.BlogPost), (TablePrefix.PlatformByName, MenuPrefix.Saas) },
{ nameof(TableNameEnum.Demo), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.Demo), (TablePrefix.PlatformByName, MenuPrefix.Saas) },

View file

@ -417,6 +417,7 @@ public static class SeedConsts
public const string Jobs = Default + ".Jobs"; public const string Jobs = Default + ".Jobs";
} }
public const string Licence = Prefix.App + ".Licence"; public const string Licence = Prefix.App + ".Licence";
public const string LicenceItem = Prefix.App + ".LicenceItem";
//Web Site //Web Site
public const string Home = Prefix.App + ".Home"; public const string Home = Prefix.App + ".Home";

View file

@ -52,7 +52,9 @@ public class QueryHelper
case DbType.String: case DbType.String:
case DbType.AnsiString: case DbType.AnsiString:
var strValues = values.Select(a => a?.ToString()).ToArray(); var strValues = values.Select(a => a?.ToString()).ToArray();
value = string.Join(PlatformConsts.MultiValueDelimiter, strValues); value = isArray
? string.Join(PlatformConsts.MultiValueDelimiter, strValues)
: strValues[0];
break; break;
case DbType.Date: case DbType.Date:
case DbType.DateTime: case DbType.DateTime:

View file

@ -193,12 +193,8 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
const [foundTenantName, setFoundTenantName] = useState('') const [foundTenantName, setFoundTenantName] = useState('')
const navigate = useNavigate() const navigate = useNavigate()
const { translate } = useLocalization() const { translate } = useLocalization()
const { tenantData, tenantFormDraft } = useStoreState( const { tenantData, tenantFormDraft } = useStoreState((state) => state.client.order)
(state) => state.client.order, const { setTenantFormDraft, clearTenant } = useStoreActions((actions) => actions.client.order)
)
const { setTenantFormDraft, clearTenant } = useStoreActions(
(actions) => actions.client.order,
)
const hasRestoredTenantData = useRef(false) const hasRestoredTenantData = useRef(false)
useEffect(() => { useEffect(() => {
@ -681,7 +677,9 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaPhone className="w-4 h-4 text-gray-500" /> <FaPhone className="w-4 h-4 text-gray-500" />
<span className="font-medium">{translate('::Abp.Identity.User.UserInformation.PhoneNumber')}:</span> <span className="font-medium">
{translate('::Abp.Identity.User.UserInformation.PhoneNumber')}:
</span>
<span>{formData.phoneNumber}</span> <span>{formData.phoneNumber}</span>
</div> </div>
@ -999,41 +997,6 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
</div> </div>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxOffice')}
</label>
<div className="relative">
<FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input
type="text"
required
placeholder="Sarıgazi"
value={formData.taxOffice}
onChange={(e) => handleInputChange('taxOffice', e.target.value)}
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxNumber')}
</label>
<div className="relative">
<FaDollarSign className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input
type="text"
required
placeholder="1234567890"
value={formData.vknTckn}
onChange={(e) => handleInputChange('vknTckn', e.target.value)}
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
</div>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
@ -1094,6 +1057,41 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
</div> </div>
</div> </div>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxOffice')}
</label>
<div className="relative">
<FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input
type="text"
required
placeholder="Sarıgazi"
value={formData.taxOffice}
onChange={(e) => handleInputChange('taxOffice', e.target.value)}
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxNumber')}
</label>
<div className="relative">
<FaDollarSign className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input
type="text"
required
placeholder="1234567890"
value={formData.vknTckn}
onChange={(e) => handleInputChange('vknTckn', e.target.value)}
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
</div>
</div> </div>
)} )}

View file

@ -84,7 +84,7 @@ const CreateTenantFromOrderDialog = ({
toast.push( toast.push(
<Notification type="success" duration={2500}> <Notification type="success" duration={2500}>
{translate('::App.Platform.SaveSuccess') || 'Tenant kaydedildi'} {translate('::App.Platform.Success') || 'Tenant kaydedildi'}
</Notification>, </Notification>,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )

View file

@ -2,7 +2,7 @@ import { Container, Loading } from '@/components/shared'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import type { DataType } from 'devextreme/common' import type { DataType } from 'devextreme/common'
import type { SimpleItem } from 'devextreme/ui/form' import type { SimpleItem } from 'devextreme/ui/form'
import { useEffect, useRef, useState } from 'react' import { lazy, useEffect, useRef, useState } from 'react'
import { Helmet } from 'react-helmet' import { Helmet } from 'react-helmet'
import { useParams, useSearchParams } from 'react-router-dom' import { useParams, useSearchParams } from 'react-router-dom'
import FormButtons from './FormButtons' import FormButtons from './FormButtons'
@ -13,10 +13,12 @@ import { useCurrentMenuIcon } from '@/utils/hooks/useCurrentMenuIcon'
import { Badge } from '@/components/ui' import { Badge } from '@/components/ui'
import { APP_NAME } from '@/constants/app.constant' import { APP_NAME } from '@/constants/app.constant'
import { FieldCustomValueTypeEnum } from '@/proxy/form/models' import { FieldCustomValueTypeEnum } from '@/proxy/form/models'
import { getNextSequenceValue } from '@/services/form.service' import { getList, getNextSequenceValue } from '@/services/form.service'
import { autoNumber } from '../list/Utils' import { autoNumber } from '../list/Utils'
const FormNew = ( const FormView = lazy(() => import('./FormView'))
export const FormNewContent = (
props: FormProps = { props: FormProps = {
isSubForm: false, isSubForm: false,
}, },
@ -292,4 +294,53 @@ const FormNew = (
) )
} }
const FormNew = (
props: FormProps = {
isSubForm: false,
},
) => {
const params = useParams()
const listFormCode = props.listFormCode ?? params.listFormCode ?? ''
const [listFormType, setListFormType] = useState<string>()
const [loading, setLoading] = useState(true)
useEffect(() => {
let isActive = true
const resolveFormType = async () => {
setLoading(true)
try {
const response = await getList({ listFormCode })
if (isActive) {
setListFormType(response?.data?.gridOptions?.listFormType)
}
} finally {
if (isActive) {
setLoading(false)
}
}
}
if (listFormCode && !props.isSubForm) {
resolveFormType()
} else {
setLoading(false)
}
return () => {
isActive = false
}
}, [listFormCode, props.isSubForm])
if (loading) {
return <Loading loading type="default" />
}
if (!props.isSubForm && listFormType === 'Form') {
return <FormView {...props} listFormCode={listFormCode} />
}
return <FormNewContent {...props} listFormCode={listFormCode} />
}
export default FormNew export default FormNew

View file

@ -34,7 +34,7 @@ const FormView = (
const isNotePanel = () => { const isNotePanel = () => {
return ( return (
listFormCode && listFormCode &&
id && formData &&
!isSubForm && !isSubForm &&
gridDto?.gridOptions?.showNote && gridDto?.gridOptions?.showNote &&
checkPermission(gridDto?.gridOptions.permissionDto.n) checkPermission(gridDto?.gridOptions.permissionDto.n)
@ -71,6 +71,8 @@ const FormView = (
return <>{translate('::App.NoResults')}</> return <>{translate('::App.NoResults')}</>
} }
const recordId = id || formData[gridDto?.gridOptions.keyFieldName ?? 'Id']
return ( return (
<> <>
<Container <Container
@ -103,14 +105,14 @@ const FormView = (
isSubForm={isSubForm} isSubForm={isSubForm}
mode={mode} mode={mode}
listFormCode={listFormCode} listFormCode={listFormCode}
id={formData?.Id} id={recordId}
gridDto={gridDto!} gridDto={gridDto!}
commandColumnData={commandColumnData!} commandColumnData={commandColumnData!}
dataSource={dataSource!} dataSource={dataSource!}
permissions={permissionResults} permissions={permissionResults}
handleSubmit={() => {}} handleSubmit={() => {}}
refreshData={fetchData} refreshData={fetchData}
getSelectedRowKeys={() => [id]} getSelectedRowKeys={() => [recordId]}
getSelectedRowsData={() => [formData]} getSelectedRowsData={() => [formData]}
getFilter={() => filter} getFilter={() => filter}
onActionEdit={props.onActionEdit} onActionEdit={props.onActionEdit}
@ -140,7 +142,7 @@ const FormView = (
{isNotePanel() && ( {isNotePanel() && (
<NotePanel <NotePanel
entityName={listFormCode} entityName={listFormCode}
entityId={id} entityId={recordId}
isVisible={isNotePanelVisible} isVisible={isNotePanelVisible}
onToggle={() => setIsNotePanelVisible(!isNotePanelVisible)} onToggle={() => setIsNotePanelVisible(!isNotePanelVisible)}
/> />

View file

@ -9,7 +9,7 @@ import Grid from '../list/Grid'
import Chart from '../list/Chart' import Chart from '../list/Chart'
import { GridDto, SubFormDto, SubFormTabTypeEnum } from '@/proxy/form/models' import { GridDto, SubFormDto, SubFormTabTypeEnum } from '@/proxy/form/models'
import FormEdit from './FormEdit' import FormEdit from './FormEdit'
import FormNew from './FormNew' import { FormNewContent as FormNew } from './FormNew'
import FormView from './FormView' import FormView from './FormView'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
import Tree from '../list/Tree' import Tree from '../list/Tree'

View file

@ -7,7 +7,7 @@ import { captionize } from 'devextreme/core/utils/inflector'
import CustomStore from 'devextreme/data/custom_store' import CustomStore from 'devextreme/data/custom_store'
import type { GroupItem } from 'devextreme/ui/form' import type { GroupItem } from 'devextreme/ui/form'
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
import { useNavigate, useSearchParams } from 'react-router-dom' import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
import { GridColumnData } from '../list/GridColumnData' import { GridColumnData } from '../list/GridColumnData'
import { addCss, addJs } from '../list/Utils' import { addCss, addJs } from '../list/Utils'
import { PermissionResults, RowMode, SimpleItemWithColData } from './types' import { PermissionResults, RowMode, SimpleItemWithColData } from './types'
@ -50,6 +50,7 @@ const useGridData = (props: {
const refForm = useRef<FormRef>(null) const refForm = useRef<FormRef>(null)
const previousFormDataRef = useRef<any>() const previousFormDataRef = useRef<any>()
const [searchParams] = useSearchParams() const [searchParams] = useSearchParams()
const location = useLocation()
const navigate = useNavigate() const navigate = useNavigate()
const { translate } = useLocalization() const { translate } = useLocalization()
const { checkPermission } = usePermission() const { checkPermission } = usePermission()
@ -419,7 +420,13 @@ const useGridData = (props: {
} }
if (mode !== 'new') { if (mode !== 'new') {
setFilter([gridDto?.gridOptions.keyFieldName ?? 'Id', '=', id]) if (id) {
setFilter([gridDto?.gridOptions.keyFieldName ?? 'Id', '=', id])
} else {
// Form tipi listformlar ID olmadan açılabilir. Bu durumda kayıt seçimini
// sunucudaki DefaultFilter'a bırakıyoruz.
fetchData()
}
} }
}, [id, gridReady]) }, [id, gridReady])