Quotations düzenlemesi

This commit is contained in:
Sedat ÖZTÜRK 2025-12-01 13:56:58 +03:00
parent d1157953a8
commit 4c95b52ea8
18 changed files with 1303 additions and 665 deletions

View file

@ -9325,12 +9325,6 @@
"tr": "Teklif Durumları",
"en": "Quotation Status"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.Quotation",
"tr": "Teklifler",
"en": "Quotations"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.MaterialType",
@ -9409,6 +9403,12 @@
"tr": "Teklifler",
"en": "Quotations"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.QuotationItem",
"tr": "Teklif Ürünleri",
"en": "Quotation Items"
},
{
"resourceName": "Platform",
"key": "App.SupplyChain.Approval",

View file

@ -107,7 +107,7 @@ public class ListFormSeeder_Accounting : IDataSeedContributor, ITransientDepende
Text ="Manage",
UrlTarget="_blank",
AuthName = AppCodes.Accounting.BankAccount,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(AppCodes.Accounting.Bank)}/@Id",
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true
},
}),

View file

@ -394,7 +394,7 @@ public class ListFormSeeder_Crm : IDataSeedContributor, ITransientDependency
Text ="Manage",
UrlTarget="_blank",
AuthName = listFormName,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(AppCodes.Crm.Customer)}/@Id",
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true,
},
}),

View file

@ -889,7 +889,7 @@ public class ListFormSeeder_Mrp : IDataSeedContributor, ITransientDependency
Text ="Manage",
UrlTarget="_blank",
AuthName = AppCodes.Mrp.Bom,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(AppCodes.Mrp.Bom)}/@Id",
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true
},
}),

View file

@ -3649,5 +3649,713 @@ public class ListFormSeeder_SupplyChain : IDataSeedContributor, ITransientDepend
#endregion
}
#endregion
#region Quatation
listFormName = AppCodes.SupplyChain.Quotation;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{
var listForm = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.List,
ExportJson = DefaultExportJson,
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.Quotation)),
KeyFieldName = "Id",
KeyFieldDbSourceType = DbType.Guid,
DefaultFilter = DefaultFilterJson,
SortMode = GridOptions.SortModeSingle,
FilterRowJson = DefaultFilterRowJson,
HeaderFilterJson = DefaultHeaderFilterJson,
SearchPanelJson = DefaultSearchPanelJson,
GroupPanelJson = DefaultGroupPanelJson,
SelectionJson = JsonSerializer.Serialize(new SelectionDto
{
Mode = GridOptions.SelectionModeMultiple,
AllowSelectAll = true,
ShowCheckBoxesMode = GridOptions.ShowCheckBoxesModeAlways
}),
ColumnOptionJson = DefaultColumnOptionJson,
PermissionJson = DefaultPermissionJson(listFormName),
DeleteCommand = DefaultDeleteCommand(nameof(TableNameEnum.Quotation)),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson,
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 800, 700, true, true, true, true, false),
InsertFieldsDefaultValueJson = DefaultInsertFieldsDefaultValueJson,
EditingFormJson = JsonSerializer.Serialize(new List<EditingFormDto>()
{
new() {
Order=1, ColCount=2, Caption="General", ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="QuotationNumber", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox, EditorOptions = EditorOptionValues.Disabled },
new EditingFormItemDto { Order = 2, DataField="RequestId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 3, DataField="RequestTitle", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 4, DataField="RequestTypeId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 5, DataField="SupplierId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 6, DataField="QuotationDate", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 7, DataField="ValidUntil", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxDateBox },
new EditingFormItemDto { Order = 8, DataField="StatusId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 9, DataField="Notes", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
]},
new() {
Order=1, ColCount=2, Caption="Financial", ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="TotalAmount", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 2, DataField="Currency", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 3, DataField="PaymentTermId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 4, DataField="DeliveryTermId", ColSpan = 1, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 5, DataField="DeliveryTime", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 6, DataField="SubmittedBy", ColSpan = 1, EditorType2 = EditorTypes.dxTextBox },
new EditingFormItemDto { Order = 7, DataField="SubmittedAt", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox },
]},
new() {
Order=1, ColCount=2, Caption="Evaluation", ColSpan=1, ItemType="group", Items =[
new EditingFormItemDto { Order = 1, DataField="EvaluationComments", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 2, DataField="EvaluationNotes", ColSpan = 2, EditorType2 = EditorTypes.dxTextArea },
new EditingFormItemDto { Order = 3, DataField="EvaluationScore", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox },
new EditingFormItemDto { Order = 4, DataField="EmployeeId", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 5, DataField="EvaluatedAt", ColSpan = 1, EditorType2 = EditorTypes.dxDateBox },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "QuotationNumber", FieldDbType = DbType.String, Value = "@AUTONUMBER", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() { FieldName = "QuotationDate", FieldDbType = DbType.Date, Value = "@DATE", CustomValueType = FieldCustomValueTypeEnum.CustomKey },
new() { FieldName = "TotalAmount", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "Currency", FieldDbType = DbType.String, Value = "TRY", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "DeliveryTime", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "EvaluationScore", FieldDbType = DbType.Decimal, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
}),
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new() {
Hint = "Manage",
Text ="Manage",
UrlTarget="_blank",
AuthName = listFormName,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true
},
new() {
ButtonPosition = UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Toplu Teklif",
Text = "Toplu Teklif",
AuthName = listFormName,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true
},
new() {
ButtonPosition = UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "Teklif Karşılaştır",
Text = "Teklif Karşılaştır",
AuthName = listFormName,
Url=$"/admin/form/{SeederUtils.GetDefaultFormCodes(listFormName)}/@Id",
IsVisible = true
},
}),
}, autoSave: true
);
#region Quatation 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,
SortIndex = 0,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "QuotationNumber",
Width = 150,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "RequestId",
Width = 200,
ListOrderNo = 3,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Request), "Id", "RequestNumber"),
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "RequestTitle",
Width = 200,
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.Guid,
FieldName = "RequestTypeId",
Width = 100,
ListOrderNo = 5,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.RequestType), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "SupplierId",
Width = 200,
ListOrderNo = 6,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = JsonSerializer.Serialize(new LookupDto
{
DataSourceType = UiLookupDataSourceTypeEnum.Query,
DisplayExpr = "Name",
ValueExpr = "Key",
LookupQuery = LookupQueryValues.SupplierValues
}),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Date,
FieldName = "QuotationDate",
Width = 100,
ListOrderNo = 7,
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 = "ValidUntil",
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.Guid,
FieldName = "StatusId",
Width = 100,
ListOrderNo = 9,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.QuotationStatus), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "Notes",
Width = 100,
ListOrderNo = 10,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "TotalAmount",
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.String,
FieldName = "Currency",
Width = 100,
ListOrderNo = 12,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Currency), "Code", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "PaymentTermId",
Width = 100,
ListOrderNo = 13,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.PaymentTerm), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "DeliveryTermId",
Width = 100,
ListOrderNo = 14,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.DeliveryTerm), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Int32,
FieldName = "DeliveryTime",
Format = "fixedPoint",
Alignment = "right",
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.Int32,
FieldName = "EvaluationScore",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 16,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "EvaluationComments",
Width = 100,
ListOrderNo = 17,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.String,
FieldName = "EvaluationNotes",
Width = 100,
ListOrderNo = 18,
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 = "SubmittedBy",
Width = 100,
ListOrderNo = 19,
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 = "SubmittedAt",
Width = 100,
ListOrderNo = 20,
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 = "EmployeeId",
Width = 100,
ListOrderNo = 21,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Employee), "Id", "FullName"),
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Date,
FieldName = "EvaluatedAt",
Width = 100,
ListOrderNo = 22,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
], autoSave: true);
#endregion
}
#endregion
#region Quatation Items
listFormName = AppCodes.SupplyChain.QuotationItem;
if (!await _listFormRepository.AnyAsync(a => a.ListFormCode == listFormName))
{
var listForm = await _listFormRepository.InsertAsync(
new ListForm()
{
ListFormType = ListFormTypeEnum.List,
ExportJson = DefaultExportJson,
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.QuotationItem)),
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.QuotationItem)),
DeleteFieldsDefaultValueJson = DefaultDeleteFieldsDefaultValueJson,
PagerOptionJson = DefaultPagerOptionJson,
EditingOptionJson = DefaultEditingOptionJson(listFormName, 500, 400, 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="MaterialId", ColSpan = 1, IsRequired =true, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 2, DataField="Quantity", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 3, DataField="Uom", ColSpan = 1, EditorType2 = EditorTypes.dxSelectBox },
new EditingFormItemDto { Order = 4, DataField="UnitPrice", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 5, DataField="TotalPrice", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 6, DataField="LeadTime", ColSpan = 1, EditorType2 = EditorTypes.dxNumberBox, EditorOptions = EditorOptionValues.NumberStandartFormat },
new EditingFormItemDto { Order = 7, DataField="Description", ColSpan = 1, EditorType2 = EditorTypes.dxTextArea },
]}
}),
FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] {
new() { FieldName = "Quantity", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "Uom", FieldDbType = DbType.String, Value = "Adet", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "UnitPrice", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "TotalPrice", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value },
new() { FieldName = "LeadTime", FieldDbType = DbType.Int32, Value = "0", CustomValueType = FieldCustomValueTypeEnum.Value }
}),
}, autoSave: true
);
#region Quatation Items 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,
SortIndex = 0,
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid,
FieldName = "MaterialId",
Width = 300,
ListOrderNo = 2,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Material), "Id", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "Quantity",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 3,
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 = "Uom",
Width = 100,
ListOrderNo = 4,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
LookupJson = LookupQueryValues.DefaultLookupQueryJson(nameof(TableNameEnum.Uom), "Name", "Name"),
ValidationRuleJson = DefaultValidationRuleRequiredJson,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
new() {
ListFormCode = listForm.ListFormCode,
CultureName = LanguageCodes.En,
SourceDbType = DbType.Decimal,
FieldName = "UnitPrice",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 5,
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 = "TotalPrice",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 6,
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 = "LeadTime",
Format = "fixedPoint",
Alignment = "right",
Width = 100,
ListOrderNo = 7,
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 = "Description",
Width = 100,
ListOrderNo = 8,
Visible = true,
IsActive = true,
IsDeleted = false,
AllowSearch = true,
ColumnCustomizationJson = DefaultColumnCustomizationJson,
PermissionJson = DefaultFieldPermissionJson(listForm.Name),
PivotSettingsJson = DefaultPivotSettingsJson
},
], autoSave: true);
#endregion
}
#endregion
// Quatation ve Quatation Item arasında SubForm ilişki kurulması
await utils.CloneFormLayoutAsync(
AppCodes.SupplyChain.Quotation,
JsonSerializer.Serialize(new List<dynamic>() {
new {
TabType = ListFormTabTypeEnum.List,
TabTitle = AppCodes.SupplyChain.QuotationItem,
Code = AppCodes.SupplyChain.QuotationItem,
Relation = new List<dynamic>() {
new {
ParentFieldName = "Id",
DbType = DbType.Guid,
ChildFieldName = "QuotationId"
}
}
}
})
);
}
}

View file

@ -2383,7 +2383,7 @@
"Code": "App.SupplyChain.Quotation",
"DisplayName": "App.SupplyChain.Quotation",
"Order": 3,
"Url": "/admin/supplychain/quotations",
"Url": "/admin/list/App.SupplyChain.Quotation",
"Icon": "FcSurvey",
"RequiredPermissionName": "App.SupplyChain.Quotation",
"IsDisabled": false

View file

@ -6045,89 +6045,6 @@
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationStatus.Import",
"ParentName": "App.SupplyChain.QuotationStatus",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationStatus.Note",
"ParentName": "App.SupplyChain.QuotationStatus",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation",
"ParentName": null,
"DisplayName": "App.SupplyChain.Quotation",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Create",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Update",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Delete",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Export",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Import",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Quotation.Note",
"ParentName": "App.SupplyChain.Quotation",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Material",
@ -6506,6 +6423,71 @@
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem",
"ParentName": null,
"DisplayName": "App.SupplyChain.QuotationItem",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Create",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Create",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Update",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Update",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Delete",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Delete",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Export",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Export",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Import",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Import",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.QuotationItem.Note",
"ParentName": "App.SupplyChain.QuotationItem",
"DisplayName": "Note",
"IsEnabled": true,
"MultiTenancySide": 3,
"MenuGroup": "Erp"
},
{
"GroupName": "App.SupplyChain",
"Name": "App.SupplyChain.Approval",

View file

@ -54,7 +54,7 @@ public static class SeederDefaults
public static readonly string DefaultGroupPanelJson = JsonSerializer.Serialize(new { Visible = true });
public static readonly string DefaultColumnOptionJson = JsonSerializer.Serialize(new
{
ColumnFixingEnabled = false,
ColumnFixingEnabled = true,
ColumnAutoWidth = true,
ColumnChooserEnabled = true,
AllowColumnResizing = true,

View file

@ -78,6 +78,6 @@ public class Employee : FullAuditedEntity<Guid>, IMultiTenant
public ICollection<BlogPost> BlogPosts { get; set; }
public ICollection<Opportunity> Opportunities { get; set; }
public ICollection<Warehouse> Warehouses { get; set; }
public ICollection<Quotation> Quotations { get; set; }
}

View file

@ -43,9 +43,10 @@ public class Quotation : FullAuditedEntity<Guid>, IMultiTenant
public string Notes { get; set; } //Notlar
public string SubmittedBy { get; set; } //Teklif Veren
public DateTime SubmittedAt { get; set; } //Teklif Tarihi
public DateTime? SubmittedAt { get; set; } //Teklif Tarihi
public string EvaluatedBy { get; set; } //Değerlendiren
public Guid? EmployeeId { get; set; } //Değerlendiren
public Employee Employee { get; set; }
public DateTime? EvaluatedAt { get; set; } //Değerlendirme Tarihi
public ICollection<QuotationItem> Items { get; set; }

View file

@ -15,8 +15,7 @@ public class QuotationItem : FullAuditedEntity<Guid>, IMultiTenant
public Material Material { get; set; }
public decimal Quantity { get; set; }
public Guid UomId { get; set; }
public Uom Uom { get; set; }
public string Uom { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalPrice { get; set; }

View file

@ -3457,33 +3457,25 @@ public class PlatformDbContext :
b.ConfigureByConvention();
b.Property(x => x.QuotationNumber).IsRequired().HasMaxLength(50);
b.Property(x => x.RequestId).IsRequired().HasMaxLength(50);
b.Property(x => x.RequestTitle).IsRequired().HasMaxLength(200);
b.Property(x => x.RequestTypeId).IsRequired();
b.Property(x => x.SupplierId).IsRequired();
b.Property(x => x.QuotationDate).IsRequired();
b.Property(x => x.ValidUntil).IsRequired();
b.Property(x => x.StatusId).IsRequired();
b.Property(x => x.Notes).HasMaxLength(1000);
b.Property(x => x.TotalAmount).HasPrecision(18, 2).IsRequired();
b.Property(x => x.Currency).IsRequired().HasMaxLength(10);
b.Property(x => x.PaymentTermId).IsRequired();
b.Property(x => x.DeliveryTermId).IsRequired();
b.Property(x => x.DeliveryTime).HasDefaultValue(0);
b.Property(x => x.SubmittedBy).HasMaxLength(100);
b.Property(x => x.SubmittedAt).IsRequired(false);
b.Property(x => x.EvaluationScore).HasDefaultValue(0);
b.Property(x => x.EvaluationComments).HasMaxLength(1000);
b.Property(x => x.EvaluationNotes).HasMaxLength(1000);
b.Property(x => x.SubmittedBy).IsRequired().HasMaxLength(100);
b.Property(x => x.SubmittedAt).IsRequired();
b.Property(x => x.EvaluatedBy).HasMaxLength(100);
b.Property(x => x.EvaluatedAt);
b.HasOne(x => x.Status)
.WithMany(x => x.Quotations)
@ -3499,6 +3491,11 @@ public class PlatformDbContext :
.WithMany(x => x.Quotations)
.HasForeignKey(x => x.PaymentTermId)
.OnDelete(DeleteBehavior.Restrict);
b.HasOne(x => x.Employee)
.WithMany(x => x.Quotations)
.HasForeignKey(x => x.EmployeeId)
.OnDelete(DeleteBehavior.Restrict);
});
builder.Entity<QuotationItem>(b =>
@ -3508,14 +3505,12 @@ public class PlatformDbContext :
b.Property(x => x.QuotationId).IsRequired();
b.Property(x => x.MaterialId).IsRequired();
b.Property(x => x.Description).HasMaxLength(500);
b.Property(x => x.Quantity).HasPrecision(18, 2).IsRequired();
b.Property(x => x.UomId).IsRequired();
b.Property(x => x.Uom).IsRequired().HasMaxLength(128);
b.Property(x => x.UnitPrice).HasPrecision(18, 2).IsRequired();
b.Property(x => x.TotalPrice).HasPrecision(18, 2).IsRequired();
b.Property(x => x.LeadTime).HasDefaultValue(0);
b.Property(x => x.Description).HasMaxLength(500);
b.HasOne(x => x.Quotation)
.WithMany(x => x.Items)

View file

@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Erp.Platform.Migrations
{
[DbContext(typeof(PlatformDbContext))]
[Migration("20251201070744_Initial")]
[Migration("20251201104936_Initial")]
partial class Initial
{
/// <inheritdoc />
@ -10941,13 +10941,12 @@ namespace Erp.Platform.Migrations
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid?>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("EvaluatedAt")
.HasColumnType("datetime2");
b.Property<string>("EvaluatedBy")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<string>("EvaluationComments")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
@ -10994,9 +10993,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("nvarchar(50)");
b.Property<string>("RequestId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestTitle")
.IsRequired()
@ -11009,11 +11006,10 @@ namespace Erp.Platform.Migrations
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("SubmittedAt")
b.Property<DateTime?>("SubmittedAt")
.HasColumnType("datetime2");
b.Property<string>("SubmittedBy")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
@ -11035,6 +11031,8 @@ namespace Erp.Platform.Migrations
b.HasIndex("DeliveryTermId");
b.HasIndex("EmployeeId");
b.HasIndex("PaymentMethodId");
b.HasIndex("PaymentTermId");
@ -11114,8 +11112,10 @@ namespace Erp.Platform.Migrations
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property<Guid>("UomId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Uom")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.HasKey("Id");
@ -11123,8 +11123,6 @@ namespace Erp.Platform.Migrations
b.HasIndex("QuotationId");
b.HasIndex("UomId");
b.ToTable("Scp_T_QuotationItem", (string)null);
});
@ -18340,6 +18338,11 @@ namespace Erp.Platform.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Employee", "Employee")
.WithMany("Quotations")
.HasForeignKey("EmployeeId")
.OnDelete(DeleteBehavior.Restrict);
b.HasOne("Erp.Platform.Entities.PaymentMethod", null)
.WithMany("Quotations")
.HasForeignKey("PaymentMethodId");
@ -18370,6 +18373,8 @@ namespace Erp.Platform.Migrations
b.Navigation("DeliveryTerm");
b.Navigation("Employee");
b.Navigation("PaymentTerm");
b.Navigation("RequestType");
@ -18393,17 +18398,9 @@ namespace Erp.Platform.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Uom", "Uom")
.WithMany()
.HasForeignKey("UomId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Material");
b.Navigation("Quotation");
b.Navigation("Uom");
});
modelBuilder.Entity("Erp.Platform.Entities.RegistrationMethod", b =>
@ -19124,6 +19121,8 @@ namespace Erp.Platform.Migrations
b.Navigation("Partners");
b.Navigation("Quotations");
b.Navigation("Reservations");
b.Navigation("SurveyResponses");

View file

@ -5082,127 +5082,6 @@ namespace Erp.Platform.Migrations
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Scp_T_Quotation",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
QuotationNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
RequestId = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
RequestTitle = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
RequestTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
SupplierId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
QuotationDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ValidUntil = table.Column<DateTime>(type: "datetime2", nullable: false),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TotalAmount = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
Currency = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
PaymentTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
DeliveryTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
DeliveryTime = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
EvaluationScore = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
EvaluationComments = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
EvaluationNotes = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
Notes = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
SubmittedBy = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
SubmittedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
EvaluatedBy = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
EvaluatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
PaymentMethodId = 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_Scp_T_Quotation", x => x.Id);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Adm_T_Partner_SupplierId",
column: x => x.SupplierId,
principalTable: "Adm_T_Partner",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Adm_T_PaymentMethod_PaymentMethodId",
column: x => x.PaymentMethodId,
principalTable: "Adm_T_PaymentMethod",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_DeliveryTerm_DeliveryTermId",
column: x => x.DeliveryTermId,
principalTable: "Scp_T_DeliveryTerm",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_PaymentTerm_PaymentTermId",
column: x => x.PaymentTermId,
principalTable: "Scp_T_PaymentTerm",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_QuotationStatus_StatusId",
column: x => x.StatusId,
principalTable: "Scp_T_QuotationStatus",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_RequestType_RequestTypeId",
column: x => x.RequestTypeId,
principalTable: "Scp_T_RequestType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Scp_T_QuotationItem",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
QuotationId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MaterialId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Quantity = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
UomId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
TotalPrice = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
LeadTime = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, 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_Scp_T_QuotationItem", x => x.Id);
table.ForeignKey(
name: "FK_Scp_T_QuotationItem_Adm_T_Uom_UomId",
column: x => x.UomId,
principalTable: "Adm_T_Uom",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Scp_T_QuotationItem_Scp_T_Material_MaterialId",
column: x => x.MaterialId,
principalTable: "Scp_T_Material",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Scp_T_QuotationItem_Scp_T_Quotation_QuotationId",
column: x => x.QuotationId,
principalTable: "Scp_T_Quotation",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Crm_T_Activity",
columns: table => new
@ -6201,6 +6080,88 @@ namespace Erp.Platform.Migrations
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Scp_T_Quotation",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
QuotationNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
RequestId = table.Column<string>(type: "nvarchar(max)", nullable: true),
RequestTitle = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
RequestTypeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
SupplierId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
QuotationDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ValidUntil = table.Column<DateTime>(type: "datetime2", nullable: false),
StatusId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TotalAmount = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
Currency = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
PaymentTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
DeliveryTermId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
DeliveryTime = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
EvaluationScore = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
EvaluationComments = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
EvaluationNotes = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
Notes = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true),
SubmittedBy = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
SubmittedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
EmployeeId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
EvaluatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
PaymentMethodId = 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_Scp_T_Quotation", x => x.Id);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Adm_T_Partner_SupplierId",
column: x => x.SupplierId,
principalTable: "Adm_T_Partner",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Adm_T_PaymentMethod_PaymentMethodId",
column: x => x.PaymentMethodId,
principalTable: "Adm_T_PaymentMethod",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Scp_T_Quotation_Hr_T_Employee_EmployeeId",
column: x => x.EmployeeId,
principalTable: "Hr_T_Employee",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_DeliveryTerm_DeliveryTermId",
column: x => x.DeliveryTermId,
principalTable: "Scp_T_DeliveryTerm",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_PaymentTerm_PaymentTermId",
column: x => x.PaymentTermId,
principalTable: "Scp_T_PaymentTerm",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_QuotationStatus_StatusId",
column: x => x.StatusId,
principalTable: "Scp_T_QuotationStatus",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Scp_T_Quotation_Scp_T_RequestType_RequestTypeId",
column: x => x.RequestTypeId,
principalTable: "Scp_T_RequestType",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Scp_T_Request",
columns: table => new
@ -6727,6 +6688,45 @@ namespace Erp.Platform.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Scp_T_QuotationItem",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
QuotationId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MaterialId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Quantity = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
Uom = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: false),
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
TotalPrice = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: false),
LeadTime = table.Column<int>(type: "int", nullable: true, defaultValue: 0),
Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, 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_Scp_T_QuotationItem", x => x.Id);
table.ForeignKey(
name: "FK_Scp_T_QuotationItem_Scp_T_Material_MaterialId",
column: x => x.MaterialId,
principalTable: "Scp_T_Material",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Scp_T_QuotationItem_Scp_T_Quotation_QuotationId",
column: x => x.QuotationId,
principalTable: "Scp_T_Quotation",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Scp_T_RequestItem",
columns: table => new
@ -8464,6 +8464,11 @@ namespace Erp.Platform.Migrations
table: "Scp_T_Quotation",
column: "DeliveryTermId");
migrationBuilder.CreateIndex(
name: "IX_Scp_T_Quotation_EmployeeId",
table: "Scp_T_Quotation",
column: "EmployeeId");
migrationBuilder.CreateIndex(
name: "IX_Scp_T_Quotation_PaymentMethodId",
table: "Scp_T_Quotation",
@ -8499,11 +8504,6 @@ namespace Erp.Platform.Migrations
table: "Scp_T_QuotationItem",
column: "QuotationId");
migrationBuilder.CreateIndex(
name: "IX_Scp_T_QuotationItem_UomId",
table: "Scp_T_QuotationItem",
column: "UomId");
migrationBuilder.CreateIndex(
name: "IX_Scp_T_Request_DepartmentId",
table: "Scp_T_Request",

View file

@ -10938,13 +10938,12 @@ namespace Erp.Platform.Migrations
.HasColumnType("int")
.HasDefaultValue(0);
b.Property<Guid?>("EmployeeId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime?>("EvaluatedAt")
.HasColumnType("datetime2");
b.Property<string>("EvaluatedBy")
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
b.Property<string>("EvaluationComments")
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
@ -10991,9 +10990,7 @@ namespace Erp.Platform.Migrations
.HasColumnType("nvarchar(50)");
b.Property<string>("RequestId")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
.HasColumnType("nvarchar(max)");
b.Property<string>("RequestTitle")
.IsRequired()
@ -11006,11 +11003,10 @@ namespace Erp.Platform.Migrations
b.Property<Guid>("StatusId")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("SubmittedAt")
b.Property<DateTime?>("SubmittedAt")
.HasColumnType("datetime2");
b.Property<string>("SubmittedBy")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("nvarchar(100)");
@ -11032,6 +11028,8 @@ namespace Erp.Platform.Migrations
b.HasIndex("DeliveryTermId");
b.HasIndex("EmployeeId");
b.HasIndex("PaymentMethodId");
b.HasIndex("PaymentTermId");
@ -11111,8 +11109,10 @@ namespace Erp.Platform.Migrations
.HasPrecision(18, 2)
.HasColumnType("decimal(18,2)");
b.Property<Guid>("UomId")
.HasColumnType("uniqueidentifier");
b.Property<string>("Uom")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.HasKey("Id");
@ -11120,8 +11120,6 @@ namespace Erp.Platform.Migrations
b.HasIndex("QuotationId");
b.HasIndex("UomId");
b.ToTable("Scp_T_QuotationItem", (string)null);
});
@ -18337,6 +18335,11 @@ namespace Erp.Platform.Migrations
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Employee", "Employee")
.WithMany("Quotations")
.HasForeignKey("EmployeeId")
.OnDelete(DeleteBehavior.Restrict);
b.HasOne("Erp.Platform.Entities.PaymentMethod", null)
.WithMany("Quotations")
.HasForeignKey("PaymentMethodId");
@ -18367,6 +18370,8 @@ namespace Erp.Platform.Migrations
b.Navigation("DeliveryTerm");
b.Navigation("Employee");
b.Navigation("PaymentTerm");
b.Navigation("RequestType");
@ -18390,17 +18395,9 @@ namespace Erp.Platform.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Erp.Platform.Entities.Uom", "Uom")
.WithMany()
.HasForeignKey("UomId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Material");
b.Navigation("Quotation");
b.Navigation("Uom");
});
modelBuilder.Entity("Erp.Platform.Entities.RegistrationMethod", b =>
@ -19121,6 +19118,8 @@ namespace Erp.Platform.Migrations
b.Navigation("Partners");
b.Navigation("Quotations");
b.Navigation("Reservations");
b.Navigation("SurveyResponses");

View file

@ -97,41 +97,4 @@ div.dialog-after-open > div.dialog-content.maximized {
visibility: hidden !important;
position: absolute !important;
left: -9999px !important;
}
/* Grid accessibility status mesajını gizle */
/* Grid Focused Row - Light Mode */
.dx-datagrid .dx-row-focused.dx-data-row > td:not(.dx-focused),
.dx-datagrid .dx-row-focused.dx-data-row > tr > td:not(.dx-focused) {
background-color: rgba(59, 130, 246, 0.15) !important;
color: inherit !important;
}
.dx-datagrid .dx-row-focused.dx-data-row .dx-link {
background-color: rgba(255, 255, 255, 0.5) !important;
border-radius: 4px !important;
color: #1e40af !important;
}
.dx-datagrid .dx-row-focused.dx-data-row .dx-link:hover {
background-color: rgba(255, 255, 255, 0.8) !important;
color: #1e3a8a !important;
}
/* Grid Focused Row - Dark Mode */
.dark .dx-datagrid .dx-row-focused.dx-data-row > td:not(.dx-focused),
.dark .dx-datagrid .dx-row-focused.dx-data-row > tr > td:not(.dx-focused) {
background-color: rgba(59, 130, 246, 0.25) !important;
color: #e5e7eb !important;
}
.dark .dx-datagrid .dx-row-focused.dx-data-row .dx-link {
background-color: rgba(0, 0, 0, 0.3) !important;
color: #93c5fd !important;
}
.dark .dx-datagrid .dx-row-focused.dx-data-row .dx-link:hover {
background-color: rgba(0, 0, 0, 0.5) !important;
color: #dbeafe !important;
}
/* Grid Focused Row */
}

View file

@ -41,357 +41,350 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
{({ touched, errors, values, isSubmitting }) => (
<Form>
<FormContainer size="sm">
<Card className="my-2">
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowAdding')}
invalid={
errors.editingOptionDto?.allowAdding && touched.editingOptionDto?.allowAdding
}
errorMessage={errors.editingOptionDto?.allowAdding}
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowAdding')}
invalid={
errors.editingOptionDto?.allowAdding && touched.editingOptionDto?.allowAdding
}
errorMessage={errors.editingOptionDto?.allowAdding}
>
<Field
name="editingOptionDto.allowAdding"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowUpdating')}
invalid={
errors.editingOptionDto?.allowUpdating && touched.editingOptionDto?.allowUpdating
}
errorMessage={errors.editingOptionDto?.allowUpdating}
>
<Field
name="editingOptionDto.allowUpdating"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowUpdating')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleting')}
invalid={
errors.editingOptionDto?.allowDeleting && touched.editingOptionDto?.allowDeleting
}
errorMessage={errors.editingOptionDto?.allowDeleting}
>
<Field
name="editingOptionDto.allowDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')}
invalid={
errors.editingOptionDto?.allowAllDeleting &&
touched.editingOptionDto?.allowAllDeleting
}
errorMessage={errors.editingOptionDto?.allowAllDeleting}
>
<Field
name="editingOptionDto.allowAllDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingConfirmDelete')}
invalid={
errors.editingOptionDto?.confirmDelete && touched.editingOptionDto?.confirmDelete
}
errorMessage={errors.editingOptionDto?.confirmDelete}
>
<Field
name="editingOptionDto.confirmDelete"
placeholder={translate('::ListForms.ListFormEdit.EditingConfirmDelete')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingUseIcons')}
invalid={errors.editingOptionDto?.useIcons && touched.editingOptionDto?.useIcons}
errorMessage={errors.editingOptionDto?.useIcons}
>
<Field
name="editingOptionDto.useIcons"
placeholder={translate('::ListForms.ListFormEdit.EditingUseIcons')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingSelectTextOnEditStart')}
invalid={
errors.editingOptionDto?.selectTextOnEditStart &&
touched.editingOptionDto?.selectTextOnEditStart
}
errorMessage={errors.editingOptionDto?.selectTextOnEditStart}
>
<Field
name="editingOptionDto.selectTextOnEditStart"
placeholder={translate('::ListForms.ListFormEdit.EditingSelectTextOnEditStart')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::SidePanel.Mode')}
invalid={errors.editingOptionDto?.mode && touched.editingOptionDto?.mode}
errorMessage={errors.editingOptionDto?.mode}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.mode"
placeholder={translate('::SidePanel.Mode')}
>
<Field
name="editingOptionDto.allowAdding"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowAdding')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowUpdating')}
invalid={
errors.editingOptionDto?.allowUpdating &&
touched.editingOptionDto?.allowUpdating
}
errorMessage={errors.editingOptionDto?.allowUpdating}
{({ field, form }: FieldProps<GridsEditMode>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionModeOptions}
value={editingOptionModeOptions?.filter(
(option) => option.value === values.editingOptionDto.mode,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingRefreshMode')}
invalid={
errors.editingOptionDto?.refreshMode && touched.editingOptionDto?.refreshMode
}
errorMessage={errors.editingOptionDto?.refreshMode}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.refreshMode"
placeholder={translate('::ListForms.ListFormEdit.EditingRefreshMode')}
>
<Field
name="editingOptionDto.allowUpdating"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowUpdating')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleting')}
invalid={
errors.editingOptionDto?.allowDeleting &&
touched.editingOptionDto?.allowDeleting
}
errorMessage={errors.editingOptionDto?.allowDeleting}
{({ field, form }: FieldProps<GridsEditRefreshMode>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionRefreshModeOptions}
value={editingOptionRefreshModeOptions?.filter(
(option) => option.value === values.editingOptionDto.refreshMode,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingNewRowPosition')}
invalid={
errors.editingOptionDto?.newRowPosition &&
touched.editingOptionDto?.newRowPosition
}
errorMessage={errors.editingOptionDto?.newRowPosition}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.newRowPosition"
placeholder={translate('::ListForms.ListFormEdit.EditingNewRowPosition')}
>
<Field
name="editingOptionDto.allowDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleting')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')}
invalid={
errors.editingOptionDto?.allowAllDeleting &&
touched.editingOptionDto?.allowAllDeleting
}
errorMessage={errors.editingOptionDto?.allowAllDeleting}
{({ field, form }: FieldProps<NewRowPosition>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionNewRowPositionOptions}
value={editingOptionNewRowPositionOptions?.filter(
(option) => option.value === values.editingOptionDto.newRowPosition,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingStartEditAction')}
invalid={
errors.editingOptionDto?.startEditAction &&
touched.editingOptionDto?.startEditAction
}
errorMessage={errors.editingOptionDto?.startEditAction}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.startEditAction"
placeholder={translate('::ListForms.ListFormEdit.EditingStartEditAction')}
>
<Field
name="editingOptionDto.allowAllDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingConfirmDelete')}
invalid={
errors.editingOptionDto?.confirmDelete &&
touched.editingOptionDto?.confirmDelete
}
errorMessage={errors.editingOptionDto?.confirmDelete}
>
<Field
name="editingOptionDto.confirmDelete"
placeholder={translate('::ListForms.ListFormEdit.EditingConfirmDelete')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingUseIcons')}
invalid={errors.editingOptionDto?.useIcons && touched.editingOptionDto?.useIcons}
errorMessage={errors.editingOptionDto?.useIcons}
>
<Field
name="editingOptionDto.useIcons"
placeholder={translate('::ListForms.ListFormEdit.EditingUseIcons')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingSelectTextOnEditStart')}
invalid={
errors.editingOptionDto?.selectTextOnEditStart &&
touched.editingOptionDto?.selectTextOnEditStart
}
errorMessage={errors.editingOptionDto?.selectTextOnEditStart}
>
<Field
name="editingOptionDto.selectTextOnEditStart"
placeholder={translate('::ListForms.ListFormEdit.EditingSelectTextOnEditStart')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::SidePanel.Mode')}
invalid={errors.editingOptionDto?.mode && touched.editingOptionDto?.mode}
errorMessage={errors.editingOptionDto?.mode}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.mode"
placeholder={translate('::SidePanel.Mode')}
{({ field, form }: FieldProps<StartEditAction>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionStartEditActionOptions}
value={editingOptionStartEditActionOptions?.filter(
(option) => option.value === values.editingOptionDto.startEditAction,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingEditColumnName')}
invalid={
errors.editingOptionDto?.editColumnName &&
touched.editingOptionDto?.editColumnName
}
errorMessage={errors.editingOptionDto?.editColumnName}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.editColumnName"
placeholder={translate('::ListForms.ListFormEdit.EditingEditColumnName')}
component={Input}
/>
</FormItem>
{values.editingOptionDto.mode === 'popup' && (
<>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingShowTitle')}
invalid={
errors.editingOptionDto?.popup?.showTitle &&
touched.editingOptionDto?.popup?.showTitle
}
errorMessage={errors.editingOptionDto?.popup?.showTitle}
>
{({ field, form }: FieldProps<GridsEditMode>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionModeOptions}
value={editingOptionModeOptions?.filter(
(option) => option.value === values.editingOptionDto.mode,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingRefreshMode')}
invalid={
errors.editingOptionDto?.refreshMode && touched.editingOptionDto?.refreshMode
}
errorMessage={errors.editingOptionDto?.refreshMode}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.refreshMode"
placeholder={translate('::ListForms.ListFormEdit.EditingRefreshMode')}
<Field
name="editingOptionDto.popup.showTitle"
placeholder={translate('::ListForms.ListFormEdit.EditingShowTitle')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsTitle')}
invalid={
errors.editingOptionDto?.popup?.title &&
touched.editingOptionDto?.popup?.title
}
errorMessage={errors.editingOptionDto?.popup?.title}
>
{({ field, form }: FieldProps<GridsEditRefreshMode>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionRefreshModeOptions}
value={editingOptionRefreshModeOptions?.filter(
(option) => option.value === values.editingOptionDto.refreshMode,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingNewRowPosition')}
invalid={
errors.editingOptionDto?.newRowPosition &&
touched.editingOptionDto?.newRowPosition
}
errorMessage={errors.editingOptionDto?.newRowPosition}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.newRowPosition"
placeholder={translate('::ListForms.ListFormEdit.EditingNewRowPosition')}
<Field
type="text"
autoComplete="off"
name="editingOptionDto.popup.title"
placeholder={translate('::ListForms.ListFormEdit.DetailsTitle')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsWidth')}
invalid={
errors.editingOptionDto?.popup?.width &&
touched.editingOptionDto?.popup?.width
}
errorMessage={errors.editingOptionDto?.popup?.width}
>
{({ field, form }: FieldProps<NewRowPosition>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionNewRowPositionOptions}
value={editingOptionNewRowPositionOptions?.filter(
(option) => option.value === values.editingOptionDto.newRowPosition,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingStartEditAction')}
invalid={
errors.editingOptionDto?.startEditAction &&
touched.editingOptionDto?.startEditAction
}
errorMessage={errors.editingOptionDto?.startEditAction}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.startEditAction"
placeholder={translate('::ListForms.ListFormEdit.EditingStartEditAction')}
<Field
className="w-20"
type="number"
autoComplete="off"
name="editingOptionDto.popup.width"
placeholder={translate('::ListForms.ListFormEdit.DetailsWidth')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsHeight')}
invalid={
errors.editingOptionDto?.popup?.height &&
touched.editingOptionDto?.popup?.height
}
errorMessage={errors.editingOptionDto?.popup?.height}
>
{({ field, form }: FieldProps<StartEditAction>) => (
<Select
field={field}
form={form}
isClearable={true}
options={editingOptionStartEditActionOptions}
value={editingOptionStartEditActionOptions?.filter(
(option) => option.value === values.editingOptionDto.startEditAction,
)}
onChange={(option) => form.setFieldValue(field.name, option?.value)}
/>
)}
</Field>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingEditColumnName')}
invalid={
errors.editingOptionDto?.editColumnName &&
touched.editingOptionDto?.editColumnName
}
errorMessage={errors.editingOptionDto?.editColumnName}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.editColumnName"
placeholder={translate('::ListForms.ListFormEdit.EditingEditColumnName')}
component={Input}
/>
</FormItem>
{values.editingOptionDto.mode === 'popup' && (
<>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingShowTitle')}
invalid={
errors.editingOptionDto?.popup?.showTitle &&
touched.editingOptionDto?.popup?.showTitle
}
errorMessage={errors.editingOptionDto?.popup?.showTitle}
>
<Field
name="editingOptionDto.popup.showTitle"
placeholder={translate('::ListForms.ListFormEdit.EditingShowTitle')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsTitle')}
invalid={
errors.editingOptionDto?.popup?.title &&
touched.editingOptionDto?.popup?.title
}
errorMessage={errors.editingOptionDto?.popup?.title}
>
<Field
type="text"
autoComplete="off"
name="editingOptionDto.popup.title"
placeholder={translate('::ListForms.ListFormEdit.DetailsTitle')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsWidth')}
invalid={
errors.editingOptionDto?.popup?.width &&
touched.editingOptionDto?.popup?.width
}
errorMessage={errors.editingOptionDto?.popup?.width}
>
<Field
className="w-20"
type="number"
autoComplete="off"
name="editingOptionDto.popup.width"
placeholder={translate('::ListForms.ListFormEdit.DetailsWidth')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.DetailsHeight')}
invalid={
errors.editingOptionDto?.popup?.height &&
touched.editingOptionDto?.popup?.height
}
errorMessage={errors.editingOptionDto?.popup?.height}
>
<Field
className="w-20"
type="number"
autoComplete="off"
name="editingOptionDto.popup.height"
placeholder={translate('::ListForms.ListFormEdit.DetailsHeight')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingFullScreen')}
invalid={
errors.editingOptionDto?.popup?.fullScreen &&
touched.editingOptionDto?.popup?.fullScreen
}
errorMessage={errors.editingOptionDto?.popup?.fullScreen}
>
<Field
name="editingOptionDto.popup.fullScreen"
placeholder={translate('::ListForms.ListFormEdit.EditingFullScreen')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ResizeEnabled')}
invalid={
errors.editingOptionDto?.popup?.resizeEnabled &&
touched.editingOptionDto?.popup?.resizeEnabled
}
errorMessage={errors.editingOptionDto?.popup?.resizeEnabled}
>
<Field
name="editingOptionDto.popup.resizeEnabled"
placeholder={translate('::ListForms.ListFormEdit.ResizeEnabled')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingHideOnOutsideClick')}
invalid={
errors.editingOptionDto?.popup?.hideOnOutsideClick &&
touched.editingOptionDto?.popup?.hideOnOutsideClick
}
errorMessage={errors.editingOptionDto?.popup?.hideOnOutsideClick}
>
<Field
name="editingOptionDto.popup.hideOnOutsideClick"
placeholder={translate(
'::ListForms.ListFormEdit.EditingHideOnOutsideClick',
)}
component={Checkbox}
/>
</FormItem>
</>
)}
<FormItem
label={translate('::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate')}
invalid={
errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate &&
touched.editingOptionDto?.sendOnlyChangedFormValuesUpdate
}
errorMessage={errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate}
>
<Field
name="editingOptionDto.sendOnlyChangedFormValuesUpdate"
placeholder={translate(
'::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate',
)}
component={Checkbox}
/>
</FormItem>
<Button block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
</Card>
<Field
className="w-20"
type="number"
autoComplete="off"
name="editingOptionDto.popup.height"
placeholder={translate('::ListForms.ListFormEdit.DetailsHeight')}
component={Input}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingFullScreen')}
invalid={
errors.editingOptionDto?.popup?.fullScreen &&
touched.editingOptionDto?.popup?.fullScreen
}
errorMessage={errors.editingOptionDto?.popup?.fullScreen}
>
<Field
name="editingOptionDto.popup.fullScreen"
placeholder={translate('::ListForms.ListFormEdit.EditingFullScreen')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.ResizeEnabled')}
invalid={
errors.editingOptionDto?.popup?.resizeEnabled &&
touched.editingOptionDto?.popup?.resizeEnabled
}
errorMessage={errors.editingOptionDto?.popup?.resizeEnabled}
>
<Field
name="editingOptionDto.popup.resizeEnabled"
placeholder={translate('::ListForms.ListFormEdit.ResizeEnabled')}
component={Checkbox}
/>
</FormItem>
<FormItem
label={translate('::ListForms.ListFormEdit.EditingHideOnOutsideClick')}
invalid={
errors.editingOptionDto?.popup?.hideOnOutsideClick &&
touched.editingOptionDto?.popup?.hideOnOutsideClick
}
errorMessage={errors.editingOptionDto?.popup?.hideOnOutsideClick}
>
<Field
name="editingOptionDto.popup.hideOnOutsideClick"
placeholder={translate('::ListForms.ListFormEdit.EditingHideOnOutsideClick')}
component={Checkbox}
/>
</FormItem>
</>
)}
<FormItem
label={translate('::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate')}
invalid={
errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate &&
touched.editingOptionDto?.sendOnlyChangedFormValuesUpdate
}
errorMessage={errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate}
>
<Field
name="editingOptionDto.sendOnlyChangedFormValuesUpdate"
placeholder={translate(
'::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate',
)}
component={Checkbox}
/>
</FormItem>
<Button block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
</FormContainer>
</Form>
)}

View file

@ -385,7 +385,6 @@ const useListFormColumns = ({
width: calculatedWidth,
minWidth: calculatedWidth,
buttons,
cssClass: '[&_.dx-link]:mx-1',
allowResizing: true,
}