diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json index ddbc896b..21c157e4 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/LanguagesData.json @@ -4314,7 +4314,7 @@ "key": "ListForms.ListFormEdit.SubFormsRelation.ParentFieldName", "en": "Parent Field Name", "tr": "Üst Kimlik İfadesi" - }, + }, { "resourceName": "Platform", "key": "ListForms.ListFormEdit.SubFormsRelation.ChildFieldName", @@ -9307,6 +9307,24 @@ "tr": "İş Merkezleri", "en": "Workcenters" }, + { + "resourceName": "Platform", + "key": "App.Maintenance.WorkcenterType", + "tr": "İş Merkezi Tipleri", + "en": "Workcenter Types" + }, + { + "resourceName": "Platform", + "key": "App.Maintenance.WorkcenterStatus", + "tr": "İş Merkezi Durumları", + "en": "Workcenter Statuses" + }, + { + "resourceName": "Platform", + "key": "App.Maintenance.Workcenter", + "tr": "İş Merkezleri", + "en": "Workcenters" + }, { "resourceName": "Platform", "key": "App.Maintenance.Plans", diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Maintenance.cs b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Maintenance.cs index dccabae5..2bf43933 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Maintenance.cs +++ b/api/src/Erp.Platform.DbMigrator/Seeds/ListFormSeeder_Maintenance.cs @@ -13,8 +13,6 @@ using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; -using Volo.Abp.TenantManagement; -using AbpIdentity = Erp.Platform.Data.Seeds.SeedConsts.AbpIdentity; using AppCodes = Erp.Platform.Data.Seeds.SeedConsts.AppCodes; using static Erp.Platform.PlatformConsts; using static Erp.Platform.PlatformSeeder.SeederDefaults; @@ -45,142 +43,656 @@ public class ListFormSeeder_Maintenance : IDataSeedContributor, ITransientDepend public async Task SeedAsync(DataSeedContext context) { - // #region Material Type - // if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.MaterialType)) - // { - // var listFormMaterialType = await _listFormRepository.InsertAsync( - // new ListForm() - // { - // ListFormType = ListFormTypeEnum.List, - // IsSubForm = false, - // LayoutJson = DefaultLayoutJson, - // CultureName = LanguageCodes.En, - // ListFormCode = ListFormCodes.Lists.MaterialType, - // Name = AppCodes.SupplyChain.MaterialType, - // Title = AppCodes.SupplyChain.MaterialType, - // DataSourceCode = SeedConsts.DataSources.DefaultCode, - // IsTenant = true, - // IsBranch = false, - // IsOrganizationUnit = false, - // Description = AppCodes.SupplyChain.MaterialType, - // SelectCommandType = SelectCommandTypeEnum.Table, - // SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.MaterialType)), - // KeyFieldName = "Id", - // KeyFieldDbSourceType = DbType.Guid, - // DefaultFilter = DefaultFilterJson, - // SortMode = GridOptions.SortModeSingle, - // FilterRowJson = DefaultFilterRowJson, - // HeaderFilterJson = DefaultHeaderFilterJson, - // SearchPanelJson= DefaultSearchPanelJson, - // GroupPanelJson = DefaultGroupPanelJson, - // SelectionJson = DefaultSelectionSingleJson, - // ColumnOptionJson = DefaultColumnOptionJson, - // PermissionJson = DefaultPermissionJson(AppCodes.SupplyChain.MaterialType), - // DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.MaterialType)), - // DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, - // PagerOptionJson = DefaultPagerOptionJson, - // EditingOptionJson = DefaultEditingOptionJson(AppCodes.SupplyChain.MaterialType, 500, 250, true, true, true, true, false), - // EditingFormJson = JsonSerializer.Serialize(new List() { - // new() { Order=1,ColCount=1,ColSpan=1,ItemType="group", Items=[ - // new EditingFormItemDto { Order = 1, DataField = "Code", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - // new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - // new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 1, EditorType2=EditorTypes.dxTextArea }, - // new EditingFormItemDto { Order = 4, DataField = "IsActive", ColSpan = 1, EditorType2=EditorTypes.dxCheckBox }, - // ]} - // }), - // InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, - // FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { - // new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value } - // }), - // } - // ); + using var utils = new SeederUtils(); - // #region MaterialType Fields - // await _listFormFieldRepository.InsertManyAsync(new ListFormField[] { - // new() { - // ListFormCode = listFormMaterialType.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.Guid, - // FieldName = "Id", - // Width = 100, - // ListOrderNo = 1, - // Visible = false, - // IsActive = true, - // IsDeleted = false, - // ValidationRuleJson = DefaultValidationRuleRequiredJson, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(AppCodes.SupplyChain.MaterialType), - // PivotSettingsJson = DefaultPivotSettingsJson - // }, - // new() { - // ListFormCode = listFormMaterialType.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.String, - // FieldName = "Code", - // Width = 150, - // ListOrderNo = 2, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // AllowSearch = true, - // ValidationRuleJson = DefaultValidationRuleRequiredJson, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(AppCodes.SupplyChain.MaterialType), - // PivotSettingsJson = DefaultPivotSettingsJson - // }, - // new() { - // ListFormCode = listFormMaterialType.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.String, - // FieldName = "Name", - // Width = 350, - // ListOrderNo = 3, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // SortIndex = 1, - // SortDirection = GridColumnOptions.SortOrderAsc, - // AllowSearch = true, - // ValidationRuleJson = DefaultValidationRuleRequiredJson, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(AppCodes.SupplyChain.MaterialType), - // PivotSettingsJson = DefaultPivotSettingsJson - // }, - // new() { - // ListFormCode = listFormMaterialType.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.String, - // FieldName = "Description", - // Width = 500, - // ListOrderNo = 4, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // AllowSearch = true, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(AppCodes.SupplyChain.MaterialType), - // PivotSettingsJson = DefaultPivotSettingsJson - // }, + #region Workcenter Type + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.WorkcenterType)) + { + var listForm = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.List, + IsSubForm = false, + ShowNote = true, + LayoutJson = DefaultLayoutJson, + CultureName = LanguageCodes.En, + ListFormCode = ListFormCodes.Lists.WorkcenterType, + Name = AppCodes.Maintenance.WorkcenterType, + Title = AppCodes.Maintenance.WorkcenterType, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = true, + IsBranch = false, + IsOrganizationUnit = false, + Description = AppCodes.Maintenance.WorkcenterType, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkcenterType)), + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + DefaultFilter = DefaultFilterJson, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = DefaultFilterRowJson, + HeaderFilterJson = DefaultHeaderFilterJson, + SearchPanelJson = DefaultSearchPanelJson, + GroupPanelJson = DefaultGroupPanelJson, + SelectionJson = DefaultSelectionSingleJson, + ColumnOptionJson = DefaultColumnOptionJson, + PermissionJson = DefaultPermissionJson(AppCodes.Maintenance.WorkcenterType), + DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.WorkcenterType)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, + EditingOptionJson = DefaultEditingOptionJson(AppCodes.Maintenance.WorkcenterType, 500, 250, true, true, true, true, false), + EditingFormJson = JsonSerializer.Serialize(new List() { + new() { + Order=1, ColCount=1, ColSpan=1, ItemType="group", Items= [ + new EditingFormItemDto { Order = 1, DataField = "Code", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 1, EditorType2=EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 4, DataField = "IsActive", ColSpan = 1, EditorType2=EditorTypes.dxCheckBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value } + }), + } + ); - // new() { - // ListFormCode = listFormMaterialType.ListFormCode, - // CultureName = LanguageCodes.En, - // SourceDbType = DbType.Boolean, - // FieldName = "IsActive", - // Width = 100, - // ListOrderNo = 5, - // Visible = true, - // IsActive = true, - // IsDeleted = false, - // AllowSearch = true, - // ColumnCustomizationJson = DefaultColumnCustomizationJson, - // PermissionJson = DefaultFieldPermissionJson(AppCodes.SupplyChain.MaterialType), - // PivotSettingsJson = DefaultPivotSettingsJson - // } - // }); - // #endregion - // } - // #endregion + #region WorkcenterType Fields + await _listFormFieldRepository.InsertManyAsync([ + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 100, + ListOrderNo = 1, + Visible = false, + IsActive = true, + IsDeleted = false, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Code", + Width = 150, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Name", + Width = 350, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + SortIndex = 1, + SortDirection = GridColumnOptions.SortOrderAsc, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 500, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsActive", + Width = 100, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + } + ]); + #endregion + } + #endregion + + #region Workcenter status + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.WorkcenterStatus)) + { + var listForm = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.List, + IsSubForm = false, + ShowNote = true, + LayoutJson = DefaultLayoutJson, + CultureName = LanguageCodes.En, + ListFormCode = ListFormCodes.Lists.WorkcenterStatus, + Name = AppCodes.Maintenance.WorkcenterStatus, + Title = AppCodes.Maintenance.WorkcenterStatus, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = true, + IsBranch = false, + IsOrganizationUnit = false, + Description = AppCodes.Maintenance.WorkcenterStatus, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkcenterStatus)), + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + DefaultFilter = DefaultFilterJson, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = DefaultFilterRowJson, + HeaderFilterJson = DefaultHeaderFilterJson, + SearchPanelJson = DefaultSearchPanelJson, + GroupPanelJson = DefaultGroupPanelJson, + SelectionJson = DefaultSelectionSingleJson, + ColumnOptionJson = DefaultColumnOptionJson, + PermissionJson = DefaultPermissionJson(AppCodes.Maintenance.WorkcenterStatus), + DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.WorkcenterStatus)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, + EditingOptionJson = DefaultEditingOptionJson(AppCodes.Maintenance.WorkcenterStatus, 500, 250, true, true, true, true, false), + EditingFormJson = JsonSerializer.Serialize(new List() { + new() { + Order=1, ColCount=1, ColSpan=1, ItemType="group", Items= [ + new EditingFormItemDto { Order = 1, DataField = "Code", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 1, EditorType2=EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 4, DataField = "IsActive", ColSpan = 1, EditorType2=EditorTypes.dxCheckBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value } + }), + } + ); + + #region WorkcenterStatus Fields + await _listFormFieldRepository.InsertManyAsync([ + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 100, + ListOrderNo = 1, + Visible = false, + IsActive = true, + IsDeleted = false, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Code", + Width = 150, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Name", + Width = 350, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + SortIndex = 1, + SortDirection = GridColumnOptions.SortOrderAsc, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 500, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsActive", + Width = 100, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + } + ]); + #endregion + } + #endregion + + #region Workcenter + if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Lists.Workcenter)) + { + var listForm = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.List, + IsSubForm = false, + ShowNote = true, + LayoutJson = DefaultLayoutJson, + CultureName = LanguageCodes.En, + ListFormCode = ListFormCodes.Lists.Workcenter, + Name = AppCodes.Maintenance.Workcenter, + Title = AppCodes.Maintenance.Workcenter, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = true, + IsBranch = false, + IsOrganizationUnit = false, + Description = AppCodes.Maintenance.Workcenter, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.Workcenter)), + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + DefaultFilter = DefaultFilterJson, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = DefaultFilterRowJson, + HeaderFilterJson = DefaultHeaderFilterJson, + SearchPanelJson = DefaultSearchPanelJson, + GroupPanelJson = DefaultGroupPanelJson, + SelectionJson = DefaultSelectionSingleJson, + ColumnOptionJson = DefaultColumnOptionJson, + PermissionJson = DefaultPermissionJson(AppCodes.Maintenance.Workcenter), + DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.Workcenter)), + DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson, + PagerOptionJson = DefaultPagerOptionJson, + InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson, + EditingOptionJson = DefaultEditingOptionJson(AppCodes.Maintenance.WorkcenterType, 800, 400, true, true, true, true, false), + EditingFormJson = JsonSerializer.Serialize(new List() { + new() { + Order=1, ColCount=2, ColSpan=1, ItemType="group", Items= [ + new EditingFormItemDto { Order = 1, DataField = "Code", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 2, DataField = "Name", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 3, DataField = "Description", ColSpan = 1, EditorType2=EditorTypes.dxTextArea }, + new EditingFormItemDto { Order = 4, DataField = "WorkcenterTypeId", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 5, DataField = "Manufacturer", ColSpan = 1, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 6, DataField = "Model", ColSpan = 1, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 7, DataField = "SerialNumber", ColSpan = 1, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 8, DataField = "InstallationDate", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxDateBox, EditorOptions = EditorOptionValues.DateFormat }, + new EditingFormItemDto { Order = 9, DataField = "WarrantyExpiry", ColSpan = 1, EditorType2=EditorTypes.dxDateBox, EditorOptions = EditorOptionValues.DateFormat }, + new EditingFormItemDto { Order = 10, DataField = "Location", ColSpan = 1, EditorType2=EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 11, DataField = "DepartmentId", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 12, DataField = "StatusId", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 13, DataField = "Criticality", ColSpan = 1, IsRequired = true, EditorType2=EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 14, DataField = "Capacity", ColSpan = 1, EditorType2=EditorTypes.dxNumberBox }, + new EditingFormItemDto { Order = 15, DataField = "CostPerHour", ColSpan = 1, EditorType2=EditorTypes.dxNumberBox }, + new EditingFormItemDto { Order = 16, DataField = "SetupTime", ColSpan = 1, EditorType2=EditorTypes.dxNumberBox }, + new EditingFormItemDto { Order = 17, DataField = "IsActive", ColSpan = 1, EditorType2=EditorTypes.dxCheckBox }, + ]} + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { FieldName = "InstallationDate", FieldDbType = DbType.Date, Value = "@DATE", CustomValueType = FieldCustomValueTypeEnum.CustomKey }, + new() { FieldName = "Capacity", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { FieldName = "CostPerHour", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { FieldName = "SetupTime", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value }, + }), + } + ); + + #region Workcenter Fields + await _listFormFieldRepository.InsertManyAsync([ + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 100, + ListOrderNo = 1, + Visible = false, + IsActive = true, + IsDeleted = false, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Code", + Width = 100, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Name", + Width = 250, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + SortIndex = 1, + SortDirection = GridColumnOptions.SortOrderAsc, + AllowSearch = true, + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 300, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "WorkcenterTypeId", + Width = 150, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.WorkcenterType), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Manufacturer", + Width = 150, + ListOrderNo = 6, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Model", + Width = 120, + ListOrderNo = 7, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "SerialNumber", + Width = 100, + ListOrderNo = 8, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Date, + FieldName = "InstallationDate", + Width = 100, + ListOrderNo = 9, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Date, + FieldName = "WarrantyExpiry", + Width = 100, + ListOrderNo = 10, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Location", + Width = 150, + ListOrderNo = 11, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "DepartmentId", + Width = 150, + ListOrderNo = 12, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Department), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "StatusId", + Width = 150, + ListOrderNo = 13, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.WorkcenterStatus), "Id", "Name"), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Criticality", + Width = 100, + ListOrderNo = 14, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.StaticData, + ValueExpr = "key", + DisplayExpr = "name", + LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { + new () { Key = "Low", Name = "Low" }, + new () { Key = "Medium", Name = "Medium" }, + new () { Key = "High", Name = "High" }, + new () { Key = "Critical", Name = "Critical" }, + }), + }), + ValidationRuleJson = DefaultValidationRuleRequiredJson, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int32, + FieldName = "Capacity", + Width = 100, + ListOrderNo = 15, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Decimal, + FieldName = "CostPerHour", + Format = "fixedPoint", + Alignment = "right", + Width = 100, + ListOrderNo = 16, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int32, + FieldName = "SetupTime", + Width = 100, + ListOrderNo = 17, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + }, + new() { + ListFormCode = listForm.ListFormCode, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsActive", + Width = 100, + ListOrderNo = 18, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnCustomizationJson = DefaultColumnCustomizationJson, + PermissionJson = DefaultFieldPermissionJson(listForm.Name), + PivotSettingsJson = DefaultPivotSettingsJson + } + ]); + #endregion + } + #endregion } } diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json index 7c475811..04eebb16 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/MenusData.json @@ -152,14 +152,18 @@ "path": "/admin/menuManager", "componentPath": "@/views/menu/MenuManager", "routeType": "protected", - "authority": ["App.Menus.Manager"] + "authority": [ + "App.Menus.Manager" + ] }, { "key": "admin.listFormManagement.wizard", "path": "/admin/listform/wizard", "componentPath": "@/views/admin/listForm/Wizard", "routeType": "protected", - "authority": ["App.Listforms.Wizard"] + "authority": [ + "App.Listforms.Wizard" + ] }, { "key": "admin.listFormManagement.edit", @@ -173,14 +177,18 @@ "path": "/admin/forumManagement", "componentPath": "@/views/forum/Management", "routeType": "protected", - "authority": ["App.ForumManagement"] + "authority": [ + "App.ForumManagement" + ] }, { "key": "admin.ai", "path": "/admin/ai", "componentPath": "@/views/ai/Assistant", "routeType": "protected", - "authority": ["Abp.Identity.Ai"] + "authority": [ + "Abp.Identity.Ai" + ] }, { "key": "admin.profile.general", @@ -222,28 +230,36 @@ "path": "/admin/settings", "componentPath": "@/views/settings/Settings", "routeType": "protected", - "authority": ["App.Setting"] + "authority": [ + "App.Setting" + ] }, { "key": "admin.identity.user.detail", "path": "/admin/users/detail/:userId", "componentPath": "@/views/admin/user-management/Details", "routeType": "protected", - "authority": ["AbpIdentity.Users.Update"] + "authority": [ + "AbpIdentity.Users.Update" + ] }, { "key": "admin.identity.ous", "path": "/admin/ous", "componentPath": "@/views/admin/organization-unit/OrganizationUnits", "routeType": "protected", - "authority": ["Abp.Identity.OrganizationUnits"] + "authority": [ + "Abp.Identity.OrganizationUnits" + ] }, { "key": "admin.forum", "path": "/admin/forum", "componentPath": "@/views/forum/Forum", "routeType": "protected", - "authority": ["App.ForumManagement.Publish"] + "authority": [ + "App.ForumManagement.Publish" + ] }, { "key": "admin.list", @@ -285,168 +301,216 @@ "path": "/admin/developerkit", "componentPath": "@/views/developerKit/DashboardPage", "routeType": "protected", - "authority": ["App.DeveloperKit"] + "authority": [ + "App.DeveloperKit" + ] }, { "key": "admin.developerkit.entities", "path": "/admin/developerkit/entities", "componentPath": "@/views/developerKit/EntityPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.entities.new", "path": "/admin/developerkit/entities/new", "componentPath": "@/views/developerKit/EntityDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.entities.edit", "path": "/admin/developerkit/entities/edit/:id", "componentPath": "@/views/developerKit/EntityDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Entity"] + "authority": [ + "App.DeveloperKit.Entity" + ] }, { "key": "admin.developerkit.migrations", "path": "/admin/developerkit/migrations", "componentPath": "@/views/developerKit/MigrationPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Migrations"] + "authority": [ + "App.DeveloperKit.Migrations" + ] }, { "key": "admin.developerkit.endpoints", "path": "/admin/developerkit/endpoints", "componentPath": "@/views/developerKit/CrudEndpointPage", "routeType": "protected", - "authority": ["App.DeveloperKit.CrudEndpoints"] + "authority": [ + "App.DeveloperKit.CrudEndpoints" + ] }, { "key": "admin.developerkit.dynamic-services", "path": "/admin/developerkit/dynamic-services", "componentPath": "@/views/developerKit/DynamicServicePage", "routeType": "protected", - "authority": ["App.DeveloperKit.DynamicServices"] + "authority": [ + "App.DeveloperKit.DynamicServices" + ] }, { "key": "admin.developerkit.components", "path": "/admin/developerkit/components", "componentPath": "@/views/developerKit/ComponentPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.new", "path": "/admin/developerkit/components/new", "componentPath": "@/views/developerKit/ComponentDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.view", "path": "/admin/developerkit/components/view/:id", "componentPath": "@/views/developerKit/ComponentDetailPage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.developerkit.components.edit", "path": "/admin/developerkit/components/edit/:id", "componentPath": "@/views/developerKit/CodePage", "routeType": "protected", - "authority": ["App.DeveloperKit.Components"] + "authority": [ + "App.DeveloperKit.Components" + ] }, { "key": "admin.reportManagement", "path": "/admin/reports/management", "componentPath": "@/views/report/DashboardPage", "routeType": "protected", - "authority": ["App.Reports.Management"] + "authority": [ + "App.Reports.Management" + ] }, { "key": "admin.reports.view", "path": "/admin/reports/:id", "componentPath": "@/views/report/ReportViewerPage", "routeType": "protected", - "authority": ["App.Reports.Categories"] + "authority": [ + "App.Reports.Categories" + ] }, { "key": "admin.fileManagement", "path": "/admin/files", "componentPath": "@/views/admin/files/FileManager", "routeType": "protected", - "authority": ["App.Files"] + "authority": [ + "App.Files" + ] }, { "key": "admin.coordinator.classroom.dashboard", "path": "/admin/coordinator/classroom/dashboard", "componentPath": "@/views/coordinator/Classroom/Dashboard", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.Dashboard"] + "authority": [ + "App.Coordinator.Classroom.Dashboard" + ] }, { "key": "admin.coordinator.classroom.classes", "path": "/admin/coordinator/classroom/classes", "componentPath": "@/views/coordinator/Classroom/ClassList", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.List"] + "authority": [ + "App.Coordinator.Classroom.List" + ] }, { "key": "admin.coordinator.classroom.classroom", "path": "/admin/coordinator/classroom/room/:id", "componentPath": "@/views/coordinator/Classroom/RoomDetail", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.RoomDetail"] + "authority": [ + "App.Coordinator.Classroom.RoomDetail" + ] }, { "key": "admin.coordinator.classroom.planning", "path": "/admin/coordinator/classroom/planning/:id", "componentPath": "@/views/coordinator/Classroom/PlanningPage", "routeType": "protected", - "authority": ["App.Coordinator.Classroom.Planning"] + "authority": [ + "App.Coordinator.Classroom.Planning" + ] }, { "key": "admin.coordinator.exams", "path": "/admin/coordinator/exams", "componentPath": "@/views/coordinator/Exams", "routeType": "protected", - "authority": ["App.Coordinator.Exams"] + "authority": [ + "App.Coordinator.Exams" + ] }, { "key": "admin.coordinator.examDetail", "path": "/admin/coordinator/exam/:id", "componentPath": "@/views/coordinator/ExamInterface/ExamInterface", "routeType": "protected", - "authority": ["App.Coordinator.Exams"] + "authority": [ + "App.Coordinator.Exams" + ] }, { "key": "admin.coordinator.assignments", "path": "/admin/coordinator/assignments", "componentPath": "@/views/coordinator/Assignments", "routeType": "protected", - "authority": ["App.Coordinator.Assignments"] + "authority": [ + "App.Coordinator.Assignments" + ] }, { "key": "admin.coordinator.assignmentDetail", "path": "/admin/coordinator/assignment/:id", "componentPath": "@/views/coordinator/ExamInterface/ExamInterface", "routeType": "protected", - "authority": ["App.Coordinator.Assignments"] + "authority": [ + "App.Coordinator.Assignments" + ] }, { "key": "admin.coordinator.tests", "path": "/admin/coordinator/tests", "componentPath": "@/views/coordinator/Tests", "routeType": "protected", - "authority": ["App.Coordinator.Tests"] + "authority": [ + "App.Coordinator.Tests" + ] }, { "key": "admin.coordinator.testDetail", "path": "/admin/coordinator/test/:id", "componentPath": "@/views/coordinator/ExamInterface/PDFTestInterface", "routeType": "protected", - "authority": ["App.Coordinator.Tests"] + "authority": [ + "App.Coordinator.Tests" + ] }, { "key": "admin.supplychain.requests", @@ -1731,7 +1795,6 @@ "RequiredPermissionName": "App.Intranet.SocialPost", "IsDisabled": false }, - { "ParentCode": "App.Administration", "Code": "App.Public", @@ -1742,7 +1805,6 @@ "RequiredPermissionName": null, "IsDisabled": false }, - { "ParentCode": "App.Public", "Code": "App.About", @@ -2333,12 +2395,32 @@ "RequiredPermissionName": null, "IsDisabled": false }, + { + "ParentCode": "App.Maintenance", + "Code": "App.Maintenance.WorkcenterType", + "DisplayName": "App.Maintenance.WorkcenterType", + "Order": 1, + "Url": "/admin/list/list-workcentertype", + "Icon": "FcOrganization", + "RequiredPermissionName": "App.Maintenance.WorkcenterType", + "IsDisabled": false + }, + { + "ParentCode": "App.Maintenance", + "Code": "App.Maintenance.WorkcenterStatus", + "DisplayName": "App.Maintenance.WorkcenterStatus", + "Order": 2, + "Url": "/admin/list/list-workcenterstatus", + "Icon": "FcProcess", + "RequiredPermissionName": "App.Maintenance.WorkcenterStatus", + "IsDisabled": false + }, { "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Workcenter", "DisplayName": "App.Maintenance.Workcenter", - "Order": 2, - "Url": "/admin/maintenance/workcenters", + "Order": 3, + "Url": "/admin/list/list-workcenter", "Icon": "FcWorkflow", "RequiredPermissionName": "App.Maintenance.Workcenter", "IsDisabled": false @@ -2347,7 +2429,7 @@ "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Plans", "DisplayName": "App.Maintenance.Plans", - "Order": 3, + "Order": 5, "Url": "/admin/maintenance/plans", "Icon": "FcPlanner", "RequiredPermissionName": "App.Maintenance.Plans", @@ -2357,7 +2439,7 @@ "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Calendar", "DisplayName": "App.Maintenance.Calendar", - "Order": 4, + "Order": 6, "Url": "/admin/maintenance/calendar", "Icon": "FcCalendar", "RequiredPermissionName": "App.Maintenance.Calendar", @@ -2367,7 +2449,7 @@ "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Teams", "DisplayName": "App.Maintenance.Teams", - "Order": 5, + "Order": 7, "Url": "/admin/maintenance/teams", "Icon": "FcConferenceCall", "RequiredPermissionName": "App.Maintenance.Teams", @@ -2377,7 +2459,7 @@ "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Faults", "DisplayName": "App.Maintenance.Faults", - "Order": 6, + "Order": 8, "Url": "/admin/maintenance/faults", "Icon": "FcHighPriority", "RequiredPermissionName": "App.Maintenance.Faults", @@ -2387,7 +2469,7 @@ "ParentCode": "App.Maintenance", "Code": "App.Maintenance.Workorders", "DisplayName": "App.Maintenance.Workorders", - "Order": 7, + "Order": 9, "Url": "/admin/maintenance/workorders", "Icon": "FcList", "RequiredPermissionName": "App.Maintenance.Workorders", @@ -2904,4 +2986,4 @@ "IsDisabled": false } ] -} +} \ No newline at end of file diff --git a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json index 8e629555..34238d28 100644 --- a/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json +++ b/api/src/Erp.Platform.DbMigrator/Seeds/PermissionsData.json @@ -9706,7 +9706,6 @@ "MultiTenancySide": 3, "MenuGroup": "Kurs" }, - { "GroupName": "App.Intranet", "Name": "App.Intranet.SocialComment", @@ -9770,7 +9769,6 @@ "MultiTenancySide": 3, "MenuGroup": "Kurs" }, - { "GroupName": "App.Intranet", "Name": "App.Intranet.SocialPost.Widget", @@ -11417,6 +11415,195 @@ "IsEnabled": true, "MultiTenancySide": 3, "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType", + "ParentName": null, + "DisplayName": "App.Maintenance.WorkcenterType", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Create", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Update", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Delete", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Export", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Import", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterType.Note", + "ParentName": "App.Maintenance.WorkcenterType", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus", + "ParentName": null, + "DisplayName": "App.Maintenance.WorkcenterStatus", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Create", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Update", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Delete", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Export", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Import", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.WorkcenterStatus.Note", + "ParentName": "App.Maintenance.WorkcenterStatus", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter", + "ParentName": null, + "DisplayName": "App.Maintenance.Workcenter", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Create", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Update", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Delete", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Export", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Import", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Import", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" + }, + { + "GroupName": "App.Maintenance", + "Name": "App.Maintenance.Workcenter.Note", + "ParentName": "App.Maintenance.Workcenter", + "DisplayName": "Note", + "IsEnabled": true, + "MultiTenancySide": 3, + "MenuGroup": "Erp" } ] -} +} \ No newline at end of file diff --git a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs index e20bbd3a..d5ca3e48 100644 --- a/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs +++ b/api/src/Erp.Platform.Domain.Shared/Enums/TableNameEnum.cs @@ -157,5 +157,9 @@ public enum TableNameEnum LossReason, Opportunity, Activity, - Competitor + Competitor, + WorkcenterType, + WorkcenterStatus, + Workcenter, + WorkcenterSpecification } diff --git a/api/src/Erp.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Erp.Platform.Domain.Shared/PlatformConsts.cs index cddb3f44..9c78b1f6 100644 --- a/api/src/Erp.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Erp.Platform.Domain.Shared/PlatformConsts.cs @@ -532,6 +532,11 @@ public static class PlatformConsts public const string OpportunityActivity = "list-opportunityactivity"; public const string OpportunityCompetitor = "list-opportunitycompetitor"; + //Maintenance + public const string WorkcenterType = "list-workcentertype"; + public const string WorkcenterStatus = "list-workcenterstatus"; + public const string Workcenter = "list-workcenter"; + } } diff --git a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs index a93ed1c5..21b3b5c8 100644 --- a/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs +++ b/api/src/Erp.Platform.Domain.Shared/TableNameResolver.cs @@ -185,6 +185,13 @@ public static class TableNameResolver { nameof(TableNameEnum.Activity), (TablePrefix.TenantByName, MenuPrefix.Crm) }, { nameof(TableNameEnum.Competitor), (TablePrefix.TenantByName, MenuPrefix.Crm) }, + // 🔹 MAINTENANCE + { nameof(TableNameEnum.WorkcenterType), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, + { nameof(TableNameEnum.WorkcenterStatus), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, + { nameof(TableNameEnum.Workcenter), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, + { nameof(TableNameEnum.WorkcenterSpecification), (TablePrefix.TenantByName, MenuPrefix.Maintenance) }, + + // 🔹 ACCOUNTING { nameof(TableNameEnum.Bank), (TablePrefix.TenantByName, MenuPrefix.Accounting) }, { nameof(TableNameEnum.BankAccount), (TablePrefix.TenantByName, MenuPrefix.Accounting) }, diff --git a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs index c7fd4c12..bd17ee87 100644 --- a/api/src/Erp.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Erp.Platform.Domain/Data/SeedConsts.cs @@ -520,6 +520,14 @@ public static class SeedConsts public const string RequestItem = Default + ".RequestItem"; } + public static class Maintenance + { + public const string Default = Prefix.App + ".Maintenance"; + public const string WorkcenterType = Default + ".WorkcenterType"; + public const string WorkcenterStatus = Default + ".WorkcenterStatus"; + public const string Workcenter = Default + ".Workcenter"; + } + public static class Accounting { public const string Default = Prefix.App + ".Accounting"; diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/Workcenter.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/Workcenter.cs new file mode 100644 index 00000000..a4420de2 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/Workcenter.cs @@ -0,0 +1,43 @@ +// Domain/Entities/PmWorkCenter.cs +using System; +using System.Collections.Generic; +using Erp.Platform.Entities; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class Workcenter : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + // İş Merkezi / Ekipman Bilgileri + public string Code { get; set; } + public string Name { get; set; } + public string? Description { get; set; } + public Guid? WorkcenterTypeId { get; set; } + public WorkcenterType? WorkcenterType { get; set; } + public string? Manufacturer { get; set; } + public string? Model { get; set; } + public string? SerialNumber { get; set; } + public DateTime InstallationDate { get; set; } + public DateTime? WarrantyExpiry { get; set; } + public string? Location { get; set; } + + public Guid? DepartmentId { get; set; } + public Department? Department { get; set; } + + public Guid? StatusId { get; set; } + public WorkcenterStatus? Status { get; set; } + + public string Criticality { get; set; } + public int Capacity { get; set; } + public decimal CostPerHour { get; set; } + public int SetupTime { get; set; } + public bool IsActive { get; set; } + + public ICollection Specifications { get; set; } + // public virtual ICollection MaintenancePlans { get; set; } + // public virtual ICollection WorkOrders { get; set; } + // public virtual ICollection DownTimeHistory { get; set; } +} diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterSpecification.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterSpecification.cs new file mode 100644 index 00000000..38aaf9e4 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterSpecification.cs @@ -0,0 +1,23 @@ +// Domain/Entities/PmWorkCenterSpecification.cs +using System; +using Erp.Platform.Entities; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class WorkcenterSpecification : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + // İlişkisel alan + public Guid WorkcenterId { get; set; } + public virtual Workcenter Workcenter { get; set; } + + // Özellik detayları + public string SpecificationName { get; set; } + public string SpecificationValue { get; set; } + public Guid UomId { get; set; } + public Uom Uom { get; set; } + public bool IsRequired { get; set; } +} diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterStatus.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterStatus.cs new file mode 100644 index 00000000..03324d97 --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterStatus.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class WorkcenterStatus : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + public ICollection Workcenters { get; set; } +} + diff --git a/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterType.cs b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterType.cs new file mode 100644 index 00000000..b8c1906f --- /dev/null +++ b/api/src/Erp.Platform.Domain/Entities/Tenant/Maintenance/WorkcenterType.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.MultiTenancy; + +namespace Erp.Platform.Entities; + +public class WorkcenterType : FullAuditedEntity, IMultiTenant +{ + public Guid? TenantId { get; set; } + + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } + + public ICollection Workcenters { get; set; } +} + diff --git a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs index 4ffbd24a..8ccededf 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/EntityFrameworkCore/PlatformDbContext.cs @@ -231,6 +231,13 @@ public class PlatformDbContext : public DbSet BankAccounts { get; set; } #endregion + #region Maintenance + public DbSet WorkcenterTypes { get; set; } + public DbSet WorkcenterStatuses { get; set; } + public DbSet Workcenters { get; set; } + public DbSet WorkcenterSpecifications { get; set; } + #endregion + public PlatformDbContext(DbContextOptions options) : base(options) { @@ -2672,7 +2679,76 @@ public class PlatformDbContext : .HasForeignKey(x => x.RequestId) .OnDelete(DeleteBehavior.Cascade); }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkcenterType)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.Name).IsRequired().HasMaxLength(50); + b.Property(x => x.Description).HasMaxLength(500); + b.Property(x => x.IsActive).HasDefaultValue(true); + }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkcenterStatus)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.Name).IsRequired().HasMaxLength(50); + b.Property(x => x.Description).HasMaxLength(500); + b.Property(x => x.IsActive).HasDefaultValue(true); + }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.Workcenter)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.Code).IsRequired().HasMaxLength(100); + b.Property(x => x.Name).IsRequired().HasMaxLength(200); + b.Property(x => x.Description).HasMaxLength(500); + b.Property(x => x.WorkcenterTypeId).IsRequired(); + b.Property(x => x.Manufacturer).HasMaxLength(200); + b.Property(x => x.Model).HasMaxLength(100); + b.Property(x => x.SerialNumber).HasMaxLength(100); + b.Property(x => x.InstallationDate).IsRequired(); + b.Property(x => x.Location).HasMaxLength(250); + + b.Property(x => x.DepartmentId).IsRequired(); + b.Property(x => x.StatusId).IsRequired(); + + b.Property(x => x.Criticality).HasMaxLength(10); + b.Property(x => x.Capacity).HasDefaultValue(0); + b.Property(x => x.CostPerHour).HasPrecision(18, 2).HasDefaultValue(0); + b.Property(x => x.SetupTime).HasDefaultValue(0); + b.Property(x => x.IsActive).HasDefaultValue(true); + + b.HasOne(x => x.WorkcenterType) + .WithMany(x => x.Workcenters) + .HasForeignKey(x => x.WorkcenterTypeId) + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne(x => x.Status) + .WithMany(x => x.Workcenters) + .HasForeignKey(x => x.StatusId) + .OnDelete(DeleteBehavior.Restrict); + }); + + builder.Entity(b => + { + b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.WorkcenterSpecification)), Prefix.DbSchema); + b.ConfigureByConvention(); + + b.Property(x => x.SpecificationName).IsRequired().HasMaxLength(200); + b.Property(x => x.SpecificationValue).IsRequired().HasMaxLength(200); + b.Property(x => x.UomId).IsRequired(); + b.Property(x => x.IsRequired).HasDefaultValue(false); + + b.HasOne(x => x.Workcenter) + .WithMany(x => x.Specifications) + .HasForeignKey(x => x.WorkcenterId) + .OnDelete(DeleteBehavior.Cascade); + }); } } - - diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.Designer.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.Designer.cs similarity index 97% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.Designer.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.Designer.cs index 4c4491a3..312a87b8 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.Designer.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Erp.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20251117212636_Initial")] + [Migration("20251118201005_Initial")] partial class Initial { /// @@ -11135,6 +11135,317 @@ namespace Erp.Platform.Migrations b.ToTable("Adm_T_WorkHour", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Capacity") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CostPerHour") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Criticality") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("InstallationDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Location") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Manufacturer") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Model") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("SerialNumber") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SetupTime") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("WarrantyExpiry") + .HasColumnType("datetime2"); + + b.Property("WorkcenterTypeId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("StatusId"); + + b.HasIndex("WorkcenterTypeId"); + + b.ToTable("Mnt_T_Workcenter", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterSpecification", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRequired") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("SpecificationName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("SpecificationValue") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UomId") + .HasColumnType("uniqueidentifier"); + + b.Property("WorkcenterId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UomId"); + + b.HasIndex("WorkcenterId"); + + b.ToTable("Mnt_T_WorkcenterSpecification", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterStatus", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Mnt_T_WorkcenterStatus", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Mnt_T_WorkcenterType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumCategory", b => { b.Property("Id") @@ -14455,6 +14766,52 @@ namespace Erp.Platform.Migrations b.Navigation("Employee"); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.HasOne("Erp.Platform.Entities.Department", "Department") + .WithMany() + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkcenterStatus", "Status") + .WithMany("Workcenters") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkcenterType", "WorkcenterType") + .WithMany("Workcenters") + .HasForeignKey("WorkcenterTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Department"); + + b.Navigation("Status"); + + b.Navigation("WorkcenterType"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterSpecification", b => + { + b.HasOne("Erp.Platform.Entities.Uom", "Uom") + .WithMany() + .HasForeignKey("UomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.Workcenter", "Workcenter") + .WithMany("Specifications") + .HasForeignKey("WorkcenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Uom"); + + b.Navigation("Workcenter"); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumPost", b => { b.HasOne("Erp.Platform.Forum.ForumPost", "ParentPost") @@ -14952,6 +15309,21 @@ namespace Erp.Platform.Migrations b.Navigation("Uoms"); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.Navigation("Specifications"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterStatus", b => + { + b.Navigation("Workcenters"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterType", b => + { + b.Navigation("Workcenters"); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumCategory", b => { b.Navigation("Topics"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.cs similarity index 97% rename from api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.cs rename to api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.cs index 6c5f81a8..394248ab 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251117212636_Initial.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/20251118201005_Initial.cs @@ -1276,6 +1276,52 @@ namespace Erp.Platform.Migrations table.PrimaryKey("PK_Hr_T_Template360", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Mnt_T_WorkcenterStatus", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + IsActive = table.Column(type: "bit", nullable: false, defaultValue: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Mnt_T_WorkcenterStatus", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Mnt_T_WorkcenterType", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + IsActive = table.Column(type: "bit", nullable: false, defaultValue: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Mnt_T_WorkcenterType", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Net_T_EventCategory", columns: table => new @@ -4718,6 +4764,60 @@ namespace Erp.Platform.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "Mnt_T_Workcenter", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: false), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: true), + WorkcenterTypeId = table.Column(type: "uniqueidentifier", nullable: false), + Manufacturer = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Model = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + SerialNumber = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + InstallationDate = table.Column(type: "datetime2", nullable: false), + WarrantyExpiry = table.Column(type: "datetime2", nullable: true), + Location = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: true), + DepartmentId = table.Column(type: "uniqueidentifier", nullable: false), + StatusId = table.Column(type: "uniqueidentifier", nullable: false), + Criticality = table.Column(type: "nvarchar(10)", maxLength: 10, nullable: true), + Capacity = table.Column(type: "int", nullable: false, defaultValue: 0), + CostPerHour = table.Column(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m), + SetupTime = table.Column(type: "int", nullable: false, defaultValue: 0), + IsActive = table.Column(type: "bit", nullable: false, defaultValue: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Mnt_T_Workcenter", x => x.Id); + table.ForeignKey( + name: "FK_Mnt_T_Workcenter_Hr_T_Department_DepartmentId", + column: x => x.DepartmentId, + principalTable: "Hr_T_Department", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Mnt_T_Workcenter_Mnt_T_WorkcenterStatus_StatusId", + column: x => x.StatusId, + principalTable: "Mnt_T_WorkcenterStatus", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Mnt_T_Workcenter_Mnt_T_WorkcenterType_WorkcenterTypeId", + column: x => x.WorkcenterTypeId, + principalTable: "Mnt_T_WorkcenterType", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + migrationBuilder.CreateTable( name: "Scp_T_Approval", columns: table => new @@ -4838,6 +4938,42 @@ namespace Erp.Platform.Migrations principalColumn: "Id"); }); + migrationBuilder.CreateTable( + name: "Mnt_T_WorkcenterSpecification", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + WorkcenterId = table.Column(type: "uniqueidentifier", nullable: false), + SpecificationName = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + SpecificationValue = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: false), + UomId = table.Column(type: "uniqueidentifier", nullable: false), + IsRequired = table.Column(type: "bit", nullable: false, defaultValue: false), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Mnt_T_WorkcenterSpecification", x => x.Id); + table.ForeignKey( + name: "FK_Mnt_T_WorkcenterSpecification_Adm_T_Uom_UomId", + column: x => x.UomId, + principalTable: "Adm_T_Uom", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Mnt_T_WorkcenterSpecification_Mnt_T_Workcenter_WorkcenterId", + column: x => x.WorkcenterId, + principalTable: "Mnt_T_Workcenter", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "Scp_T_ApprovalStep", columns: table => new @@ -6210,6 +6346,31 @@ namespace Erp.Platform.Migrations table: "Hr_T_SurveyResponse", column: "SurveyId"); + migrationBuilder.CreateIndex( + name: "IX_Mnt_T_Workcenter_DepartmentId", + table: "Mnt_T_Workcenter", + column: "DepartmentId"); + + migrationBuilder.CreateIndex( + name: "IX_Mnt_T_Workcenter_StatusId", + table: "Mnt_T_Workcenter", + column: "StatusId"); + + migrationBuilder.CreateIndex( + name: "IX_Mnt_T_Workcenter_WorkcenterTypeId", + table: "Mnt_T_Workcenter", + column: "WorkcenterTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_Mnt_T_WorkcenterSpecification_UomId", + table: "Mnt_T_WorkcenterSpecification", + column: "UomId"); + + migrationBuilder.CreateIndex( + name: "IX_Mnt_T_WorkcenterSpecification_WorkcenterId", + table: "Mnt_T_WorkcenterSpecification", + column: "WorkcenterId"); + migrationBuilder.CreateIndex( name: "IX_Net_B_Meal_BranchId", table: "Net_B_Meal", @@ -6893,6 +7054,9 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Hr_T_SurveyQuestionOption"); + migrationBuilder.DropTable( + name: "Mnt_T_WorkcenterSpecification"); + migrationBuilder.DropTable( name: "Net_B_Meal"); @@ -7100,6 +7264,9 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Hr_T_SurveyQuestion"); + migrationBuilder.DropTable( + name: "Mnt_T_Workcenter"); + migrationBuilder.DropTable( name: "Net_T_Training"); @@ -7181,6 +7348,12 @@ namespace Erp.Platform.Migrations migrationBuilder.DropTable( name: "Hr_T_Survey"); + migrationBuilder.DropTable( + name: "Mnt_T_WorkcenterStatus"); + + migrationBuilder.DropTable( + name: "Mnt_T_WorkcenterType"); + migrationBuilder.DropTable( name: "Net_T_EventCategory"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index a040d627..545e0546 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -11132,6 +11132,317 @@ namespace Erp.Platform.Migrations b.ToTable("Adm_T_WorkHour", (string)null); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Capacity") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("Code") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CostPerHour") + .ValueGeneratedOnAdd() + .HasPrecision(18, 2) + .HasColumnType("decimal(18,2)") + .HasDefaultValue(0m); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("Criticality") + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("InstallationDate") + .HasColumnType("datetime2"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Location") + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Manufacturer") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Model") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("SerialNumber") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SetupTime") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.Property("StatusId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("WarrantyExpiry") + .HasColumnType("datetime2"); + + b.Property("WorkcenterTypeId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("StatusId"); + + b.HasIndex("WorkcenterTypeId"); + + b.ToTable("Mnt_T_Workcenter", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterSpecification", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRequired") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("SpecificationName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("SpecificationValue") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UomId") + .HasColumnType("uniqueidentifier"); + + b.Property("WorkcenterId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UomId"); + + b.HasIndex("WorkcenterId"); + + b.ToTable("Mnt_T_WorkcenterSpecification", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterStatus", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Mnt_T_WorkcenterStatus", (string)null); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("IsActive") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(true); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Mnt_T_WorkcenterType", (string)null); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumCategory", b => { b.Property("Id") @@ -14452,6 +14763,52 @@ namespace Erp.Platform.Migrations b.Navigation("Employee"); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.HasOne("Erp.Platform.Entities.Department", "Department") + .WithMany() + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkcenterStatus", "Status") + .WithMany("Workcenters") + .HasForeignKey("StatusId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.WorkcenterType", "WorkcenterType") + .WithMany("Workcenters") + .HasForeignKey("WorkcenterTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Department"); + + b.Navigation("Status"); + + b.Navigation("WorkcenterType"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterSpecification", b => + { + b.HasOne("Erp.Platform.Entities.Uom", "Uom") + .WithMany() + .HasForeignKey("UomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Erp.Platform.Entities.Workcenter", "Workcenter") + .WithMany("Specifications") + .HasForeignKey("WorkcenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Uom"); + + b.Navigation("Workcenter"); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumPost", b => { b.HasOne("Erp.Platform.Forum.ForumPost", "ParentPost") @@ -14949,6 +15306,21 @@ namespace Erp.Platform.Migrations b.Navigation("Uoms"); }); + modelBuilder.Entity("Erp.Platform.Entities.Workcenter", b => + { + b.Navigation("Specifications"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterStatus", b => + { + b.Navigation("Workcenters"); + }); + + modelBuilder.Entity("Erp.Platform.Entities.WorkcenterType", b => + { + b.Navigation("Workcenters"); + }); + modelBuilder.Entity("Erp.Platform.Forum.ForumCategory", b => { b.Navigation("Topics"); diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json index f80aea13..3ed3489c 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/Seeds/TenantData.json @@ -4803,5 +4803,115 @@ "amountThreshold": "100000", "isActive": true } + ], + "WorkcenterTypes": [ + { + "code": "CNC", + "name": "CNC Makineleri", + "description": "Bilgisayar kontrollü kesim ve şekillendirme makineleri", + "isActive": true + }, + { + "code": "COMP", + "name": "Kompresörler", + "description": "Hava ve gaz sıkıştırma makineleri", + "isActive": true + }, + { + "code": "CONV", + "name": "Konveyörler", + "description": "Malzeme taşıma sistemleri", + "isActive": true + }, + { + "code": "WELD", + "name": "Kaynak Makineleri", + "description": "Metal parçaların birleştirilmesi için kullanılan makineler", + "isActive": true + } + ], + "WorkcenterStatuses": [ + { + "code": "OP", + "name": "Operational", + "description": "İş Merkezi Operatif Durumda", + "isActive": true + }, + { + "code": "UM", + "name": "Under Maintenance", + "description": "İş Merkezi Bakımda", + "isActive": true + }, + { + "code": "OO", + "name": "Out of Order", + "description": "İş Merkezi Arızalı", + "isActive": true + }, + { + "code": "RT", + "name": "Retired", + "description": "İş Merkezi Kullanımdan Kaldırıldı", + "isActive": true + } + ], + "Workcenters": [ + { + "code": "CNC-001", + "name": "CNC Torna Tezgahı", + "description": "Yüksek hassasiyetli CNC torna tezgahı", + "workcenterTypeCode": "CNC", + "manufacturer": "HAAS Automation", + "model": "ST-30", + "serialNumber": "SN123456789", + "installationDate": "2022-03-15T00:00:00", + "warrantyExpiry": "2025-03-15T00:00:00", + "location": "Atölye A - Hat 1", + "departmentCode": "ÜRT", + "statusCode": "OP", + "criticality": "High", + "capacity": 8, + "costPerHour": 75, + "setupTime": 15, + "isActive": true + }, + { + "code": "COMP-001", + "name": "Hava Kompresörü", + "description": "Endüstriyel hava kompresörü sistemi", + "workcenterTypeCode": "COMP", + "manufacturer": "Atlas Copco", + "model": "GA55VSD+", + "serialNumber": "AC987654321", + "installationDate": "2021-08-20T00:00:00", + "warrantyExpiry": "2024-08-20T00:00:00", + "location": "Kompresör Odası", + "departmentCode": "BAK", + "statusCode": "UM", + "criticality": "Critical", + "capacity": 8, + "costPerHour": 85, + "setupTime": 20, + "isActive": true + }, + { + "code": "CONV-001", + "name": "Konveyör Sistemi", + "description": "Ana hat konveyör sistemi", + "workcenterTypeCode": "CONV", + "manufacturer": "Siemens", + "model": "SIMATIC S7-1500", + "serialNumber": "SM112233445", + "installationDate": "2020-11-10T00:00:00", + "location": "Ana Üretim Hattı", + "departmentCode": "KAL", + "statusCode": "OO", + "criticality": "Medium", + "capacity": 8, + "costPerHour": 85, + "setupTime": 20, + "isActive": true + } ] } \ No newline at end of file diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs index 13b0dfdf..29c35880 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantDataSeeder.cs @@ -106,6 +106,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency private readonly OrganizationUnitManager _organizationUnitManager; private readonly IRepository _requestTypeRepository; private readonly IRepository _approvalRepository; + private readonly IRepository _workcenterTypeRepository; + private readonly IRepository _workcenterStatusRepository; + private readonly IRepository _workcenterRepository; public TenantDataSeeder( IClock clock, @@ -194,7 +197,10 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IRepository organizationUnitRepository, OrganizationUnitManager organizationUnitManager, IRepository requestTypeRepository, - IRepository approvalRepository + IRepository approvalRepository, + IRepository workcenterTypeRepository, + IRepository workcenterStatusRepository, + IRepository workcenterRepository ) { _clock = clock; @@ -285,6 +291,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency _organizationUnitManager = organizationUnitManager; _requestTypeRepository = requestTypeRepository; _approvalRepository = approvalRepository; + _workcenterTypeRepository = workcenterTypeRepository; + _workcenterStatusRepository = workcenterStatusRepository; + _workcenterRepository = workcenterRepository; } private static IConfigurationRoot BuildConfiguration() @@ -1911,6 +1920,68 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency IsActive = item.IsActive }); } + + foreach (var item in items.WorkcenterTypes) + { + var exists = await _workcenterTypeRepository.AnyAsync(x => x.Code == item.Code); + if (exists) + continue; + + await _workcenterTypeRepository.InsertAsync(new WorkcenterType + { + Code = item.Code, + Name = item.Name, + Description = item.Description, + IsActive = item.IsActive + }, autoSave: true); + } + + foreach (var item in items.WorkcenterStatuses) + { + var exists = await _workcenterStatusRepository.AnyAsync(x => x.Code == item.Code); + if (exists) + continue; + + await _workcenterStatusRepository.InsertAsync(new WorkcenterStatus + { + Code = item.Code, + Name = item.Name, + Description = item.Description, + IsActive = item.IsActive + }, autoSave: true); + } + + foreach (var item in items.Workcenters) + { + var exists = await _workcenterRepository.AnyAsync(x => x.Code == item.Code); + if (exists) + continue; + + var department = await _departmentRepository.FirstOrDefaultAsync(x => x.Code == item.DepartmentCode); + var workcenterType = await _workcenterTypeRepository.FirstOrDefaultAsync(x => x.Code == item.WorkcenterTypeCode); + var status = await _workcenterStatusRepository.FirstOrDefaultAsync(x => x.Code == item.StatusCode); + + await _workcenterRepository.InsertAsync(new Workcenter + { + Code = item.Code, + Name = item.Name, + Description = item.Description, + WorkcenterTypeId = workcenterType?.Id, + Manufacturer = item.Manufacturer, + Model = item.Model, + SerialNumber = item.SerialNumber, + InstallationDate = item.InstallationDate, + WarrantyExpiry = item.WarrantyExpiry, + Location = item.Location, + DepartmentId = department?.Id, + StatusId = status?.Id, + Criticality = item.Criticality, + Capacity = item.Capacity, + CostPerHour = item.CostPerHour, + SetupTime = item.SetupTime, + IsActive = item.IsActive + }, autoSave: true); + } } } diff --git a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs index 708024b0..09a3c24c 100644 --- a/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs +++ b/api/src/Erp.Platform.EntityFrameworkCore/Tenants/TenantSeederDto.cs @@ -96,6 +96,50 @@ public class TenantSeederDto public List CustomerSegments { get; set; } public List LossReasons { get; set; } public List OrganizationUnits { get; set; } + + //Maintenance + public List WorkcenterTypes { get; set; } + public List WorkcenterStatuses { get; set; } + public List Workcenters { get; set; } +} + +public class WorkcenterSeedDto +{ + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public string WorkcenterTypeCode { get; set; } + public string Manufacturer { get; set; } + public string Model { get; set; } + public string SerialNumber { get; set; } + public DateTime InstallationDate { get; set; } + public DateTime WarrantyExpiry { get; set; } + public string Location { get; set; } + + public string DepartmentCode { get; set; } + public string StatusCode { get; set; } + + public string Criticality { get; set; } + public int Capacity { get; set; } + public decimal CostPerHour { get; set; } + public int SetupTime { get; set; } + public bool IsActive { get; set; } +} + +public class WorkcenterTypeSeedDto +{ + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } +} + +public class WorkcenterStatusSeedDto +{ + public string Code { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public bool IsActive { get; set; } } public class ApprovalSeedDto diff --git a/ui/src/mocks/mockWorkCenterTypes.ts b/ui/src/mocks/mockWorkCenterTypes.ts deleted file mode 100644 index dbcac857..00000000 --- a/ui/src/mocks/mockWorkCenterTypes.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PmWorkCenterType } from "../types/pm"; - -export const mockWorkCenterTypes: PmWorkCenterType[] = [ - { - id: "1", - code: "CNC", - name: "CNC Makineleri", - category: "Üretim", - isActive: true, - }, - { - id: "2", - code: "COMP", - name: "Kompresörler", - category: "Altyapı", - isActive: true, - }, - { - id: "3", - code: "CONV", - name: "Konveyörler", - category: "Taşıma", - isActive: true, - }, - { - id: "4", - code: "WELD", - name: "Kaynak Makineleri", - category: "Üretim", - isActive: true, - }, -]; diff --git a/ui/src/mocks/mockWorkCenters.ts b/ui/src/mocks/mockWorkCenters.ts index 01cc63ca..089ff127 100644 --- a/ui/src/mocks/mockWorkCenters.ts +++ b/ui/src/mocks/mockWorkCenters.ts @@ -1,6 +1,5 @@ import { CriticalityLevelEnum, PmWorkCenter, WorkCenterStatusEnum } from '../types/pm' import { mockWorkCenterMachineTypes } from './mockWorkCenterMachineTypes' -import { mockWorkCenterTypes } from './mockWorkCenterTypes' export const mockWorkCenters: PmWorkCenter[] = [ { @@ -8,8 +7,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'CNC-001', name: 'CNC Torna Tezgahı', description: 'Yüksek hassasiyetli CNC torna tezgahı', - workCenterId: '1', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '1')!, manufacturer: 'HAAS Automation', model: 'ST-30', serialNumber: 'SN123456789', @@ -54,8 +51,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'COMP-001', name: 'Hava Kompresörü', description: 'Endüstriyel hava kompresörü sistemi', - workCenterId: '2', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '2')!, manufacturer: 'Atlas Copco', model: 'GA55VSD+', serialNumber: 'AC987654321', @@ -100,8 +95,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'CONV-001', name: 'Konveyör Sistemi', description: 'Ana hat konveyör sistemi', - workCenterId: '3', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '3')!, manufacturer: 'Siemens', model: 'SIMATIC S7-1500', serialNumber: 'SM112233445', @@ -145,8 +138,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'KELD-001', name: 'Kaynak Makinesi', description: 'Otomatik robot kaynak sistemi', - workCenterId: '4', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, manufacturer: 'KUKA', model: 'KR 60-3', serialNumber: 'KU556677889', @@ -191,8 +182,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'WELL-001', name: 'Yıkama Makinesi', description: 'Otomatik robot kaynak sistemi', - workCenterId: '4', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, manufacturer: 'KUKA', model: 'KR 60-3', serialNumber: 'KU556677889', @@ -237,8 +226,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'KELD-001', name: 'Ram Makinesi', description: 'Otomatik robot kaynak sistemi', - workCenterId: '4', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, manufacturer: 'KUKA', model: 'KR 60-3', serialNumber: 'KU556677889', @@ -283,8 +270,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'WEID-001', name: 'Sarma Makinesi', description: 'Otomatik robot kaynak sistemi', - workCenterId: '4', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, manufacturer: 'KUKA', model: 'KR 60-3', serialNumber: 'KU556677889', @@ -329,8 +314,6 @@ export const mockWorkCenters: PmWorkCenter[] = [ code: 'KEL-001', name: 'Robot Kaynak Makinesi', description: 'Otomatik robot kaynak sistemi', - workCenterId: '4', - workCenterType: mockWorkCenterTypes.find((wct) => wct.code === '4')!, manufacturer: 'KUKA', model: 'KR 60-3', serialNumber: 'KU556677889', diff --git a/ui/src/types/pm.ts b/ui/src/types/pm.ts index c5876397..077a6e33 100644 --- a/ui/src/types/pm.ts +++ b/ui/src/types/pm.ts @@ -10,8 +10,6 @@ export interface PmWorkCenter { code: string name: string description?: string - workCenterId: string - workCenterType?: PmWorkCenterType manufacturer?: string model?: string serialNumber?: string