From 6174253a40f73f9d5ffd3d67e695e014bfcac5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Tue, 14 Jul 2026 23:25:04 +0300 Subject: [PATCH] =?UTF-8?q?Lisans=20bilgileri=20takip=20ekran=C4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LookUpQueryValues.cs | 1 + .../Seeds/LanguagesData.json | 12 + .../Seeds/ListFormSeeder_Administration.cs | 539 +++++++++--------- .../Seeds/MenusData.json | 26 +- .../Seeds/PermissionsData.json | 192 +++++-- .../HostData/Sas_H_OrderItem_ByTenantId.sql | 8 + .../Enums/TableNameEnum.cs | 3 +- .../TableNameResolver.cs | 1 + .../Data/SeedConsts.cs | 1 + .../Queries/QueryHelper.cs | 4 +- ui/src/components/orders/TenantForm.tsx | 82 ++- .../CreateTenantFromOrderDialog.tsx | 2 +- ui/src/views/form/FormNew.tsx | 57 +- ui/src/views/form/FormView.tsx | 10 +- ui/src/views/form/SubForms.tsx | 2 +- ui/src/views/form/useFormData.tsx | 11 +- 16 files changed, 583 insertions(+), 368 deletions(-) create mode 100644 api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/HostData/Sas_H_OrderItem_ByTenantId.sql diff --git a/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs b/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs index 80325a3..d44b5ad 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs @@ -185,6 +185,7 @@ public static class LookupQueryValues $"LEFT OUTER JOIN \"{FullNameTable(TableNameEnum.LanguageText)}\" " + $"ON \"{FullNameTable(TableNameEnum.Product)}\".\"Name\" = \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Key\" " + $"WHERE \"{FullNameTable(TableNameEnum.Product)}\".\"IsDeleted\" = 'false' " + + $"AND \"{FullNameTable(TableNameEnum.LanguageText)}\".\"CultureName\" = 'tr' " + $"ORDER BY \"{FullNameTable(TableNameEnum.LanguageText)}\".\"Value\";"; public static string MenuCodeValues = diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json index b4192b2..90d3364 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json @@ -1506,6 +1506,18 @@ "en": "Settings", "tr": "Ayarlar" }, + { + "resourceName": "Platform", + "key": "App.Licence", + "en": "Licence", + "tr": "Lisans" + }, + { + "resourceName": "Platform", + "key": "App.LicenceItem", + "en": "Licence Items", + "tr": "Lisans Kalemleri" + }, { "resourceName": "Platform", "key": "App.Settings", diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs index 6814b68..0a2a54b 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Administration.cs @@ -5124,51 +5124,38 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep GroupPanelJson = DefaultGroupPanelJson(), SelectionJson = DefaultSelectionSingleJson, ColumnOptionJson = DefaultColumnOptionJson(), - DeleteCommand = DefaultDeleteCommand("AbpTenants"), - DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson(), PagerOptionJson = DefaultPagerOptionJson, - EditingOptionJson = DefaultEditingOptionJson(listFormName, 900, 500, false, false, false, false, false, false), PermissionJson = DefaultPermissionJson(listFormName), + EditingOptionJson = DefaultEditingOptionJson(listFormName, 900, 500, false, false, false, false, false, false), EditingFormJson = JsonSerializer.Serialize(new List() { 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=3, DataField = "Founder", ColSpan=1, EditorType2=EditorTypes.dxTextBox }, 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=6, DataField = "MobileNumber", 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=8, DataField = "FaxNumber", ColSpan=1, EditorType2=EditorTypes.dxTextBox, EditorOptions=EditorOptionValues.PhoneEditorOptions }, - 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 }, + new EditingFormItemDto { Order=6, 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 = "Website", ColSpan=1, EditorType2=EditorTypes.dxTextBox }, ] } }), - // SubFormsJson = JsonSerializer.Serialize(new List() { - // new { - // TabType = ListFormTabTypeEnum.List, - // TabTitle = AppCodes.Branches, - // Code = AppCodes.Branches, - // Relation = new List() { - // new { - // ParentFieldName = "Id", - // DbType = DbType.Guid, - // ChildFieldName = "TenantId" - // } - // } - // }} - // ) + SubFormsJson = JsonSerializer.Serialize(new List() { + new { + TabType = ListFormTabTypeEnum.List, + TabTitle = AppCodes.LicenceItem, + Code = AppCodes.LicenceItem, + Relation = new List() { + new { + ParentFieldName = "Id", + DbType = DbType.Guid, + ChildFieldName = "TenantId" + } + } + }} + ) }, autoSave: true ); @@ -5275,163 +5262,6 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep PivotSettingsJson = DefaultPivotSettingsJson }, 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, CultureName = LanguageCodes.En, @@ -5439,7 +5269,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "Email", CaptionName = "App.Listform.ListformField.Email", Width = 0, - ListOrderNo = 14, + ListOrderNo = 7, Visible = true, IsActive = true, AllowSearch = true, @@ -5456,7 +5286,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "Website", CaptionName = "App.Listform.ListformField.Website", Width = 0, - ListOrderNo = 15, + ListOrderNo = 8, Visible = true, IsActive = true, AllowSearch = true, @@ -5473,7 +5303,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep FieldName = "PhoneNumber", CaptionName = "Abp.Identity.User.UserInformation.PhoneNumber", Width = 0, - ListOrderNo = 16, + ListOrderNo = 9, Visible = true, IsActive = true, AllowSearch = true, @@ -5483,77 +5313,260 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep PermissionJson = DefaultFieldPermissionJson(listForm.Name), PivotSettingsJson = DefaultPivotSettingsJson }, - new ListFormField - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "MobileNumber", - CaptionName = "App.Listform.ListformField.MobileNumber", - Width = 0, - ListOrderNo = 17, - Visible = true, - IsActive = true, - AllowSearch = true, - EditorOptions = EditorOptionValues.PhoneEditorOptions, - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, - new ListFormField - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Int64, - FieldName = "FaxNumber", - CaptionName = "App.Listform.ListformField.FaxNumber", - Width = 0, - ListOrderNo = 18, - Visible = true, - IsActive = true, - AllowSearch = true, - EditorOptions = EditorOptionValues.PhoneEditorOptions, - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, - new ListFormField - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Boolean, - FieldName = "IsActive", - CaptionName = "App.Listform.ListformField.IsActive", - Width = 0, - ListOrderNo = 19, - Visible = true, - IsActive = true, - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, - new ListFormField - { - ListFormCode = listForm.ListFormCode, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "MenuGroup", - CaptionName = "App.Listform.ListformField.MenuGroup", - Width = 0, - ListOrderNo = 20, - Visible = true, - IsActive = true, - LookupJson = JsonSerializer.Serialize(new LookupDto { - DataSourceType = UiLookupDataSourceTypeEnum.Query, - DisplayExpr = "name", - ValueExpr = "key", - LookupQuery = LookupQueryValues.MenuGroupValues, - }), - ValidationRuleJson = DefaultValidationRuleRequiredJson, - ColumnCustomizationJson = DefaultColumnCustomizationJson, - PermissionJson = DefaultFieldPermissionJson(listForm.Name), - PivotSettingsJson = DefaultPivotSettingsJson - }, + ], autoSave: true); + #endregion + } + #endregion + + #region Licence Item + listFormName = AppCodes.LicenceItem; + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) + { + var listForm = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.List, + PageSize = 10, + ExportJson = DefaultExportJson, + IsSubForm = true, + ShowNote = false, + LayoutJson = DefaultLayoutJson(), + CultureName = LanguageCodes.En, + ListFormCode = listFormName, + Name = listFormName, + Title = listFormName, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = false, + IsBranch = false, + IsOrganizationUnit = false, + Description = listFormName, + SelectCommandType = SelectCommandTypeEnum.View, + SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.OrderItem_ByTenantId)), + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = DefaultFilterRowJson(), + HeaderFilterJson = DefaultHeaderFilterJson(), + SearchPanelJson = DefaultSearchPanelJson(), + GroupPanelJson = DefaultGroupPanelJson(), + SelectionJson = DefaultSelectionSingleJson, + ColumnOptionJson = DefaultColumnOptionJson(), + PermissionJson = DefaultPermissionJson(listFormName), + PagerOptionJson = DefaultPagerOptionJson, + EditingOptionJson = DefaultEditingOptionJson(listFormName, 600, 450, false, false, false, false, false), + }, autoSave: true + ); + + #region Licence Item Fields + await _listFormFieldRepository.InsertManyAsync([ + new ListFormField + { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + CaptionName = "App.Listform.ListformField.Id", + Width = 0, + ListOrderNo = 1, + Visible = false, + IsActive = true, + + SortIndex = 0, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new ListFormField + { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + 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); #endregion } diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/MenusData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/MenusData.json index 763b2d6..24def0f 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/MenusData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/MenusData.json @@ -1083,11 +1083,21 @@ "RequiredPermissionName": "App.Definitions.OrgChart", "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", "Code": "App.Setting", "DisplayName": "App.Setting", - "Order": 2, + "Order": 3, "Url": "/admin/settings", "Icon": "FcSettings", "RequiredPermissionName": "App.Setting", @@ -1097,7 +1107,7 @@ "ParentCode": "App.Administration", "Code": "App.Administration.Intranet", "DisplayName": "App.Intranet", - "Order": 3, + "Order": 4, "Url": null, "Icon": "FcConferenceCall", "RequiredPermissionName": null, @@ -1167,7 +1177,7 @@ "ParentCode": "App.Administration", "Code": "App.Administration.Restrictions", "DisplayName": "App.Restrictions", - "Order": 4, + "Order": 5, "Url": null, "Icon": "FaLock", "RequiredPermissionName": null, @@ -1197,7 +1207,7 @@ "ParentCode": "App.Administration", "Code": "Abp.Identity", "DisplayName": "Abp.Identity", - "Order": 5, + "Order": 6, "Url": null, "Icon": "FcConferenceCall", "RequiredPermissionName": null, @@ -1287,7 +1297,7 @@ "ParentCode": "App.Administration", "Code": "App.Reports.Management", "DisplayName": "App.Reports.Management", - "Order": 6, + "Order": 7, "Url": null, "Icon": "FcDocument", "RequiredPermissionName": null, @@ -1317,7 +1327,7 @@ "ParentCode": "App.Administration", "Code": "App.Videoroom.Dashboard", "DisplayName": "App.Videoroom.Dashboard", - "Order": 7, + "Order": 8, "Url": "/admin/videoroom/dashboard", "Icon": "FcVideoCall", "RequiredPermissionName": "App.Videoroom.Dashboard", @@ -1327,7 +1337,7 @@ "ParentCode": "App.Administration", "Code": "App.Files", "DisplayName": "App.Files", - "Order": 8, + "Order": 9, "Url": "/admin/files", "Icon": "FcFolder", "RequiredPermissionName": "App.Files", @@ -1337,7 +1347,7 @@ "ParentCode": "App.Administration", "Code": "App.Forum", "DisplayName": "App.Forum", - "Order": 9, + "Order": 10, "Url": "/admin/forum", "Icon": "FcLink", "RequiredPermissionName": "App.ForumManagement.Publish", diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/PermissionsData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/PermissionsData.json index 8a56479..f5b8050 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/PermissionsData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/PermissionsData.json @@ -4175,7 +4175,7 @@ "DisplayName": "App.Intranet.Survey", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4184,7 +4184,7 @@ "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4193,7 +4193,7 @@ "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4202,7 +4202,7 @@ "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4211,7 +4211,7 @@ "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4220,7 +4220,7 @@ "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4229,7 +4229,7 @@ "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4238,7 +4238,7 @@ "DisplayName": "Widget", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4247,7 +4247,7 @@ "DisplayName": "App.Intranet.SurveyQuestion", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4256,7 +4256,7 @@ "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4265,7 +4265,7 @@ "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4274,7 +4274,7 @@ "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4283,7 +4283,7 @@ "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4292,7 +4292,7 @@ "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4301,7 +4301,7 @@ "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4310,7 +4310,7 @@ "DisplayName": "App.Intranet.SurveyQuestionOption", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4319,7 +4319,7 @@ "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4328,7 +4328,7 @@ "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4337,7 +4337,7 @@ "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4346,7 +4346,7 @@ "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4355,7 +4355,7 @@ "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4364,7 +4364,7 @@ "DisplayName": "App.Intranet.SurveyResponse", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4373,7 +4373,7 @@ "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4382,7 +4382,7 @@ "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4391,7 +4391,7 @@ "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4400,7 +4400,7 @@ "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4409,7 +4409,7 @@ "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4418,7 +4418,7 @@ "DisplayName": "Note", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4427,7 +4427,7 @@ "DisplayName": "App.Intranet.SurveyAnswer", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4436,7 +4436,7 @@ "DisplayName": "Create", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4445,7 +4445,7 @@ "DisplayName": "Update", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4454,7 +4454,7 @@ "DisplayName": "Delete", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4463,7 +4463,7 @@ "DisplayName": "Export", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4472,7 +4472,7 @@ "DisplayName": "Import", "IsEnabled": true, "MultiTenancySide": 3, - "MenuGroup": "Erp" + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4480,8 +4480,8 @@ "ParentName": null, "DisplayName": "App.Videoroom", "IsEnabled": true, - "MultiTenancySide": 2, - "MenuGroup": "Kurs" + "MultiTenancySide": 3, + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4489,8 +4489,8 @@ "ParentName": "App.Videoroom", "DisplayName": "App.Videoroom.Dashboard", "IsEnabled": true, - "MultiTenancySide": 2, - "MenuGroup": "Kurs" + "MultiTenancySide": 3, + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4498,8 +4498,8 @@ "ParentName": "App.Videoroom", "DisplayName": "App.Videoroom.List", "IsEnabled": true, - "MultiTenancySide": 2, - "MenuGroup": "Kurs" + "MultiTenancySide": 3, + "MenuGroup": "Erp|Kurs" }, { "GroupName": "App.Administration", @@ -4507,8 +4507,116 @@ "ParentName": "App.Videoroom", "DisplayName": "App.Videoroom.RoomDetail", "IsEnabled": true, - "MultiTenancySide": 2, - "MenuGroup": "Kurs" + "MultiTenancySide": 3, + "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" } ] } \ No newline at end of file diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/HostData/Sas_H_OrderItem_ByTenantId.sql b/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/HostData/Sas_H_OrderItem_ByTenantId.sql new file mode 100644 index 0000000..e909969 --- /dev/null +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/HostData/Sas_H_OrderItem_ByTenantId.sql @@ -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 \ No newline at end of file diff --git a/api/src/Sozsoft.Platform.Domain.Shared/Enums/TableNameEnum.cs b/api/src/Sozsoft.Platform.Domain.Shared/Enums/TableNameEnum.cs index 04b8d05..e816100 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/Enums/TableNameEnum.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/Enums/TableNameEnum.cs @@ -63,6 +63,7 @@ public enum TableNameEnum InstallmentOption, Order, OrderItem, + OrderItem_ByTenantId, BlogCategory, BlogPost, Demo, @@ -94,5 +95,5 @@ public enum TableNameEnum VideoroomAttandance, VideoroomChat, Sequence, - DbTableColumn + DbTableColumn, } diff --git a/api/src/Sozsoft.Platform.Domain.Shared/TableNameResolver.cs b/api/src/Sozsoft.Platform.Domain.Shared/TableNameResolver.cs index 01be3e7..8a6d708 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/TableNameResolver.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/TableNameResolver.cs @@ -59,6 +59,7 @@ public static class TableNameResolver { nameof(TableNameEnum.InstallmentOption), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.Order), (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.BlogPost), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, { nameof(TableNameEnum.Demo), (TablePrefix.PlatformByName, MenuPrefix.Saas) }, diff --git a/api/src/Sozsoft.Platform.Domain/Data/SeedConsts.cs b/api/src/Sozsoft.Platform.Domain/Data/SeedConsts.cs index e28868c..a10742b 100644 --- a/api/src/Sozsoft.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Sozsoft.Platform.Domain/Data/SeedConsts.cs @@ -417,6 +417,7 @@ public static class SeedConsts public const string Jobs = Default + ".Jobs"; } public const string Licence = Prefix.App + ".Licence"; + public const string LicenceItem = Prefix.App + ".LicenceItem"; //Web Site public const string Home = Prefix.App + ".Home"; diff --git a/api/src/Sozsoft.Platform.Domain/Queries/QueryHelper.cs b/api/src/Sozsoft.Platform.Domain/Queries/QueryHelper.cs index 1530d7a..415dc2f 100644 --- a/api/src/Sozsoft.Platform.Domain/Queries/QueryHelper.cs +++ b/api/src/Sozsoft.Platform.Domain/Queries/QueryHelper.cs @@ -52,7 +52,9 @@ public class QueryHelper case DbType.String: case DbType.AnsiString: var strValues = values.Select(a => a?.ToString()).ToArray(); - value = string.Join(PlatformConsts.MultiValueDelimiter, strValues); + value = isArray + ? string.Join(PlatformConsts.MultiValueDelimiter, strValues) + : strValues[0]; break; case DbType.Date: case DbType.DateTime: diff --git a/ui/src/components/orders/TenantForm.tsx b/ui/src/components/orders/TenantForm.tsx index 38e6cfa..a80cf80 100644 --- a/ui/src/components/orders/TenantForm.tsx +++ b/ui/src/components/orders/TenantForm.tsx @@ -193,12 +193,8 @@ export const TenantForm: React.FC = ({ onSubmit }) => { const [foundTenantName, setFoundTenantName] = useState('') const navigate = useNavigate() const { translate } = useLocalization() - const { tenantData, tenantFormDraft } = useStoreState( - (state) => state.client.order, - ) - const { setTenantFormDraft, clearTenant } = useStoreActions( - (actions) => actions.client.order, - ) + const { tenantData, tenantFormDraft } = useStoreState((state) => state.client.order) + const { setTenantFormDraft, clearTenant } = useStoreActions((actions) => actions.client.order) const hasRestoredTenantData = useRef(false) useEffect(() => { @@ -681,7 +677,9 @@ export const TenantForm: React.FC = ({ onSubmit }) => {
- {translate('::Abp.Identity.User.UserInformation.PhoneNumber')}: + + {translate('::Abp.Identity.User.UserInformation.PhoneNumber')}: + {formData.phoneNumber}
@@ -999,41 +997,6 @@ export const TenantForm: React.FC = ({ onSubmit }) => { -
-
- -
- - 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" - /> -
-
-
- -
- - 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" - /> -
-
-
-
+ +
+
+ +
+ + 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" + /> +
+
+
+ +
+ + 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" + /> +
+
+
)} diff --git a/ui/src/views/admin/tenant-management/CreateTenantFromOrderDialog.tsx b/ui/src/views/admin/tenant-management/CreateTenantFromOrderDialog.tsx index 0904260..15df174 100644 --- a/ui/src/views/admin/tenant-management/CreateTenantFromOrderDialog.tsx +++ b/ui/src/views/admin/tenant-management/CreateTenantFromOrderDialog.tsx @@ -84,7 +84,7 @@ const CreateTenantFromOrderDialog = ({ toast.push( - {translate('::App.Platform.SaveSuccess') || 'Tenant kaydedildi'} + {translate('::App.Platform.Success') || 'Tenant kaydedildi'} , { placement: 'bottom-end' }, ) diff --git a/ui/src/views/form/FormNew.tsx b/ui/src/views/form/FormNew.tsx index d17c89a..7c7c7de 100644 --- a/ui/src/views/form/FormNew.tsx +++ b/ui/src/views/form/FormNew.tsx @@ -2,7 +2,7 @@ import { Container, Loading } from '@/components/shared' import { useLocalization } from '@/utils/hooks/useLocalization' import type { DataType } from 'devextreme/common' 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 { useParams, useSearchParams } from 'react-router-dom' import FormButtons from './FormButtons' @@ -13,10 +13,12 @@ import { useCurrentMenuIcon } from '@/utils/hooks/useCurrentMenuIcon' import { Badge } from '@/components/ui' import { APP_NAME } from '@/constants/app.constant' import { FieldCustomValueTypeEnum } from '@/proxy/form/models' -import { getNextSequenceValue } from '@/services/form.service' +import { getList, getNextSequenceValue } from '@/services/form.service' import { autoNumber } from '../list/Utils' -const FormNew = ( +const FormView = lazy(() => import('./FormView')) + +export const FormNewContent = ( props: FormProps = { 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() + 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 + } + + if (!props.isSubForm && listFormType === 'Form') { + return + } + + return +} + export default FormNew diff --git a/ui/src/views/form/FormView.tsx b/ui/src/views/form/FormView.tsx index a39e082..fad60bf 100644 --- a/ui/src/views/form/FormView.tsx +++ b/ui/src/views/form/FormView.tsx @@ -34,7 +34,7 @@ const FormView = ( const isNotePanel = () => { return ( listFormCode && - id && + formData && !isSubForm && gridDto?.gridOptions?.showNote && checkPermission(gridDto?.gridOptions.permissionDto.n) @@ -71,6 +71,8 @@ const FormView = ( return <>{translate('::App.NoResults')} } + const recordId = id || formData[gridDto?.gridOptions.keyFieldName ?? 'Id'] + return ( <> {}} refreshData={fetchData} - getSelectedRowKeys={() => [id]} + getSelectedRowKeys={() => [recordId]} getSelectedRowsData={() => [formData]} getFilter={() => filter} onActionEdit={props.onActionEdit} @@ -140,7 +142,7 @@ const FormView = ( {isNotePanel() && ( setIsNotePanelVisible(!isNotePanelVisible)} /> diff --git a/ui/src/views/form/SubForms.tsx b/ui/src/views/form/SubForms.tsx index 6c15c7c..19c3ef9 100644 --- a/ui/src/views/form/SubForms.tsx +++ b/ui/src/views/form/SubForms.tsx @@ -9,7 +9,7 @@ import Grid from '../list/Grid' import Chart from '../list/Chart' import { GridDto, SubFormDto, SubFormTabTypeEnum } from '@/proxy/form/models' import FormEdit from './FormEdit' -import FormNew from './FormNew' +import { FormNewContent as FormNew } from './FormNew' import FormView from './FormView' import { useLocalization } from '@/utils/hooks/useLocalization' import Tree from '../list/Tree' diff --git a/ui/src/views/form/useFormData.tsx b/ui/src/views/form/useFormData.tsx index 2a2ecf2..471a56b 100644 --- a/ui/src/views/form/useFormData.tsx +++ b/ui/src/views/form/useFormData.tsx @@ -7,7 +7,7 @@ import { captionize } from 'devextreme/core/utils/inflector' import CustomStore from 'devextreme/data/custom_store' import type { GroupItem } from 'devextreme/ui/form' 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 { addCss, addJs } from '../list/Utils' import { PermissionResults, RowMode, SimpleItemWithColData } from './types' @@ -50,6 +50,7 @@ const useGridData = (props: { const refForm = useRef(null) const previousFormDataRef = useRef() const [searchParams] = useSearchParams() + const location = useLocation() const navigate = useNavigate() const { translate } = useLocalization() const { checkPermission } = usePermission() @@ -419,7 +420,13 @@ const useGridData = (props: { } 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])