Project Task güncellemesi

This commit is contained in:
Sedat ÖZTÜRK 2025-11-27 11:49:09 +03:00
parent 43875b9af8
commit 58ab8661fb
18 changed files with 2208 additions and 266 deletions

View file

@ -9579,16 +9579,28 @@
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Project.ProjectType", "key": "App.Project.Type",
"tr": "Proje Türleri", "tr": "Proje Türleri",
"en": "Project Types" "en": "Project Types"
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Project.ProjectStatus", "key": "App.Project.Status",
"tr": "Proje Durumları", "tr": "Proje Durumları",
"en": "Project Statuses" "en": "Project Statuses"
}, },
{
"resourceName": "Platform",
"key": "App.Project.Category",
"tr": "Proje Kategorileri",
"en": "Project Categories"
},
{
"resourceName": "Platform",
"key": "App.Project.Risk",
"tr": "Proje Riskleri",
"en": "Project Risks"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Project.Projects", "key": "App.Project.Projects",
@ -9597,19 +9609,19 @@
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Project.Tasks", "key": "App.Project.Phase",
"tr": "Görevler",
"en": "Tasks"
},
{
"resourceName": "Platform",
"key": "App.Project.Phases",
"tr": "Aşamalar", "tr": "Aşamalar",
"en": "Phases" "en": "Phases"
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Project.Activities", "key": "App.Project.Task",
"tr": "Görevler",
"en": "Tasks"
},
{
"resourceName": "Platform",
"key": "App.Project.Activity",
"tr": "Aktiviteler", "tr": "Aktiviteler",
"en": "Activities" "en": "Activities"
}, },

View file

@ -46,7 +46,7 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency
var listFormName = String.Empty; var listFormName = String.Empty;
#region Project Type #region Project Type
listFormName = AppCodes.Project.ProjectType; listFormName = AppCodes.Project.Type;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{ {
var listForm = await _listFormRepository.InsertAsync( var listForm = await _listFormRepository.InsertAsync(
@ -169,7 +169,7 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency
#endregion #endregion
#region Project Status #region Project Status
listFormName = AppCodes.Project.ProjectStatus; listFormName = AppCodes.Project.Status;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName)) if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{ {
var listForm = await _listFormRepository.InsertAsync( var listForm = await _listFormRepository.InsertAsync(
@ -688,6 +688,604 @@ public class ListFormSeeder_Project : IDataSeedContributor, ITransientDependency
#endregion #endregion
} }
#endregion #endregion
#region Project Risk
listFormName = AppCodes.Project.Risk;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{
var listForm = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.List,
IsSubForm = false,
ShowNote = true,
LayoutJson = DefaultLayoutJson,
CultureName = LanguageCodes.En,
ListFormCode = listFormName,
Name = listFormName,
Title = listFormName,
DataSourceCode = SeedConsts.DataSources.DefaultCode,
IsTenant = true,
IsBranch = false,
IsOrganizationUnit = false,
Description = listFormName,
SelectCommandType = SelectCommandTypeEnum.Table,
SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectRisk)),
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
DefaultFilter = DefaultFilterJson,
SortMode = GridOptions.SortModeSingle,
FilterRowJson = DefaultFilterRowJson,
HeaderFilterJson = DefaultHeaderFilterJson,
SearchPanelJson = DefaultSearchPanelJson,
GroupPanelJson = DefaultGroupPanelJson,
SelectionJson = DefaultSelectionSingleJson,
ColumnOptionJson = DefaultColumnOptionJson,
PermissionJson = DefaultPermissionJson(listFormName),
DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.ProjectRisk)),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson,
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 300, true, true, true, true, false),
InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson,
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{
new() {
Order=1, ColCount=1, ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="Name", ColSpan = 1, IsRequired =true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField="Description", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField="IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
}
);
#region Project Type 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 = "Name",
Width = 300,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
SortIndex = 1,
SortDirection = GridColumnOptions.SortOrderAsc,
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 = 3,
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 = 4,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
]);
#endregion
}
#endregion
#region Project Category
listFormName = AppCodes.Project.Category;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{
var listForm = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.List,
IsSubForm = false,
ShowNote = true,
LayoutJson = DefaultLayoutJson,
CultureName = LanguageCodes.En,
ListFormCode = listFormName,
Name = listFormName,
Title = listFormName,
DataSourceCode = SeedConsts.DataSources.DefaultCode,
IsTenant = true,
IsBranch = false,
IsOrganizationUnit = false,
Description = listFormName,
SelectCommandType = SelectCommandTypeEnum.Table,
SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectCategory)),
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
DefaultFilter = DefaultFilterJson,
SortMode = GridOptions.SortModeSingle,
FilterRowJson = DefaultFilterRowJson,
HeaderFilterJson = DefaultHeaderFilterJson,
SearchPanelJson = DefaultSearchPanelJson,
GroupPanelJson = DefaultGroupPanelJson,
SelectionJson = DefaultSelectionSingleJson,
ColumnOptionJson = DefaultColumnOptionJson,
PermissionJson = DefaultPermissionJson(listFormName),
DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.ProjectCategory)),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson,
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 300, true, true, true, true, false),
InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson,
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{
new() {
Order=1, ColCount=1, ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="Name", ColSpan = 1, IsRequired =true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 2, DataField="Description", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField="IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
}
);
#region Project Category 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 = "Name",
Width = 300,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
SortIndex = 1,
SortDirection = GridColumnOptions.SortOrderAsc,
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 = 3,
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 = 4,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
]);
#endregion
}
#endregion
#region Project Phase
listFormName = AppCodes.Project.Phase;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{
var listForm = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.List,
IsSubForm = false,
ShowNote = true,
LayoutJson = DefaultLayoutJson,
CultureName = LanguageCodes.En,
ListFormCode = listFormName,
Name = listFormName,
Title = listFormName,
DataSourceCode = SeedConsts.DataSources.DefaultCode,
IsTenant = true,
IsBranch = false,
IsOrganizationUnit = false,
Description = listFormName,
SelectCommandType = SelectCommandTypeEnum.Table,
SelectCommand = TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectPhase)),
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
DefaultFilter = DefaultFilterJson,
SortMode = GridOptions.SortModeSingle,
FilterRowJson = DefaultFilterRowJson,
HeaderFilterJson = DefaultHeaderFilterJson,
SearchPanelJson = DefaultSearchPanelJson,
GroupPanelJson = DefaultGroupPanelJson,
SelectionJson = DefaultSelectionSingleJson,
ColumnOptionJson = DefaultColumnOptionJson,
PermissionJson = DefaultPermissionJson(listFormName),
DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.ProjectPhase)),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson,
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 800, 500, true, true, true, true, false),
InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson,
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{
new() {
Order=1, ColCount=2, ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="ProjectId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 2, DataField="ProjectCategoryId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 3, DataField="Code", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 4, DataField="Name", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 5, DataField="Description", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 6, DataField="StatusId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 7, DataField="Sequence", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 8, DataField="StartDate", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 9, DataField="EndDate", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 10, DataField="Budget", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 11, DataField="ActualStartDate", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 12, DataField="ActualEndDate", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 13, DataField="ActualCost", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 14, DataField="Progress", ColSpan = 1, EditorType2 = EditorTypes.dxSlider },
new EditingFormItemDto { Order = 15, DataField="Risks", ColSpan = 1, EditorType2 = EditorTypes.dxTagBox },
new EditingFormItemDto { Order = 16, DataField="IsActive", ColSpan = 1, EditorType2 = EditorTypes.dxCheckBox },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "Budget", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "Sequence", FieldDbType = DbType.Int32, Value = "1", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "ActualCost", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "StartDate", FieldDbType = DbType.Date, Value = "@DATE", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() { FieldName = "Progress", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "IsActive", FieldDbType = DbType.Boolean, Value = "true", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
}
);
#region Project Phase 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.Guid,
FieldName = "ProjectId",
Width = 200,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Projects), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "ProjectCategoryId",
Width = 100,
ListOrderNo = 3,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectCategory), "Id", "Name"),
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 = 4,
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 = 200,
ListOrderNo = 5,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
SortIndex = 1,
SortDirection = GridColumnOptions.SortOrderAsc,
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 = 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.Guid,
FieldName = "StatusId",
Width = 100,
ListOrderNo = 7,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectStatus), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int32,
FieldName = "Sequence",
Width = 100,
ListOrderNo = 8,
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.Date,
FieldName = "StartDate",
Width = 100,
ListOrderNo = 9,
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.Date,
FieldName = "EndDate",
Width = 100,
ListOrderNo = 10,
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.Decimal,
FieldName = "Budget",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 11,
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.Date,
FieldName = "ActualStartDate",
Width = 100,
ListOrderNo = 12,
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 = "ActualEndDate",
Width = 100,
ListOrderNo = 13,
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 = "ActualCost",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 14,
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 = "Progress",
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.String,
FieldName = "Risks",
Width = 300,
ListOrderNo = 16,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.ProjectRisk), "Id", "Name"),
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Boolean,
FieldName = "IsActive",
Width = 100,
ListOrderNo = 17,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
]);
#endregion
}
#endregion
} }
} }

View file

@ -2576,29 +2576,49 @@
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.ProjectType", "Code": "App.Project.Type",
"DisplayName": "App.Project.ProjectType", "DisplayName": "App.Project.Type",
"Order": 1, "Order": 1,
"Url": "/admin/list/App.Project.ProjectType", "Url": "/admin/list/App.Project.Type",
"Icon": "FcWorkflow", "Icon": "FcWorkflow",
"RequiredPermissionName": "App.Project.ProjectType", "RequiredPermissionName": "App.Project.Type",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.ProjectStatus", "Code": "App.Project.Status",
"DisplayName": "App.Project.ProjectStatus", "DisplayName": "App.Project.Status",
"Order": 2, "Order": 2,
"Url": "/admin/list/App.Project.ProjectStatus", "Url": "/admin/list/App.Project.Status",
"Icon": "FcTimeline", "Icon": "FcTimeline",
"RequiredPermissionName": "App.Project.ProjectStatus", "RequiredPermissionName": "App.Project.Status",
"IsDisabled": false
},
{
"ParentCode": "App.Project",
"Code": "App.Project.Category",
"DisplayName": "App.Project.Category",
"Order": 3,
"Url": "/admin/list/App.Project.Category",
"Icon": "FcTimeline",
"RequiredPermissionName": "App.Project.Category",
"IsDisabled": false
},
{
"ParentCode": "App.Project",
"Code": "App.Project.Risk",
"DisplayName": "App.Project.Risk",
"Order": 4,
"Url": "/admin/list/App.Project.Risk",
"Icon": "FcHighPriority",
"RequiredPermissionName": "App.Project.Risk",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.Projects", "Code": "App.Project.Projects",
"DisplayName": "App.Project.Projects", "DisplayName": "App.Project.Projects",
"Order": 3, "Order": 5,
"Url": "/admin/list/App.Project.Projects", "Url": "/admin/list/App.Project.Projects",
"Icon": "FcTodoList", "Icon": "FcTodoList",
"RequiredPermissionName": "App.Project.Projects", "RequiredPermissionName": "App.Project.Projects",
@ -2606,39 +2626,39 @@
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.Phases", "Code": "App.Project.Phase",
"DisplayName": "App.Project.Phases", "DisplayName": "App.Project.Phase",
"Order": 4, "Order": 6,
"Url": "/admin/projects/phases", "Url": "/admin/list/App.Project.Phase",
"Icon": "FcParallelTasks", "Icon": "FcParallelTasks",
"RequiredPermissionName": "App.Project.Phases", "RequiredPermissionName": "App.Project.Phase",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.Tasks", "Code": "App.Project.Task",
"DisplayName": "App.Project.Tasks", "DisplayName": "App.Project.Task",
"Order": 5, "Order": 7,
"Url": "/admin/projects/tasks", "Url": "/admin/projects/tasks",
"Icon": "FcBullish", "Icon": "FcBullish",
"RequiredPermissionName": "App.Project.Tasks", "RequiredPermissionName": "App.Project.Task",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.Activities", "Code": "App.Project.Activity",
"DisplayName": "App.Project.Activities", "DisplayName": "App.Project.Activity",
"Order": 6, "Order": 8,
"Url": "/admin/projects/activities", "Url": "/admin/projects/activities",
"Icon": "FcPlanner", "Icon": "FcPlanner",
"RequiredPermissionName": "App.Project.Activities", "RequiredPermissionName": "App.Project.Activity",
"IsDisabled": false "IsDisabled": false
}, },
{ {
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.Workload", "Code": "App.Project.Workload",
"DisplayName": "App.Project.Workload", "DisplayName": "App.Project.Workload",
"Order": 7, "Order": 9,
"Url": "/admin/projects/workload", "Url": "/admin/projects/workload",
"Icon": "FcFlowChart", "Icon": "FcFlowChart",
"RequiredPermissionName": "App.Project.Workload", "RequiredPermissionName": "App.Project.Workload",
@ -2648,7 +2668,7 @@
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.CostTracking", "Code": "App.Project.CostTracking",
"DisplayName": "App.Project.CostTracking", "DisplayName": "App.Project.CostTracking",
"Order": 8, "Order": 10,
"Url": "/admin/projects/cost-tracking", "Url": "/admin/projects/cost-tracking",
"Icon": "FcMoneyTransfer", "Icon": "FcMoneyTransfer",
"RequiredPermissionName": "App.Project.CostTracking", "RequiredPermissionName": "App.Project.CostTracking",
@ -2658,7 +2678,7 @@
"ParentCode": "App.Project", "ParentCode": "App.Project",
"Code": "App.Project.DailyUpdates", "Code": "App.Project.DailyUpdates",
"DisplayName": "App.Project.DailyUpdates", "DisplayName": "App.Project.DailyUpdates",
"Order": 9, "Order": 11,
"Url": "/admin/projects/daily-updates", "Url": "/admin/projects/daily-updates",
"Icon": "FcConferenceCall", "Icon": "FcConferenceCall",
"RequiredPermissionName": "App.Project.DailyUpdates", "RequiredPermissionName": "App.Project.DailyUpdates",

View file

@ -8016,17 +8016,17 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType", "Name": "App.Project.Type",
"ParentName": null, "ParentName": null,
"DisplayName": "App.Project.ProjectType", "DisplayName": "App.Project.Type",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Create", "Name": "App.Project.Type.Create",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8034,8 +8034,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Update", "Name": "App.Project.Type.Update",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8043,8 +8043,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Delete", "Name": "App.Project.Type.Delete",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8052,8 +8052,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Export", "Name": "App.Project.Type.Export",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8061,8 +8061,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Import", "Name": "App.Project.Type.Import",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8070,8 +8070,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectType.Note", "Name": "App.Project.Type.Note",
"ParentName": "App.Project.ProjectType", "ParentName": "App.Project.Type",
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8079,17 +8079,17 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus", "Name": "App.Project.Status",
"ParentName": null, "ParentName": null,
"DisplayName": "App.Project.ProjectStatus", "DisplayName": "App.Project.Status",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Create", "Name": "App.Project.Status.Create",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8097,8 +8097,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Update", "Name": "App.Project.Status.Update",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8106,8 +8106,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Delete", "Name": "App.Project.Status.Delete",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8115,8 +8115,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Export", "Name": "App.Project.Status.Export",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8124,8 +8124,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Import", "Name": "App.Project.Status.Import",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8133,13 +8133,142 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.ProjectStatus.Note", "Name": "App.Project.Status.Note",
"ParentName": "App.Project.ProjectStatus", "ParentName": "App.Project.Status",
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{
"GroupName": "App.Project",
"Name": "App.Project.Category",
"ParentName": null,
"DisplayName": "App.Project.Category",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Create",
"ParentName": "App.Project.Category",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Update",
"ParentName": "App.Project.Category",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Delete",
"ParentName": "App.Project.Category",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Export",
"ParentName": "App.Project.Category",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Import",
"ParentName": "App.Project.Category",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Category.Note",
"ParentName": "App.Project.Category",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk",
"ParentName": null,
"DisplayName": "App.Project.Risk",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Create",
"ParentName": "App.Project.Risk",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Update",
"ParentName": "App.Project.Risk",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Delete",
"ParentName": "App.Project.Risk",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Export",
"ParentName": "App.Project.Risk",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Import",
"ParentName": "App.Project.Risk",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Risk.Note",
"ParentName": "App.Project.Risk",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Projects", "Name": "App.Project.Projects",
@ -8205,17 +8334,17 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks", "Name": "App.Project.Phase",
"ParentName": null, "ParentName": null,
"DisplayName": "App.Project.Tasks", "DisplayName": "App.Project.Phase",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Create", "Name": "App.Project.Phase.Create",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8223,8 +8352,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Update", "Name": "App.Project.Phase.Update",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8232,8 +8361,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Delete", "Name": "App.Project.Phase.Delete",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8241,8 +8370,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Export", "Name": "App.Project.Phase.Export",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8250,8 +8379,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Import", "Name": "App.Project.Phase.Import",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8259,8 +8388,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Note", "Name": "App.Project.Phase.Note",
"ParentName": "App.Project.Tasks", "ParentName": "App.Project.Phase",
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8268,8 +8397,71 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Tasks.Widget", "Name": "App.Project.Task",
"ParentName": "App.Project.Tasks", "ParentName": null,
"DisplayName": "App.Project.Task",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Create",
"ParentName": "App.Project.Task",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Update",
"ParentName": "App.Project.Task",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Delete",
"ParentName": "App.Project.Task",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Export",
"ParentName": "App.Project.Task",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Import",
"ParentName": "App.Project.Task",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Note",
"ParentName": "App.Project.Task",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Task.Widget",
"ParentName": "App.Project.Task",
"DisplayName": "Widget", "DisplayName": "Widget",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8277,17 +8469,17 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases", "Name": "App.Project.Activity",
"ParentName": null, "ParentName": null,
"DisplayName": "App.Project.Phases", "DisplayName": "App.Project.Activity",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
"MenuGroup": "Erp" "MenuGroup": "Erp"
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Create", "Name": "App.Project.Activity.Create",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Create", "DisplayName": "Create",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8295,8 +8487,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Update", "Name": "App.Project.Activity.Update",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Update", "DisplayName": "Update",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8304,8 +8496,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Delete", "Name": "App.Project.Activity.Delete",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Delete", "DisplayName": "Delete",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8313,8 +8505,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Export", "Name": "App.Project.Activity.Export",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Export", "DisplayName": "Export",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8322,8 +8514,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Import", "Name": "App.Project.Activity.Import",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Import", "DisplayName": "Import",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -8331,71 +8523,8 @@
}, },
{ {
"GroupName": "App.Project", "GroupName": "App.Project",
"Name": "App.Project.Phases.Note", "Name": "App.Project.Activity.Note",
"ParentName": "App.Project.Phases", "ParentName": "App.Project.Activity",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities",
"ParentName": null,
"DisplayName": "App.Project.Activities",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Create",
"ParentName": "App.Project.Activities",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Update",
"ParentName": "App.Project.Activities",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Delete",
"ParentName": "App.Project.Activities",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Export",
"ParentName": "App.Project.Activities",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Import",
"ParentName": "App.Project.Activities",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.Project",
"Name": "App.Project.Activities.Note",
"ParentName": "App.Project.Activities",
"DisplayName": "Note", "DisplayName": "Note",
"IsEnabled": true, "IsEnabled": true,
"MultiTenancySide": 3, "MultiTenancySide": 3,
@ -12551,4 +12680,4 @@
"MenuGroup": "Erp" "MenuGroup": "Erp"
} }
] ]
} }

View file

@ -190,5 +190,8 @@ public enum TableNameEnum
BomComponent, BomComponent,
Projects, Projects,
ProjectType, ProjectType,
ProjectStatus ProjectStatus,
ProjectRisk,
ProjectPhase,
ProjectCategory
} }

View file

@ -229,6 +229,9 @@ public static class TableNameResolver
// 🔹 R&D // 🔹 R&D
{ nameof(TableNameEnum.ProjectType), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectType), (TablePrefix.TenantByName, MenuPrefix.Project) },
{ nameof(TableNameEnum.ProjectStatus), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.ProjectStatus), (TablePrefix.TenantByName, MenuPrefix.Project) },
{ nameof(TableNameEnum.ProjectRisk), (TablePrefix.TenantByName, MenuPrefix.Project) },
{ nameof(TableNameEnum.ProjectCategory), (TablePrefix.TenantByName, MenuPrefix.Project) },
{ nameof(TableNameEnum.ProjectPhase), (TablePrefix.TenantByName, MenuPrefix.Project) },
{ nameof(TableNameEnum.Projects), (TablePrefix.TenantByName, MenuPrefix.Project) }, { nameof(TableNameEnum.Projects), (TablePrefix.TenantByName, MenuPrefix.Project) },
}; };

View file

@ -562,9 +562,12 @@ public static class SeedConsts
public static class Project public static class Project
{ {
public const string Default = Prefix.App + ".Project"; public const string Default = Prefix.App + ".Project";
public const string ProjectType = Default + ".ProjectType"; public const string Type = Default + ".Type";
public const string ProjectStatus = Default + ".ProjectStatus"; public const string Status = Default + ".Status";
public const string Projects = Default + ".Projects"; public const string Projects = Default + ".Projects";
public const string Risk = Default + ".Risk";
public const string Category = Default + ".Category";
public const string Phase = Default + ".Phase";
} }
public static class Mrp public static class Mrp

View file

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities;
public class ProjectCategory : FullAuditedEntity<Guid>, IMultiTenant
{
public Guid? TenantId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
public ICollection<ProjectPhase> ProjectPhases { get; set; }
}

View file

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities;
public class ProjectPhase : FullAuditedEntity<Guid>, IMultiTenant
{
public Guid? TenantId { get; set; }
public Guid? ProjectId { get; set; }
public Project? Project { get; set; }
public Guid? ProjectCategoryId { get; set; }
public ProjectCategory? ProjectCategory { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int Sequence { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public DateTime? ActualStartDate { get; set; }
public DateTime? ActualEndDate { get; set; }
public decimal Budget { get; set; }
public decimal ActualCost { get; set; }
public int Progress { get; set; }
public string Risks { get; set; }
public Guid? StatusId { get; set; }
public ProjectStatus? Status { get; set; }
public bool IsActive { get; set; }
public ICollection<Project> Projects { get; set; }
}

View file

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Erp.Platform.Entities;
public class ProjectRisk : FullAuditedEntity<Guid>, IMultiTenant
{
public Guid? TenantId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
public ICollection<ProjectPhase> ProjectPhases { get; set; }
}

View file

@ -271,6 +271,9 @@ public class PlatformDbContext :
public DbSet<ProjectType> ProjectTypes { get; set; } public DbSet<ProjectType> ProjectTypes { get; set; }
public DbSet<ProjectStatus> ProjectStatuses { get; set; } public DbSet<ProjectStatus> ProjectStatuses { get; set; }
public DbSet<Project> Projects { get; set; } public DbSet<Project> Projects { get; set; }
public DbSet<ProjectRisk> ProjectRisks { get; set; }
public DbSet<ProjectCategory> ProjectCategories { get; set; }
public DbSet<ProjectPhase> ProjectPhases { get; set; }
#endregion #endregion
public PlatformDbContext(DbContextOptions<PlatformDbContext> options) public PlatformDbContext(DbContextOptions<PlatformDbContext> options)
@ -3141,6 +3144,11 @@ public class PlatformDbContext :
b.Property(x => x.BaseQuantity).HasPrecision(18, 2).HasDefaultValue(1); b.Property(x => x.BaseQuantity).HasPrecision(18, 2).HasDefaultValue(1);
b.Property(x => x.IsActive).HasDefaultValue(true); b.Property(x => x.IsActive).HasDefaultValue(true);
b.HasOne(x => x.BomType)
.WithMany(x => x.Boms)
.HasForeignKey(x => x.BomTypeId)
.OnDelete(DeleteBehavior.Restrict);
b.HasOne(x => x.Material) b.HasOne(x => x.Material)
.WithMany(x => x.Boms) .WithMany(x => x.Boms)
.HasForeignKey(x => x.MaterialId) .HasForeignKey(x => x.MaterialId)
@ -3256,5 +3264,48 @@ public class PlatformDbContext :
.HasForeignKey(x => x.StatusId) .HasForeignKey(x => x.StatusId)
.OnDelete(DeleteBehavior.Restrict); .OnDelete(DeleteBehavior.Restrict);
}); });
builder.Entity<ProjectRisk>(b =>
{
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectRisk)), 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<ProjectCategory>(b =>
{
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectCategory)), 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<ProjectPhase>(b =>
{
b.ToTable(TableNameResolver.GetFullTableName(nameof(TableNameEnum.ProjectPhase)), Prefix.DbSchema);
b.ConfigureByConvention();
b.Property(x => x.ProjectId).IsRequired();
b.Property(x => x.ProjectCategoryId).IsRequired();
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.Sequence).IsRequired().HasDefaultValue(1);
b.Property(x => x.StartDate).IsRequired();
b.Property(x => x.EndDate).IsRequired();
b.Property(x => x.Budget).HasPrecision(18, 2).HasDefaultValue(0);
b.Property(x => x.ActualCost).HasPrecision(18, 2).HasDefaultValue(0);
b.Property(x => x.Progress).HasDefaultValue(0);
b.Property(x => x.Risks).HasMaxLength(500);
b.Property(x => x.StatusId).IsRequired();
b.Property(x => x.IsActive).HasDefaultValue(true);
});
} }
} }

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Erp.Platform.Migrations namespace Erp.Platform.Migrations
{ {
[DbContext(typeof(PlatformDbContext))] [DbContext(typeof(PlatformDbContext))]
[Migration("20251127061452_Initial")] [Migration("20251127083732_Initial")]
partial class Initial partial class Initial
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -9845,6 +9845,9 @@ namespace Erp.Platform.Migrations
.HasColumnType("int") .HasColumnType("int")
.HasDefaultValue(0); .HasDefaultValue(0);
b.Property<Guid?>("ProjectPhaseId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectTypeId") b.Property<Guid>("ProjectTypeId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -9864,6 +9867,8 @@ namespace Erp.Platform.Migrations
b.HasIndex("ManagerId"); b.HasIndex("ManagerId");
b.HasIndex("ProjectPhaseId");
b.HasIndex("ProjectTypeId"); b.HasIndex("ProjectTypeId");
b.HasIndex("StatusId"); b.HasIndex("StatusId");
@ -9871,6 +9876,243 @@ namespace Erp.Platform.Migrations
b.ToTable("Prj_T_Projects", (string)null); b.ToTable("Prj_T_Projects", (string)null);
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectCategory", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_ProjectCategory", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<decimal>("ActualCost")
.ValueGeneratedOnAdd()
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)")
.HasDefaultValue(0m);
b.Property<DateTime?>("ActualEndDate")
.HasColumnType("datetime2");
b.Property<DateTime?>("ActualStartDate")
.HasColumnType("datetime2");
b.Property<decimal>("Budget")
.ValueGeneratedOnAdd()
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)")
.HasDefaultValue(0m);
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<DateTime>("EndDate")
.HasColumnType("datetime2");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<int>("Progress")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid>("ProjectCategoryId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("ProjectRiskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Risks")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<int>("Sequence")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(1);
b.Property<DateTime>("StartDate")
.HasColumnType("datetime2");
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("ProjectCategoryId");
b.HasIndex("ProjectId");
b.HasIndex("ProjectRiskId");
b.HasIndex("StatusId");
b.ToTable("Prj_T_ProjectPhase", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectRisk", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_ProjectRisk", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
@ -16234,7 +16476,7 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.BomType", "BomType") b.HasOne("Erp.Platform.Entities.BomType", "BomType")
.WithMany("Boms") .WithMany("Boms")
.HasForeignKey("BomTypeId") .HasForeignKey("BomTypeId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Restrict)
.IsRequired(); .IsRequired();
b.HasOne("Erp.Platform.Entities.Material", "Material") b.HasOne("Erp.Platform.Entities.Material", "Material")
@ -17118,6 +17360,10 @@ namespace Erp.Platform.Migrations
.WithMany() .WithMany()
.HasForeignKey("ManagerId"); .HasForeignKey("ManagerId");
b.HasOne("Erp.Platform.Entities.ProjectPhase", null)
.WithMany("Projects")
.HasForeignKey("ProjectPhaseId");
b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType")
.WithMany("Projects") .WithMany("Projects")
.HasForeignKey("ProjectTypeId") .HasForeignKey("ProjectTypeId")
@ -17139,6 +17385,37 @@ namespace Erp.Platform.Migrations
b.Navigation("Status"); b.Navigation("Status");
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.HasOne("Erp.Platform.Entities.ProjectCategory", "ProjectCategory")
.WithMany("ProjectPhases")
.HasForeignKey("ProjectCategoryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.ProjectRisk", null)
.WithMany("ProjectPhases")
.HasForeignKey("ProjectRiskId");
b.HasOne("Erp.Platform.Entities.ProjectStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
b.Navigation("ProjectCategory");
b.Navigation("Status");
});
modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b => modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b =>
{ {
b.HasOne("Erp.Platform.Entities.Putaway", "Rule") b.HasOne("Erp.Platform.Entities.Putaway", "Rule")
@ -18016,6 +18293,21 @@ namespace Erp.Platform.Migrations
b.Navigation("Items"); b.Navigation("Items");
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectCategory", b =>
{
b.Navigation("ProjectPhases");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.Navigation("Projects");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectRisk", b =>
{
b.Navigation("ProjectPhases");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b =>
{ {
b.Navigation("Projects"); b.Navigation("Projects");

View file

@ -1823,6 +1823,50 @@ namespace Erp.Platform.Migrations
table.PrimaryKey("PK_Plat_H_SettingDefinition", x => x.Id); table.PrimaryKey("PK_Plat_H_SettingDefinition", x => x.Id);
}); });
migrationBuilder.CreateTable(
name: "Prj_T_ProjectCategory",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Prj_T_ProjectCategory", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Prj_T_ProjectRisk",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Prj_T_ProjectRisk", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Prj_T_ProjectStatus", name: "Prj_T_ProjectStatus",
columns: table => new columns: table => new
@ -4524,7 +4568,7 @@ namespace Erp.Platform.Migrations
column: x => x.BomTypeId, column: x => x.BomTypeId,
principalTable: "Mrp_T_BomType", principalTable: "Mrp_T_BomType",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Restrict);
table.ForeignKey( table.ForeignKey(
name: "FK_Mrp_T_Bom_Scp_T_Material_MaterialId", name: "FK_Mrp_T_Bom_Scp_T_Material_MaterialId",
column: x => x.MaterialId, column: x => x.MaterialId,
@ -5948,64 +5992,6 @@ namespace Erp.Platform.Migrations
onDelete: ReferentialAction.Restrict); onDelete: ReferentialAction.Restrict);
}); });
migrationBuilder.CreateTable(
name: "Prj_T_Projects",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Code = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
ProjectTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Priority = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
ManagerId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
StartDate = table.Column<DateTime>(type: "datetime2", nullable: false),
EndDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ActualStartDate = table.Column<DateTime>(type: "datetime2", nullable: true),
ActualEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
CustomerId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Budget = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
ActualCost = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
Currency = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Prj_T_Projects", x => x.Id);
table.ForeignKey(
name: "FK_Prj_T_Projects_Adm_T_Partner_CustomerId",
column: x => x.CustomerId,
principalTable: "Adm_T_Partner",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_Projects_Hr_T_Employee_ManagerId",
column: x => x.ManagerId,
principalTable: "Hr_T_Employee",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectStatus_StatusId",
column: x => x.StatusId,
principalTable: "Prj_T_ProjectStatus",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectType_ProjectTypeId",
column: x => x.ProjectTypeId,
principalTable: "Prj_T_ProjectType",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Scp_T_Request", name: "Scp_T_Request",
columns: table => new columns: table => new
@ -6755,6 +6741,123 @@ namespace Erp.Platform.Migrations
onDelete: ReferentialAction.Restrict); onDelete: ReferentialAction.Restrict);
}); });
migrationBuilder.CreateTable(
name: "Prj_T_ProjectPhase",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
ProjectId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ProjectCategoryId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Code = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
Sequence = table.Column<int>(type: "int", nullable: false, defaultValue: 1),
StartDate = table.Column<DateTime>(type: "datetime2", nullable: false),
EndDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ActualStartDate = table.Column<DateTime>(type: "datetime2", nullable: true),
ActualEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
Budget = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
ActualCost = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
Risks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
ProjectRiskId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Prj_T_ProjectPhase", x => x.Id);
table.ForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectCategory_ProjectCategoryId",
column: x => x.ProjectCategoryId,
principalTable: "Prj_T_ProjectCategory",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectRisk_ProjectRiskId",
column: x => x.ProjectRiskId,
principalTable: "Prj_T_ProjectRisk",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectStatus_StatusId",
column: x => x.StatusId,
principalTable: "Prj_T_ProjectStatus",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Prj_T_Projects",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Code = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
ProjectTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Priority = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
ManagerId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
StartDate = table.Column<DateTime>(type: "datetime2", nullable: false),
EndDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ActualStartDate = table.Column<DateTime>(type: "datetime2", nullable: true),
ActualEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
CustomerId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Budget = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
ActualCost = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m),
Currency = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
Progress = table.Column<int>(type: "int", nullable: false, defaultValue: 0),
IsActive = table.Column<bool>(type: "bit", nullable: false, defaultValue: true),
ProjectPhaseId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false),
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Prj_T_Projects", x => x.Id);
table.ForeignKey(
name: "FK_Prj_T_Projects_Adm_T_Partner_CustomerId",
column: x => x.CustomerId,
principalTable: "Adm_T_Partner",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_Projects_Hr_T_Employee_ManagerId",
column: x => x.ManagerId,
principalTable: "Hr_T_Employee",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectPhase_ProjectPhaseId",
column: x => x.ProjectPhaseId,
principalTable: "Prj_T_ProjectPhase",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectStatus_StatusId",
column: x => x.StatusId,
principalTable: "Prj_T_ProjectStatus",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectType_ProjectTypeId",
column: x => x.ProjectTypeId,
principalTable: "Prj_T_ProjectType",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_AbpAuditLogActions_AuditLogId", name: "IX_AbpAuditLogActions_AuditLogId",
table: "AbpAuditLogActions", table: "AbpAuditLogActions",
@ -7664,6 +7767,26 @@ namespace Erp.Platform.Migrations
table: "Plat_H_Notification", table: "Plat_H_Notification",
column: "NotificationRuleId"); column: "NotificationRuleId");
migrationBuilder.CreateIndex(
name: "IX_Prj_T_ProjectPhase_ProjectCategoryId",
table: "Prj_T_ProjectPhase",
column: "ProjectCategoryId");
migrationBuilder.CreateIndex(
name: "IX_Prj_T_ProjectPhase_ProjectId",
table: "Prj_T_ProjectPhase",
column: "ProjectId");
migrationBuilder.CreateIndex(
name: "IX_Prj_T_ProjectPhase_ProjectRiskId",
table: "Prj_T_ProjectPhase",
column: "ProjectRiskId");
migrationBuilder.CreateIndex(
name: "IX_Prj_T_ProjectPhase_StatusId",
table: "Prj_T_ProjectPhase",
column: "StatusId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Prj_T_Projects_CustomerId", name: "IX_Prj_T_Projects_CustomerId",
table: "Prj_T_Projects", table: "Prj_T_Projects",
@ -7674,6 +7797,11 @@ namespace Erp.Platform.Migrations
table: "Prj_T_Projects", table: "Prj_T_Projects",
column: "ManagerId"); column: "ManagerId");
migrationBuilder.CreateIndex(
name: "IX_Prj_T_Projects_ProjectPhaseId",
table: "Prj_T_Projects",
column: "ProjectPhaseId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Prj_T_Projects_ProjectTypeId", name: "IX_Prj_T_Projects_ProjectTypeId",
table: "Prj_T_Projects", table: "Prj_T_Projects",
@ -8008,6 +8136,14 @@ namespace Erp.Platform.Migrations
principalTable: "Hr_T_Employee", principalTable: "Hr_T_Employee",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Restrict); onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_Projects_ProjectId",
table: "Prj_T_ProjectPhase",
column: "ProjectId",
principalTable: "Prj_T_Projects",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
} }
/// <inheritdoc /> /// <inheritdoc />
@ -8017,6 +8153,10 @@ namespace Erp.Platform.Migrations
name: "FK_Hr_T_Employee_Acc_T_Bank_BankId", name: "FK_Hr_T_Employee_Acc_T_Bank_BankId",
table: "Hr_T_Employee"); table: "Hr_T_Employee");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_Projects_Adm_T_Partner_CustomerId",
table: "Prj_T_Projects");
migrationBuilder.DropForeignKey( migrationBuilder.DropForeignKey(
name: "FK_Hr_T_CostCenter_Hr_T_Employee_ResponsibleEmployeeId", name: "FK_Hr_T_CostCenter_Hr_T_Employee_ResponsibleEmployeeId",
table: "Hr_T_CostCenter"); table: "Hr_T_CostCenter");
@ -8025,10 +8165,34 @@ namespace Erp.Platform.Migrations
name: "FK_Hr_T_Department_Hr_T_Employee_ManagerId", name: "FK_Hr_T_Department_Hr_T_Employee_ManagerId",
table: "Hr_T_Department"); table: "Hr_T_Department");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_Projects_Hr_T_Employee_ManagerId",
table: "Prj_T_Projects");
migrationBuilder.DropForeignKey( migrationBuilder.DropForeignKey(
name: "FK_Hr_T_CostCenter_Hr_T_Department_DepartmentId", name: "FK_Hr_T_CostCenter_Hr_T_Department_DepartmentId",
table: "Hr_T_CostCenter"); table: "Hr_T_CostCenter");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectCategory_ProjectCategoryId",
table: "Prj_T_ProjectPhase");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectRisk_ProjectRiskId",
table: "Prj_T_ProjectPhase");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_ProjectStatus_StatusId",
table: "Prj_T_ProjectPhase");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_Projects_Prj_T_ProjectStatus_StatusId",
table: "Prj_T_Projects");
migrationBuilder.DropForeignKey(
name: "FK_Prj_T_ProjectPhase_Prj_T_Projects_ProjectId",
table: "Prj_T_ProjectPhase");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "AbpAuditLogActions"); name: "AbpAuditLogActions");
@ -8332,9 +8496,6 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Plat_H_SettingDefinition"); name: "Plat_H_SettingDefinition");
migrationBuilder.DropTable(
name: "Prj_T_Projects");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Prt_T_Interesting"); name: "Prt_T_Interesting");
@ -8524,15 +8685,6 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Plat_H_NotificationRule"); name: "Plat_H_NotificationRule");
migrationBuilder.DropTable(
name: "Adm_T_Partner");
migrationBuilder.DropTable(
name: "Prj_T_ProjectStatus");
migrationBuilder.DropTable(
name: "Prj_T_ProjectType");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_H_City"); name: "Sas_H_City");
@ -8614,27 +8766,6 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Plat_H_BackgroundWorker_MailQueueTableFormat"); name: "Plat_H_BackgroundWorker_MailQueueTableFormat");
migrationBuilder.DropTable(
name: "Crm_T_CustomerSegment");
migrationBuilder.DropTable(
name: "Crm_T_CustomerType");
migrationBuilder.DropTable(
name: "Sas_T_Sector");
migrationBuilder.DropTable(
name: "Scp_T_Material");
migrationBuilder.DropTable(
name: "Scp_T_PaymentTerm");
migrationBuilder.DropTable(
name: "Scp_T_SupplyCardType");
migrationBuilder.DropTable(
name: "Scp_T_SupplyType");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_H_Country"); name: "Sas_H_Country");
@ -8668,12 +8799,6 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Mrp_T_OperationCategory"); name: "Mrp_T_OperationCategory");
migrationBuilder.DropTable(
name: "Scp_T_MaterialGroup");
migrationBuilder.DropTable(
name: "Scp_T_MaterialType");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Sas_H_CountryGroup"); name: "Sas_H_CountryGroup");
@ -8689,6 +8814,36 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Acc_T_Bank"); name: "Acc_T_Bank");
migrationBuilder.DropTable(
name: "Adm_T_Partner");
migrationBuilder.DropTable(
name: "Crm_T_CustomerSegment");
migrationBuilder.DropTable(
name: "Crm_T_CustomerType");
migrationBuilder.DropTable(
name: "Sas_T_Sector");
migrationBuilder.DropTable(
name: "Scp_T_Material");
migrationBuilder.DropTable(
name: "Scp_T_PaymentTerm");
migrationBuilder.DropTable(
name: "Scp_T_SupplyCardType");
migrationBuilder.DropTable(
name: "Scp_T_SupplyType");
migrationBuilder.DropTable(
name: "Scp_T_MaterialGroup");
migrationBuilder.DropTable(
name: "Scp_T_MaterialType");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Hr_T_Employee"); name: "Hr_T_Employee");
@ -8706,6 +8861,24 @@ namespace Erp.Platform.Migrations
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Hr_T_CostCenter"); name: "Hr_T_CostCenter");
migrationBuilder.DropTable(
name: "Prj_T_ProjectCategory");
migrationBuilder.DropTable(
name: "Prj_T_ProjectRisk");
migrationBuilder.DropTable(
name: "Prj_T_ProjectStatus");
migrationBuilder.DropTable(
name: "Prj_T_Projects");
migrationBuilder.DropTable(
name: "Prj_T_ProjectPhase");
migrationBuilder.DropTable(
name: "Prj_T_ProjectType");
} }
} }
} }

View file

@ -9842,6 +9842,9 @@ namespace Erp.Platform.Migrations
.HasColumnType("int") .HasColumnType("int")
.HasDefaultValue(0); .HasDefaultValue(0);
b.Property<Guid?>("ProjectPhaseId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectTypeId") b.Property<Guid>("ProjectTypeId")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
@ -9861,6 +9864,8 @@ namespace Erp.Platform.Migrations
b.HasIndex("ManagerId"); b.HasIndex("ManagerId");
b.HasIndex("ProjectPhaseId");
b.HasIndex("ProjectTypeId"); b.HasIndex("ProjectTypeId");
b.HasIndex("StatusId"); b.HasIndex("StatusId");
@ -9868,6 +9873,243 @@ namespace Erp.Platform.Migrations
b.ToTable("Prj_T_Projects", (string)null); b.ToTable("Prj_T_Projects", (string)null);
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectCategory", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_ProjectCategory", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<decimal>("ActualCost")
.ValueGeneratedOnAdd()
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)")
.HasDefaultValue(0m);
b.Property<DateTime?>("ActualEndDate")
.HasColumnType("datetime2");
b.Property<DateTime?>("ActualStartDate")
.HasColumnType("datetime2");
b.Property<decimal>("Budget")
.ValueGeneratedOnAdd()
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)")
.HasDefaultValue(0m);
b.Property<string>("Code")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<DateTime>("EndDate")
.HasColumnType("datetime2");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<int>("Progress")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid>("ProjectCategoryId")
.HasColumnType("uniqueidentifier");
b.Property<Guid>("ProjectId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("ProjectRiskId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Risks")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<int>("Sequence")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasDefaultValue(1);
b.Property<DateTime>("StartDate")
.HasColumnType("datetime2");
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("ProjectCategoryId");
b.HasIndex("ProjectId");
b.HasIndex("ProjectRiskId");
b.HasIndex("StatusId");
b.ToTable("Prj_T_ProjectPhase", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectRisk", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationTime")
.HasColumnType("datetime2")
.HasColumnName("CreationTime");
b.Property<Guid?>("CreatorId")
.HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId");
b.Property<Guid?>("DeleterId")
.HasColumnType("uniqueidentifier")
.HasColumnName("DeleterId");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("datetime2")
.HasColumnName("DeletionTime");
b.Property<string>("Description")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<bool>("IsActive")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(true);
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("bit")
.HasDefaultValue(false)
.HasColumnName("IsDeleted");
b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2")
.HasColumnName("LastModificationTime");
b.Property<Guid?>("LastModifierId")
.HasColumnType("uniqueidentifier")
.HasColumnName("LastModifierId");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<Guid?>("TenantId")
.HasColumnType("uniqueidentifier")
.HasColumnName("TenantId");
b.HasKey("Id");
b.ToTable("Prj_T_ProjectRisk", (string)null);
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b =>
{ {
b.Property<Guid>("Id") b.Property<Guid>("Id")
@ -16231,7 +16473,7 @@ namespace Erp.Platform.Migrations
b.HasOne("Erp.Platform.Entities.BomType", "BomType") b.HasOne("Erp.Platform.Entities.BomType", "BomType")
.WithMany("Boms") .WithMany("Boms")
.HasForeignKey("BomTypeId") .HasForeignKey("BomTypeId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Restrict)
.IsRequired(); .IsRequired();
b.HasOne("Erp.Platform.Entities.Material", "Material") b.HasOne("Erp.Platform.Entities.Material", "Material")
@ -17115,6 +17357,10 @@ namespace Erp.Platform.Migrations
.WithMany() .WithMany()
.HasForeignKey("ManagerId"); .HasForeignKey("ManagerId");
b.HasOne("Erp.Platform.Entities.ProjectPhase", null)
.WithMany("Projects")
.HasForeignKey("ProjectPhaseId");
b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType") b.HasOne("Erp.Platform.Entities.ProjectType", "ProjectType")
.WithMany("Projects") .WithMany("Projects")
.HasForeignKey("ProjectTypeId") .HasForeignKey("ProjectTypeId")
@ -17136,6 +17382,37 @@ namespace Erp.Platform.Migrations
b.Navigation("Status"); b.Navigation("Status");
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.HasOne("Erp.Platform.Entities.ProjectCategory", "ProjectCategory")
.WithMany("ProjectPhases")
.HasForeignKey("ProjectCategoryId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Project", "Project")
.WithMany()
.HasForeignKey("ProjectId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.ProjectRisk", null)
.WithMany("ProjectPhases")
.HasForeignKey("ProjectRiskId");
b.HasOne("Erp.Platform.Entities.ProjectStatus", "Status")
.WithMany()
.HasForeignKey("StatusId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Project");
b.Navigation("ProjectCategory");
b.Navigation("Status");
});
modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b => modelBuilder.Entity("Erp.Platform.Entities.PutawayCondition", b =>
{ {
b.HasOne("Erp.Platform.Entities.Putaway", "Rule") b.HasOne("Erp.Platform.Entities.Putaway", "Rule")
@ -18013,6 +18290,21 @@ namespace Erp.Platform.Migrations
b.Navigation("Items"); b.Navigation("Items");
}); });
modelBuilder.Entity("Erp.Platform.Entities.ProjectCategory", b =>
{
b.Navigation("ProjectPhases");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectPhase", b =>
{
b.Navigation("Projects");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectRisk", b =>
{
b.Navigation("ProjectPhases");
});
modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b => modelBuilder.Entity("Erp.Platform.Entities.ProjectStatus", b =>
{ {
b.Navigation("Projects"); b.Navigation("Projects");

View file

@ -4785,10 +4785,13 @@
], ],
"OrganizationUnits": [ "OrganizationUnits": [
{ {
"displayName": "Satış Ekibi" "displayName": "Satış Ekipleri"
}, },
{ {
"displayName": "Bakım Ekipleri" "displayName": "Bakım Ekipleri"
},
{
"displayName": "Proje Ekipleri"
} }
], ],
"RequestTypes": [ "RequestTypes": [
@ -5938,5 +5941,182 @@
"progress": 10, "progress": 10,
"isActive": true "isActive": true
} }
],
"ProjectCategories": [
{
"name": "Planlama",
"description": "Şirket içi projeler için kullanılan tür",
"isActive": true
},
{
"name": "Yürütme",
"description": "Müşteri projeleri için kullanılan tür",
"isActive": true
},
{
"name": "İzleme",
"description": "Araştırma ve geliştirme projeleri için kullanılan tür",
"isActive": true
},
{
"name": "Kapanış",
"description": "Bakım ve iyileştirme projeleri için kullanılan tür",
"isActive": true
},
{
"name": "Diğer",
"description": "Yeni ürün ve süreç geliştirme projeleri için kullanılan tür",
"isActive": true
}
],
"ProjectRisks": [
{
"name": "Platformlar arası tutarlılık sorunları",
"description": "Platformlar arası tutarlılık sorunları",
"isActive": true
},
{
"name": "Sistem kesintileri",
"description": "Sistem kesintileri",
"isActive": true
},
{
"name": "Kullanıcı adaptasyon sorunları",
"description": "Kullanıcı adaptasyon sorunları",
"isActive": true
},
{
"name": "Kritik hataların geç tespit edilmesi",
"description": "Kritik hataların geç tespit edilmesi",
"isActive": true
},
{
"name": "Tarayıcı uyumluluk sorunları",
"description": "Tarayıcı uyumluluk sorunları",
"isActive": true
},
{
"name": "Performans optimizasyonu",
"description": "Performans optimizasyonu",
"isActive": true
},
{
"name": "Performans sorunları",
"description": "Performans sorunları",
"isActive": true
},
{
"name": "Üçüncü parti entegrasyon gecikmeleri",
"description": "Üçüncü parti entegrasyon gecikmeleri",
"isActive": true
},
{
"name": "Gereksinim değişiklikleri",
"description": "Gereksinim değişiklikleri",
"isActive": true
}
],
"ProjectPhases": [
{
"projectCode": "PRJ-2024-001",
"categoryName": "Planlama",
"statusName": "Planlama",
"code": "PH-001",
"name": "Analiz ve Tasarım",
"description": "Sistem analizi ve tasarım dokümantasyonu hazırlanması",
"startDate": "2024-01-15T00:00:00.000Z",
"endDate": "2024-02-28T00:00:00.000Z",
"actualStartDate": "2024-01-15T00:00:00.000Z",
"actualEndDate": "2024-02-25T00:00:00.000Z",
"budget": 150000,
"actualCost": 145000,
"progress": 100,
"risks": "Gereksinim değişiklikleri",
"sequence": 0,
"isActive": false
},
{
"projectCode": "PRJ-2024-001",
"categoryName": "Yürütme",
"statusName": "Aktif",
"code": "PH-002",
"name": "Geliştirme - Faz 1",
"description": "Backend altyapısı ve temel modüllerin geliştirilmesi",
"startDate": "2024-03-01T00:00:00.000Z",
"endDate": "2024-05-15T00:00:00.000Z",
"actualStartDate": "2024-03-01T00:00:00.000Z",
"actualEndDate": "2024-05-10T00:00:00.000Z",
"budget": 400000,
"actualCost": 280000,
"progress": 70,
"risks": "Performans sorunları|Üçüncü parti entegrasyon gecikmeleri",
"sequence": 0,
"isActive": false
},
{
"projectCode": "PRJ-2024-001",
"categoryName": "Yürütme",
"statusName": "Beklemede",
"code": "PH-003",
"name": "Geliştirme - Faz 2",
"description": "Frontend geliştirme ve kullanıcı arayüzleri",
"startDate": "2024-04-15T00:00:00.000Z",
"endDate": "2024-07-30T00:00:00.000Z",
"budget": 350000,
"actualCost": 0,
"progress": 0,
"risks": "Tarayıcı uyumluluk sorunları|Performans optimizasyonu",
"sequence": 0,
"isActive": false
},
{
"projectCode": "PRJ-2024-002",
"categoryName": "İzleme",
"statusName": "Aktif",
"code": "PH-004",
"name": "Test ve Kalite Güvence",
"description": "Kapsamlı test süreçleri ve kalite kontrolleri",
"startDate": "2024-07-01T00:00:00.000Z",
"endDate": "2024-09-15T00:00:00.000Z",
"budget": 120000,
"actualCost": 0,
"progress": 0,
"risks": "Kritik hataların geç tespit edilmesi",
"sequence": 0,
"isActive": false
},
{
"projectCode": "PRJ-2024-002",
"categoryName": "Kapanış",
"statusName": "Planlama",
"code": "PH-005",
"name": "Deployment ve Go-Live",
"description": "Üretime alma ve kullanıcı eğitimleri",
"startDate": "2024-09-15T00:00:00.000Z",
"endDate": "2024-10-31T00:00:00.000Z",
"budget": 80000,
"actualCost": 0,
"progress": 0,
"risks": "Sistem kesintileri|Kullanıcı adaptasyon sorunları",
"sequence": 0,
"isActive": false
},
{
"projectCode": "PRJ-2024-002",
"categoryName": "Diğer",
"statusName": "Planlama",
"code": "PH-006",
"name": "Mobil UI Tasarımı",
"description": "Mobil uygulama kullanıcı arayüzü tasarımı",
"startDate": "2024-03-01T00:00:00.000Z",
"endDate": "2024-04-15T00:00:00.000Z",
"actualStartDate": "2024-03-05T00:00:00.000Z",
"budget": 75000,
"actualCost": 25000,
"progress": 35,
"risks": "Platformlar arası tutarlılık sorunları",
"sequence": 0,
"isActive": false
}
] ]
} }

View file

@ -131,6 +131,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
private readonly IRepository<ProjectType, Guid> _projectTypeRepository; private readonly IRepository<ProjectType, Guid> _projectTypeRepository;
private readonly IRepository<ProjectStatus, Guid> _projectStatusRepository; private readonly IRepository<ProjectStatus, Guid> _projectStatusRepository;
private readonly IRepository<Project, Guid> _projectRepository; private readonly IRepository<Project, Guid> _projectRepository;
private readonly IRepository<ProjectCategory, Guid> _projectCategoryRepository;
private readonly IRepository<ProjectRisk, Guid> _projectRiskRepository;
private readonly IRepository<ProjectPhase, Guid> _projectPhaseRepository;
public TenantDataSeeder( public TenantDataSeeder(
IClock clock, IClock clock,
@ -244,7 +247,10 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
IRepository<BomOperation, Guid> bomOperationRepository, IRepository<BomOperation, Guid> bomOperationRepository,
IRepository<ProjectType, Guid> projectTypeRepository, IRepository<ProjectType, Guid> projectTypeRepository,
IRepository<ProjectStatus, Guid> projectStatusRepository, IRepository<ProjectStatus, Guid> projectStatusRepository,
IRepository<Project, Guid> projectRepository IRepository<Project, Guid> projectRepository,
IRepository<ProjectRisk, Guid> projectRiskRepository,
IRepository<ProjectCategory, Guid> projectCategoryRepository,
IRepository<ProjectPhase, Guid> projectPhaseRepository
) )
{ {
_clock = clock; _clock = clock;
@ -360,6 +366,9 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
_projectTypeRepository = projectTypeRepository; _projectTypeRepository = projectTypeRepository;
_projectStatusRepository = projectStatusRepository; _projectStatusRepository = projectStatusRepository;
_projectRepository = projectRepository; _projectRepository = projectRepository;
_projectCategoryRepository = projectCategoryRepository;
_projectRiskRepository = projectRiskRepository;
_projectPhaseRepository = projectPhaseRepository;
} }
private static IConfigurationRoot BuildConfiguration() private static IConfigurationRoot BuildConfiguration()
@ -2516,6 +2525,65 @@ public class TenantDataSeeder : IDataSeedContributor, ITransientDependency
IsActive = item.IsActive IsActive = item.IsActive
}, autoSave: true); }, autoSave: true);
} }
foreach (var item in items.ProjectRisks)
{
var exists = await _projectRiskRepository.AnyAsync(x => x.Name == item.Name);
if (exists)
continue;
await _projectRiskRepository.InsertAsync(new ProjectRisk
{
Name = item.Name,
Description = item.Description,
IsActive = item.IsActive
}, autoSave: true);
}
foreach (var item in items.ProjectCategories)
{
var exists = await _projectCategoryRepository.AnyAsync(x => x.Name == item.Name);
if (exists)
continue;
await _projectCategoryRepository.InsertAsync(new ProjectCategory
{
Name = item.Name,
Description = item.Description,
IsActive = item.IsActive
}, autoSave: true);
}
foreach (var item in items.ProjectPhases)
{
var exists = await _projectPhaseRepository.AnyAsync(x => x.Code == item.Code);
if (exists)
continue;
var project = await _projectRepository.FirstOrDefaultAsync(x => x.Code == item.ProjectCode);
var projectCategory = await _projectCategoryRepository.FirstOrDefaultAsync(x => x.Name == item.CategoryName);
var projectStatus = await _projectStatusRepository.FirstOrDefaultAsync(x => x.Name == item.StatusName);
await _projectPhaseRepository.InsertAsync(new ProjectPhase
{
ProjectId = project?.Id,
ProjectCategoryId = projectCategory?.Id,
Code = item.Code,
Name = item.Name,
Description = item.Description,
StatusId = projectStatus?.Id,
Sequence = item.Sequence,
StartDate = item.StartDate,
EndDate = item.EndDate,
Budget = item.Budget,
ActualStartDate = item.ActualStartDate,
ActualEndDate = item.ActualEndDate,
ActualCost = item.ActualCost,
Progress = item.Progress,
Risks = item.Risks,
IsActive = item.IsActive
}, autoSave: true);
}
} }
} }

View file

@ -131,6 +131,48 @@ public class TenantSeederDto
public List<ProjectTypeSeedDto> ProjectTypes { get; set; } public List<ProjectTypeSeedDto> ProjectTypes { get; set; }
public List<ProjectStatusSeedDto> ProjectStatuses { get; set; } public List<ProjectStatusSeedDto> ProjectStatuses { get; set; }
public List<ProjectSeedDto> Projects { get; set; } public List<ProjectSeedDto> Projects { get; set; }
public List<ProjectRiskSeedDto> ProjectRisks { get; set; }
public List<ProjectCategorySeedDto> ProjectCategories { get; set; }
public List<ProjectPhaseSeedDto> ProjectPhases { get; set; }
}
public class ProjectPhaseSeedDto
{
public string ProjectCode { get; set; }
public string CategoryName { get; set; }
public string StatusName { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int Sequence { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public DateTime? ActualStartDate { get; set; }
public DateTime? ActualEndDate { get; set; }
public decimal Budget { get; set; }
public decimal ActualCost { get; set; }
public int Progress { get; set; }
public string Risks { get; set; }
public bool IsActive { get; set; }
}
public class ProjectCategorySeedDto
{
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
}
public class ProjectRiskSeedDto
{
public string Name { get; set; }
public string Description { get; set; }
public bool IsActive { get; set; }
} }
public class ProjectSeedDto public class ProjectSeedDto

View file

@ -127,7 +127,7 @@ const IntranetDashboard: React.FC = () => {
permission: 'App.Intranet.Announcement.Widget', permission: 'App.Intranet.Announcement.Widget',
column: 'right', column: 'right',
}, },
{ id: 'priority-tasks', permission: 'App.Project.Tasks.Widget', column: 'right' }, { id: 'priority-tasks', permission: 'App.Project.Task.Widget', column: 'right' },
{ id: 'meal-weekly-menu', permission: 'App.Intranet.Meal.Widget', column: 'right' }, { id: 'meal-weekly-menu', permission: 'App.Intranet.Meal.Widget', column: 'right' },
{ id: 'shuttle-route', permission: 'App.Intranet.ShuttleRoute.Widget', column: 'right' }, { id: 'shuttle-route', permission: 'App.Intranet.ShuttleRoute.Widget', column: 'right' },
{ id: 'leave-management', permission: 'App.Hr.Leave.Widget', column: 'right' }, { id: 'leave-management', permission: 'App.Hr.Leave.Widget', column: 'right' },